bonjour,
une methode pour ce boucle et en même temps la macro n'ecrit que une fois vers la feuille, parce que les variables sont memorisés dans un array
Private Sub Cmd_Valider_Click()
Dim derlinge As Integer, ln, Arr
With Sheets("données")
For ln = 2 To .Range("B" & Rows.Count).End(xlUp).Row
If .Range("B" & ln) = TextBox1 And .Range("B" & ln) = TextBox2 Then
MsgBox "La fiche de " & TextBox2 & " " & TextBox1 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
Exit Sub
End If
Next ln
If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
derligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
ReDim Arr(1 To 13) 'creer un array de 13 éléments
For i = 1 To 13
Select Case i
Case 3, 8, 9, 12: Arr(i) = CDate(Controls("TextBox" & i).Value) 'des dates
Case Else: Arr(i) = Controls("TextBox" & i).Value
End Select
Next i
.Cells(derligne, 1).Resize(, UBound(Arr)).Value = Arr 'ecrire en une fois >>> feuille
End If
End With
End Sub
j'ai été agréablement surpris que cela fonctionnait avec cdate ...