XL 2013 demande d'aide sur VBA

bredeche

XLDnaute Occasionnel
Bonjour
j'ai mis en place un formulaire ou les éléments s' enregistres ligne par ligne dans le tableau "recap"
a cela je voudrai sur le modèle via l'onglet "trame "
a chaque nouvelle ligne sur validation du bouton valider de mon formulaire ,je voudrais qu'une fiche soit crée sur un nouvelle onglet avec tout les éléments rentré dans le formulaire sur le support de ma trame
et que cet onglet porte le nom de ma colonne B soit B10 qui actuellement il y a une formule "=CONCATENER(Y10;"_"; Z10;"_";AE10)"


mon formulaire et la création du nouvelle onglet fonctionne mais mon problème est sur appellation de l'onglet et sur l'enregistrement des données
du formulaire

je vous remercie d'avance de votre aide
 

Fichiers joints

Dernière édition:

bredeche

XLDnaute Occasionnel
Re bonjour mon problème est bien sur la création d'onglet la macro me produit 3 onglet et mes donne ne s'enregistre pas dans la fiche et mon second problème est quand je réalise la deuxième fiche
sur le fichier joints j 'ai supprimé ma boucle mais le problème persiste
merci e votre aide
 

Fichiers joints

sousou

XLDnaute Accro
Bonjour
Je n'ai pas pris le temps de travailler sur ton fichier (trop long)
Mais je te soumet ici un exemple sur la manière de réaliser ce que tu souhaites.
Le principe, faire un tableau de correspondance entre tes données recap et ta trame
Faire une copie de ta trame
Faire une boucle qui remplie la nouvelle trame
tu intègres et adapte cela dans ta macro valider
Dans l'exemple joint, sélectionne la ligne de recap, en n'oubliant pas le nom, et clique
Cela devrait te mettre sur la piste,
Cette méthode à le mérite de pouvoir changer facilement la forme de ta feuille trame ou celle de ta feuille récap,
Tu n'as qu'a modifier le tableau
 

Fichiers joints

bredeche

XLDnaute Occasionnel
VB:
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
 

Discussions similaires


Haut Bas