Bug à cause de Textbox vide
Bonjour,
j'avais déjà demandé de l'aide sur le code sur lequel je suis en train de travailler (Cf. Incrément de date) et je requière une nouvelle fois votre aide.
J'ai créer un UserForm avec des TextBox à remplir. Lorsque celles-ci sont toutes pleines, le code fonctionne bien mais dès qu'une Textbox est vide, celui-ci ne fonctionne plus sachant que par la suite toutes les Textbox ne seront pas remplies obligatoirement. Pouvez-vous m'aider ?
Private Sub CommandButton1_Click() 'bouton "Valider"
i = 4 'Initialise la variable i
With Worksheets("Feuil1") 'Avec la Feuil1
Do While .Cells(i, 1) <> "" 'tant que la cellule visée n'est pas vide
i = i + 1 'incrément de i
Loop
.Cells(i, 1) = CDate(TextBox1.Value) 'si la cellule est vide elle prend la valeur de la textbox1
ActiveCell.Offset(0, 1) = CDec(TextBox2.Value) 'Début remplissage des champs
ActiveCell.Offset(0, 2) = CDec(TextBox3.Value)
ActiveCell.Offset(0, 3) = CDec(TextBox4.Value)
ActiveCell.Offset(0, 4) = CDec(TextBox9.Value)
ActiveCell.Offset(0, 5) = CDec(TextBox10.Value)
ActiveCell.Offset(0, 6) = CDec(TextBox5.Value)
ActiveCell.Offset(0, 7) = CDec(TextBox6.Value)
ActiveCell.Offset(0, 8) = CDec(TextBox7.Value)
ActiveCell.Offset(0, 9) = CDec(TextBox8.Value) 'Fin remplissage des champs
End With
End SubMerci de votre réponse et bonne journée !
bonjour
sans model de ton fichier dur
si les textbox sont dans l'ordre des colonne
Private Sub Creation()
Dim Nlig As Long
With Worksheets("Feuil1")
Nlig = .Range("A" & Rows.Count).End(xlUp).Row + 1
For C = 1 To 10
Select Case C
Case 1
If IsDate(Controls("TextBox" & C).Value) Then
.Cells(Nlig, C).Value = CDate(Controls("TextBox" & C).Value)
End If
Case Else
If IsNumeric(Controls("TextBox" & C).Value) Then
.Cells(Lig, C).Value = CDec(Controls("TextBox" & C).Value)
End If
End Select
Next
End With
End SubA+
Maurice
Merci pour ta réponse mais est-ce que tu peux me détailler la ligne de code que j'ai mis en dessous et aussi me dire ce que signifie les "Controls"
Et oui les TextBox suivent bien l'ordre des colonnes.
Nlig = .Range("A" & Rows.Count).End(xlUp).Row + 1EDIT : J'ai essayé ton code et il ne fonctionne pas ou du moins il doit y avoir une erreur par rapport au tableau qu'il doit remplir. Je joins un fichier exemple !