Création d'un classeur Excel

Bonjour à tous,

Voila, j'ai besoin de votre aide. Je souhaiterai générer un nouveau classeur excel "X" via un autre classeur excel "A".

le classeur excel "A" dispose d'une liste de données, a chaque fois que je rempli une nouvelle ligne, je clique sur un bouton VBA qui permettrai de générer un classeur excel "X". Ce classeur sera constitué d'un onglet standard récupéré d'un troisième classeur excel "STANDARD", et on viendrait récupérer les donnée de la dernière ligne du classeur "A" pour l’insérer dans le classeur "X"

Pour finir, le classeur X devra prendre le nom de la première colonne de la dernière ligne et s'enregistrer dans un dossier spécifique.

Voici un exemple de toute cette histoire.

Dans cet exemple, le classeur "X" devrait s'appeler "1005" et les données 1, 2 et 3 devraient être renseignées comme dans le classeur "STANDARD", l'onglet du classeur "X" devrait s'appelle "Définition".

Je souhaiterai savoir si d'une part c'est possible et d'autre part par ou commencer.

merci d'avance

9standard.xlsx (8.64 Ko)
10classeur-a.xlsx (15.48 Ko)

Bonjour,

A affecter à ton bouton :

Sub GénérerClasseur()
    Dim chDos$, nCls$, Dnn, Cbl, i%
    With ActiveSheet.Range("A1").End(xlDown)
        nCls = CStr(.Value) & ".xlsx"
        Dnn = .Offset(, 1).Resize(, 3).Value
    End With
    Cbl = Split("A0 B12 E12 F20")
    chDos = "définircheminenregistrement\"
    With works
    With Workbooks.Open(ThisWorkbook.Path & "\STANDARD.xlsx")
        With Worksheets(1)
            For i = 1 To 3
                .Range(Cbl(i)) = Dnn(1, i)
            Next i
        End With
        .SaveAs chDos & nCls
        .Close
    End With
End Sub

On a supposé que le classeur STANDARD était dans le même dossier que Classeur A.

Le chemin du dossier d'enregistrement du classeur X doit être indiqué dans la macro (ne pas omettre slash en fin...)

Supprimer les 2 onglets en trop dans STANDARD et nommer le restant Définition (ce qui sera une fois pour toutes !)

Enregistrer le A en xlsm, une fois pourvu de macro.

Macro à placer dans un module Standard.

Bonjour,

Depuis le classeur A qui doit être identique à ta pièce jointe, (nom de la feuille, disposition des colonnes) enregistrer une macro qui ouvre STANDARD.xlsx le modifie avec les données de "1005" et Enregistre sous ce classeur avec le nom "1005.xlsx"

Fermer "1005.xlsx"

Arrêter l'enregistrement

Et fournir le classeur A avec la macro enregistrée.

Fournir également le classeur "1005.xlsx"

J'insiste absolument pour le classeur A et le classeur "1005.xlsx" soit conforme aux originaux.

Je ne vais pas m'amuser à recommencer plusieurs fois parce que tu as simplifié à l'extrême...

A+

Merci à vous deux pour vos réponses. Je suis parti sur la solution de MFerrand.

J'ai constaté que le fichier Standard s'ouvre bien en récupérant des données du fichier A, il ne reste plus qu'a enregistrer le fichier sous le nom que l'on souhaite. Cette parti c'est parfait.

Cependant, le fichier standard ne récupère pas les bonnes données du fichier A (pas la bonne ligne et la bonne colonne).

Egalement, le fichier ne récupère que 3 données, normal vu qu'il n'y en a que trois mais en réalité j'en ai beaucoup plus (25).

J'ai remis les fichiers avec la macro et des détails supp à l'intérieur.

Pouvez vous m'indiquer quelle partie du code permet de récupérer les données du fichier A ?

Merci d'avance,

6standard.xlsm (7.96 Ko)
8classeur-a.xlsm (26.39 Ko)

Bonjour,

La prochaine fois tu fourniras un modèle conforme... A toi d'adapter le code que tu as déjà modifié.

Cordialement.

je voulais commencer par un exemple simple c'est pour cela.

Concernant la sélection de la ligne souhaitée, j'ai crée ce code

Sub test_selection()

For i = 13 To i = 1000 Step 1

If IsEmpty(Range("Bi")) Then

Cells(i - 1, 1).EntireRow.Select

Selection.Copy

End If

Next i

End Sub

Malheureusement il ne se passe rien..

C'est bon tout fonctionne! Merci beaucou

Il y avait une "scorie" malencontreusement restée dans mon code que je n'ai pas vue en le mettant mais que tu aurais dû supprimer car ne correspondant à rien. Je remets le code...

Sub GénérerClasseur()
    Dim chDos$, nCls$, Dnn, Cbl, i%
    With ActiveSheet.Range("A1").End(xlDown)
        nCls = CStr(.Value) & ".xlsx"
        Dnn = .Offset(, 1).Resize(, 3).Value
    End With
    Cbl = Split("A0 B12 E12 F20")
    chDos = "définircheminenregistrement\"
    With Workbooks.Open(ThisWorkbook.Path & "\STANDARD.xlsx")
        With Worksheets(1)
            For i = 1 To 3
                .Range(Cbl(i)) = Dnn(1, i)
            Next i
        End With
        .SaveAs chDos & nCls
        .Close
    End With
End Sub

Le début de mon code trouvait fort bien la dernière ligne sur ton modèle ! Tu pouvais aisément l'adapter !

    Dim chDos$, nCls$, Dnn, Cbl, i%
    With ActiveSheet.Range("A12").End(xlDown)
        nCls = CStr(.Value) & ".xlsx"
        Dnn = .Offset(, 1).Resize(, 24).Value
    End With

au lieu de produire un galimatias avec erreurs de syntaxe sur les 2 premières lignes et imitation de l'enregistreur et imprécision sur les suivantes en oubliant l'essentiel (qui est de récupérer une ligne dans une variable !)

NB- Je suis réintervenu en raison de l'anomalie involontaire, ce début de ligne avorté dans mon code qui n'avait pas lieu d'être...

Mais si ta façon de travailler consiste à commencer par décaler l'indentation correcte de mon code en seulement le recopiant ! à utiliser (mal) l'enregistreur ! sans vérifier ta syntaxe dans l'Aide quand il en est besoin ! ...

Tu as tout loisir d'adapter mon code, il faut commencer par éviter de l'esquinter...

Rechercher des sujets similaires à "creation classeur"