Bonjour David Vincent (lol), Arvin, Tatiak, le Forum
Je vois que vous vous êtes bien amusé hier soir tard...
Pour ta question hidden dans le module du UserForm1, Robert , non je ne vois pas l'application d'une variable "Static" dans ce cas de figure. Tu t'es pas mal débrouillé avec ton Tag Boolean et ton Label "Suite", c'est un peu "anti-conformiste", mais celà fonctionne, donc c'est le principal.
Non dans ce genre de cas, soit on fait simple de chez simple, c'est à dire on fait :
For i = 1 To 11
If Controls("TextBox" & i) = "" Then
Alert = Alert & Controls("Label" & i) & vbCrLf
Exit For
le "i" aura le numéro du premier Control vide..... Mais évidemment l' "Alert" ne contiendra que le nom de ce Control et pas la liste de tous les vides...
Pour faire la même chose que ce que tu as trouvé, voici une variante en passant par la Planète "Array" de la 4em ReDimmension (lol)
Private Sub CheckOut()
Dim i As Byte, x As Byte
Dim Alert As String
Dim WhosFirst() As Byte
Dim a As Byte
'si @Thierry repasse par ici qu'il ait la gentillesse de m'expliquer si j'avais pu
'faire ça avec une variable Statique car je n'y suis pas arrivé...
For i = 1 To 11
If Controls("TextBox" & i) = "" Then
Alert = Alert & Controls("Label" & i) & vbCrLf
ReDim Preserve WhosFirst(x)
WhosFirst(x) = i
x = x + 1
End If
Next i
If Alert = "" Then
AddLine
Else
a = MsgBox("Toutes les TextBoxs ne sont pas renseignées" & vbCrLf & Alert _
& vbCrLf & "voulez-vous quand-même enregistrer la fiche ?", 68, "Attention !")
If a = 6 Then AddLine
If a = 7 Then Controls("Textbox" & WhosFirst(0)).SetFocus 'Le premier Textbox vide prend le focus
End If
End Sub
Bonne semaine à tous et toutes
@+Thierry
PS Par convention, on essaie toujours de déclarer toutes les variables locales en début de Sub....