Code

bonjour mon problème est sur la création d'onglet la macro me produit 3 onglet et mes données ne s'enregistrent pas dans la fiche et mon second problème est quand je réalise la deuxième fiche

ci dessous mon code

merci de votre aide

je peux vous joindre mon fichier sur demande

cordialement

Private Sub CommandButton2_Click() 'Bouton VALIDER
Dim NewLig As Long
Dim c As Range

    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
        .Range("C" & NewLig).Value = TextBoxobjet
        .Range("Y" & NewLig).Value = ComboBox4
        .Range("Z" & NewLig).Value = TextBoxfiche
        .Range("AA" & NewLig).Value = CDate(TextBoxdate)
        .Range("AB" & NewLig).Value = TextBoximputation
        .Range("AC" & NewLig).Value = TextBoxlocalisation
        .Range("AD" & NewLig).Value = ComboBox1
        .Range("D" & NewLig).Value = ComboBox1
        .Range("AE" & NewLig).Value = TextBoxannée
        .Range("AF" & NewLig).Value = CheckBox1
        .Range("AG" & NewLig).Value = CheckBox2
        .Range("AH" & NewLig).Value = CheckBox3
        .Range("AI" & NewLig).Value = TextBoxconstat
        .Range("AJ" & NewLig).Value = TextBoxrisque
        .Range("AK" & NewLig).Value = TextBoxorigine
        .Range("AL" & NewLig).Value = TextBoxconservatoires
        .Range("AM" & NewLig).Value = TextBoxtravaux
        .Range("AN" & NewLig).Value = TextBoxobservation
        .Range("AO" & NewLig).Value = TextBoxconstructeur
        .Range("AP" & NewLig).Value = TextBoxdureevie1
        .Range("AQ" & NewLig).Value = TextBoxdureevie2
        .Range("AR" & NewLig).Value = TextBoximage
    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)

        With Worksheets(ThisWorkbook.Sheets.Count) 'avec l'onglet créé
            .Name = c.Value    'je renome

            'Je remplit mon modèle comme je veut...
            .Range("B3") = TextBoxobjet
              .Range("A6") = TextBoxfiche
                .Range("B6") = TextBoxdate
                 .Range("C6") = TextBoximputation
                  .Range("D6") = TextBoxlocalisation
                   .Range("E6") = ComboBox1
                    .Range("F6") = TextBoxannée
                     .Range("G6") = ComboBox4
                     .Range("A9") = TextBoxconstat
                      .Range("E11") = CheckBox1
                       .Range("E12") = CheckBox2
                        .Range("E13") = CheckBox3
                         .Range("A16") = TextBoxrisque
                          .Range("A21") = TextBoxorigine
                           .Range("A26") = TextBoxconservatoires
                            .Range("A30") = TextBoxtravaux
                             .Range("A35") = TextBoxobservation
                              .Range("H15") = TextBoxconstructeur
                                .Range("K17") = TextBoxdureevie1
                                 .Range("K18") = TextBoxdureevie2
                                  .Range("H20") = TextBoximage

        End With

            Application.ScreenUpdating = True

    Unload UserForm1
End Sub

Bonjour,

Pas la peine d'attendre qu'on te demande : Joint directement le fichier...

Une longue macro incompréhensible est inutile ! Il suffit de dire que ton bouton valider ne marche pas.

A+

bonjour je prend bien note de vos conseil

ci-joins Mon fichier

mon bouton valide ne fonctionne pas correctement

6ger-1.xlsm (150.49 Ko)

Bonjours,

J'ai vraiment du mal a me repérer dans votre document. Vous devriez vraiment nommer tout vos bouton et fonction pour simplifier la lisibilités.

J'ai cependant observer que certaine de vos variable n'exister pour ou était mal déclarer comme TextBoxdate. Et comme vos bouton et label ne sont pas nommer je ne les repère pas dans votre userform.

Bonjours,

J'ai vraiment du mal a me repérer dans votre document. Vous devriez vraiment nommer tout vos bouton et fonction pour simplifier la lisibilités.

J'ai cependant observer que certaine de vos variable n'exister pour ou était mal déclarer comme TextBoxdate. Et comme vos bouton et label ne sont pas nommer je ne les repère pas dans votre userform.

j'ai modifier a en utilisant la propriété tag enfin je pense mais cela fonctionne pas

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
        .Range("C" & NewLig).Value = TextBoxobjet
        .Range("Y" & NewLig).Value = ComboBox4
        .Range("Z" & NewLig).Value = TextBoxfiche
        .Range("AA" & NewLig).Value = CDate(TextBoxdate)
        .Range("AB" & NewLig).Value = TextBoximputation
        .Range("AC" & NewLig).Value = TextBoxlocalisation
        .Range("AD" & NewLig).Value = ComboBox1
        .Range("D" & NewLig).Value = ComboBox1
        .Range("AE" & NewLig).Value = TextBoxannée
        .Range("AF" & NewLig).Value = CheckBox1
        .Range("AG" & NewLig).Value = CheckBox2
        .Range("AH" & NewLig).Value = CheckBox3
        .Range("AI" & NewLig).Value = TextBoxconstat
        .Range("AJ" & NewLig).Value = TextBoxrisque
        .Range("AK" & NewLig).Value = TextBoxorigine
        .Range("AL" & NewLig).Value = TextBoxconservatoires
        .Range("AM" & NewLig).Value = TextBoxtravaux
        .Range("AN" & NewLig).Value = TextBoxobservation
        .Range("AO" & NewLig).Value = TextBoxconstructeur
        .Range("AP" & NewLig).Value = TextBoxdureevie1
        .Range("AQ" & NewLig).Value = TextBoxdureevie2
        .Range("AR" & NewLig).Value = TextBoximage

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...
            .Range("B3") = TextBoxobjet
              .Range("A6") = TextBoxfiche
                .Range("B6") = TextBoxdate
                 .Range("C6") = TextBoximputation
                  .Range("D6") = TextBoxlocalisation
                   .Range("E6") = ComboBox1
                    .Range("F6") = TextBoxannée
                     .Range("G6") = ComboBox4
                     .Range("A9") = TextBoxconstat
                      .Range("E11") = CheckBox1
                       .Range("E12") = CheckBox2
                        .Range("E13") = CheckBox3
                         .Range("A16") = TextBoxrisque
                          .Range("A21") = TextBoxorigine
                           .Range("A26") = TextBoxconservatoires
                            .Range("A30") = TextBoxtravaux
                             .Range("A35") = TextBoxobservation
                              .Range("H15") = TextBoxconstructeur
                                .Range("K17") = TextBoxdureevie1
                                 .Range("K18") = TextBoxdureevie2
                                  .Range("H20") = TextBoximage
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
10ger-2.xlsm (147.82 Ko)

Je peine un peu à comprendre ce qui cloche...

Essaie comme ça et dis moi:

Private Sub CommandButton2_Click() 'Bouton VALIDER
Dim NewLig As Long
    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
        .Range("C" & NewLig).Value = TextBoxobjet
        .Range("Y" & NewLig).Value = ComboBox4
        .Range("Z" & NewLig).Value = TextBoxfiche
        .Range("AA" & NewLig).Value = CDate(TextBoxdate)
        .Range("AB" & NewLig).Value = TextBoximputation
        .Range("AC" & NewLig).Value = TextBoxlocalisation
        .Range("AD" & NewLig).Value = ComboBox1
        .Range("D" & NewLig).Value = ComboBox1
        .Range("AE" & NewLig).Value = TextBoxannée
        .Range("AF" & NewLig).Value = CheckBox1
        .Range("AG" & NewLig).Value = CheckBox2
        .Range("AH" & NewLig).Value = CheckBox3
        .Range("AI" & NewLig).Value = TextBoxconstat
        .Range("AJ" & NewLig).Value = TextBoxrisque
        .Range("AK" & NewLig).Value = TextBoxorigine
        .Range("AL" & NewLig).Value = TextBoxconservatoires
        .Range("AM" & NewLig).Value = TextBoxtravaux
        .Range("AN" & NewLig).Value = TextBoxobservation
        .Range("AO" & NewLig).Value = TextBoxconstructeur
        .Range("AP" & NewLig).Value = TextBoxdureevie1
        .Range("AQ" & NewLig).Value = TextBoxdureevie2
        .Range("AR" & NewLig).Value = TextBoximage
    End With
   Application.ScreenUpdating = False
    'On crée les onglets
        'on copie le modèle en dernier
        Worksheets("TRAME").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
            With ActiveSheet
            .Name = Worksheets("RECAP").Range("B" & NewLig)    'je renome
            'Je remplit mon modèle comme je veut...
            .Range("B3") = TextBoxobjet
            .Range("A6") = TextBoxfiche
            .Range("B6") = TextBoxdate
            .Range("C6") = TextBoximputation
            .Range("D6") = TextBoxlocalisation
            .Range("E6") = ComboBox1
            .Range("F6") = TextBoxannée
            .Range("G6") = ComboBox4
            .Range("A9") = TextBoxconstat
            .Range("E11") = CheckBox1
            .Range("E12") = CheckBox2
            .Range("E13") = CheckBox3
            .Range("A16") = TextBoxrisque
            .Range("A21") = TextBoxorigine
            .Range("A26") = TextBoxconservatoires
            .Range("A30") = TextBoxtravaux
            .Range("A35") = TextBoxobservation
            .Range("H15") = TextBoxconstructeur
            .Range("K17") = TextBoxdureevie1
            .Range("K18") = TextBoxdureevie2
            .Range("H20") = TextBoximage
        End With
            Application.ScreenUpdating = True
    Unload UserForm1
End Sub

A+

merci beaucoup

Rechercher des sujets similaires à "code"