Comment éviter la saisie en dehors de la liste de données dans Excel VBA en moins de 3 min.
EXCEL_2007_VBA_USERFORM_DYNAMIQUE_14_DEBUG
Version Dailymotion :
EXCEL_2007_VBA_USERFORM_DYNAMIQUE_14_DEBUG
L’objectif est de débuguer les différents problèmes liés à la saisie hors liste de données. d’éviter la saisie hors liste de donnée par un renvoi à la ligne non vide, lorsque l’on appui sur le bouton formulaire.
Double-clic sur l’userform crée dans l’Userform :
Private Sub UserForm_Initialize()
Dim tbox_uf As MSForms.Control
Dim etiquette_uf As MSForms.Control
Dim Champs_Cel As Range
Dim i_nbr_control As Integer
i_nbr_control = 1
ReDim dynamicTextbox(0)
If ActiveCell.Row = 1 Then
Range(« A2 »).Select
ElseIf ActiveCell.Row > Range(« A » & ActiveSheet.Rows.Count).End(xlUp).Row Then
Range(« A » & ActiveSheet.Rows.Count).End(xlUp).Select
End If
Rows(ActiveCell.Row).Select
For Each Champs_Cel In FEUIL2.UsedRange.Resize(1)
Set etiquette_uf = Me.Controls.Add(« Forms.label.1 », « etiquette_ » & Champs_Cel.Value, True)
With etiquette_uf
.Caption = Champs_Cel.Value
.Top = i_nbr_control * 20 + 21
.Left = 8
.Width = 80
.Height = 12
End With
Set tbox_uf = Me.Controls.Add(« Forms.textbox.1 », « Textbox_ » & Champs_Cel.Address, True)
With tbox_uf
.Top = i_nbr_control * 20 + 21
.Left = etiquette_uf.Left + etiquette_uf.Width + 10
.Width = 120
.Value = Cells(ActiveCell.Row, Champs_Cel.Column).Value
End With
ReDim Preserve dynamicTextbox(UBound(dynamicTextbox) + 1)
Set dynamicTextbox(UBound(dynamicTextbox) – 1).tbox_uf = tbox_uf
i_nbr_control = i_nbr_control + 1
Next
End Sub
Ci-dessous le résultat :
Code source VBA :