Bonjour,
En fin de compte > je me suis penché sur ton fichier ...
Pour que tu puisses reproduire dans un autre fichier > en voici les étapes ...
- copier "DateClasse" qui est dans le "modules de classe" ...
- tout au haut du "Module 1" > ajoute > Public TextBoxDate() As New DateClasse
....
- tout au haut de ton formulaire > ajoute > Option Base 1
...
- au début du "UserForm_initialise > ajoute ceci ...
Private Sub UserForm_Initialize()
' ajout pour module de classe
Dim Nb As Integer
Dim Ctrl As Control
Nb = 1
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
If Ctrl.Tag = "UneDate" Then
ReDim Preserve TextBoxDate(Nb)
Set TextBoxDate(Nb).DateClasse = Ctrl
Nb = Nb + 1
End If
End If
Next Ctrl
' suite
' ...
'...
-puis > change la macro pour celle-ci ...
Private Sub b_valid_Click() 'bouton modif
Dim tmp4()
Dim Rng As Range
Dim Cl As Range
Dim Nb As Integer
Dim Ctrl As Control
Dim IsN
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
If Ctrl.Tag = "UneDate" And Ctrl <> "" Then
On Error Resume Next
Ctrl = CDate(Ctrl)
On Error GoTo 0
End If
End If
Next Ctrl
Application.ScreenUpdating = False
If Me.Enreg <> "" And Me.TextBox1 <> "" Then
noEnreg = Me.Enreg
ReDim tmp4(1, 1 To Ncol) ' < modif ici
For k = 1 To Ncol 'k = decalage de colone ' < modif ici
tmp4(1, k) = Me("TextBox" & k)
Next k
' colle le array sur la plage dans la feuille
f.Range(f.Cells(noEnreg, 1), f.Cells(noEnreg, Ncol)) = tmp4 ' < modif ici
UserForm_Initialize
End If
End Sub
Et enfin > l'étape la plus longue > dans le userform > trouve tous les textbox qui doivent recevoir des dates > à tour de rôle > tu en sélectionnes un et dans ses propriétés > à "Tag" > ajoutes la mention : UneDate > dans le fichier joint > je n'ai mis la mention qu'à 3 ou 4 textbox > le reste est à faire ...
Enregistre de temps à autre pour ne pas être obligé de tout reprendre si tu fais une mauvaise manipulation ...
Tu pourras te familiariser avec les étapes en suivant dans le fichier joint ...
Bon amusement ...
ric