bredeche
XLDnaute Occasionnel
bonjour
j'ai un problème dans mon code
merci de votre aide
ci joints en plus mon fichier
j'ai un problème dans mon code
merci de votre aide
ci joints en plus mon fichier
VB:
Private Sub CommandButton2_Click() 'Bouton VALIDER
Dim NewLig As Long
Dim c As Range
Dim CTRL As Control 'déclare la variable CTRL (ConTRôle)
Dim COL As String 'déclare la variable COL (COLonne)
Dim AD As String 'déclare la variable AD (ADresse)
Dim OD As Worksheet 'déclare la variable OD(Onglet Destination)
'il faut définir la propriété TAG tous les contrôles qui renvoient leur valeur dans les onglets : Colonne de l'onglet Recap / Adresse de la copie l'onglet Trame
'propriété TAG de TextBoxobjet : C/B3
'propriété TAG de ComboBox4 : Y/G6
'propriété TAG de TextBoxfiche : Z/A6
'propriété TAG de TextBoxdate : AA/B6
'propriété TAG de TextBoximputation : AB/C6
'etc.
With Sheets("Recap")
NewLig = Application.Max(10, .Range("A" & Rows.Count).End(xlUp).Row + 1)
.Range("A" & NewLig).Value = Application.WorksheetFunction.Max(Range("A:A")) + 1
For Each CTRL In Me.Controls 'boucle sur tous les contrôles CTRL de l'UserForm
If CTRL.Tag <> "" Then 'condition : si la propriété TAG du contrôle n'est pas vide
COL = Split(CTRL.Tag, "/")(0) 'définit la colonne COL (texte avant le slash (/)
.Cells(NewLig, COL).Value = CTRL.Value 'renvoie la valeur du contrôle dans la cellule ligne Newlig, colonne Col de l'onglet Recap
End If 'fin de la condition
Next CTRL 'prochaine contrôle de la boucle
End With
Application.ScreenUpdating = False
'On crée les onglets qui sont listés à partir de la cellule
'A2 de l'onglet nommé Liste
Set c = Worksheets("RECAP").Range("B10") 'cellule de départ
'on copie le modèle en dernier
Worksheets("TRAME").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
Set OD = ActiveSheet 'définit l'onglet OD
OD.Name = c.Value 'je renome
'Je remplit mon modèle comme je veux...
For Each CTRL In Me.Controls 'boucle sur tous les contrôles CTRL de l'UserForm
If CTRL.Tag <> "" Then 'condition : si la propriété TAG du contrôle n'est pas vide
AD = Split(CTRL.Tag, "/")(1) 'définit l'adresse AD (texte après le slash (/)
OD.Range(AD).Value = CTRL.Value 'renvoie la valeur du contrôle dans la cellule ayant AD comme adress de l'onglet OD
End If 'fin de la condition
Next CTRL 'prochaine contrôle de la boucle
Application.ScreenUpdating = True
Unload UserForm1
End Sub