IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Creation multiples classeurs avec noms prédéfinis et infos spécifiques [XL-MAC 2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut Creation multiples classeurs avec noms prédéfinis et infos spécifiques
    Bonjour à tous,

    Voila je cherche à créer une macro pour me faire gagner du temps. Pour vous exposer mon problème, j'ai un classeur source où toutes mes données sont calculées. Il est composé de n° de dossier (en ligne), et de compte comptable (en colonne).
    Pour schématiser : Voici la réplique exacte de mon classeur mère (N°dossier : Colonne B et commence en ligne 9 ; compte : sur la ligne 8 à partir de la colonne C), et il y a informations textes sur les lignes du dessus (2 à 7)
    Nom : Capture_1.JPG
Affichages : 312
Taille : 33,0 Ko

    Ces données doivent ensuite être intégrées dans notre ERP. Cependant pour les intégrer, j'ai besoin de créer un fichier Excel unique par dossier avec les données retranscrites d'une certaine manière.

    Ce que je cherche à faire :
    1 - Ouvrir le classeur mère, sur une feuille déterminée (la macro sera lancée d'un autre fichier)
    2 - Chercher le premier n° de dossier (Ligne9 - ColonneB),
    3 - Créer un classeur excel dans un répertoire spécifique
    4 - Le nommer automatiquement avec le n° de dossier (Nom : Ligne 9 - ColonneB, ici : "A")
    5 - Intégrer les données comme suit : (réplique exacte)
    Nom : Capture_2.JPG
Affichages : 272
Taille : 28,9 Ko
    - il faut donc que les comptes s'incrémentent en colonne A à partir de la ligne 1, que les montants associés s'incrémentent en colonne D, en colonne C il doit y avoir une info fixe en texte (exemple : LIN), colonne E,F,G = 0 (il faut que le "0" soit indiqué).
    5 - Boucler sur tous les dossiers qu'il trouve en colonne B sur le classeur mère (j'en ai au total 70).

    Je bloque déjà sur la première étape, je souhaite désactiver la mise à jour des liens à l'ouverture du classeur mais je ne trouve pas la commande.

    Ensuite je vous avoue que après quelques recherches je n'ai pas trouvé ma solutions, et je ne sais pas trop par où commencer.
    Voici mon code pour la première étape, qui est assez simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test()
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim Chemin As String, NomFichier As String, Fichier As String
     
        Application.ScreenUpdating = False
        'Application.DisplayAlerts = False
     
        Chemin = "CHEMIN\"
        NomFichier = "NOM_DU_CLASSEUR.xlsx"
        Fichier = Chemin & NomFichier
     
        Set wb = Workbooks.Open(Fichier)
        'PB : Je veux désactiver la mise à jour des liens à l'ouverture (UpdateLinks:=0)
        Set ws = wb.Worksheets("NOM_FEUILLE")
     
     End Sub
    Pouvez-vous me venir en aide, je vous remercie par avance,

    Bien cordialement,

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Bonjour
    Pour désactiver la mise à jour des liens à l'ouverture du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wb = Workbooks.Open( Filename:=Fichier, UpdateLinks:=False)
    Pour la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ws = wb.Worksheets("NOM_FEUILLE")

    si NOM_FEUILLE est une variable (?) il faut enlever les ""

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    Merci Sogedic, ça fonctionne.

    Je suis en train d'essayer de coder la seconde partie, à savoir créer un fichier excel (pour le moment vierge) à chaque fois qu'il rencontre un dossier, et qu'il nomme ce classeur avec le nom du dossier.

    Je suis bloqué, voici mon code, j'ai mis en rouge là ou je bloque pour le moment, et c'est ce qui est souligné qui bloque lorsque je lance la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub test()
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim Chemin As String, NomFichier As String, Fichier As String, Dossier As String, Import As String
    
        Application.ScreenUpdating = False
        
        Chemin = "chemin"
        NomFichier = "NomFichier"
        Fichier = Chemin & NomFichier
        
        Dossier = ThisWorkbook.Sheets("SYNTHESE").Range(B & Lig)
        'Je souhaite lui dire que le nom se trouve dans la feuille synthèse du dossier mère, dans la colonne B et la ligne 9 pour le premier, et ainsi de suite
        
        Set wb = Workbooks.Open(Fichier, UpdateLinks:=0)
        Set ws = wb.Worksheets("SYNTHESE")
        
        For L = 9 To Feuil1.Range("B" & Rows.Count).End(xlUp).Row
        Workbooks.Add
        Import = "Chemin import"
        ChDir Import
        ActiveWorkbook.SaveAs Filename:=Import & Dossier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        Lig = Lig + 1
        'Va sur la ligne d'en dessus
        
        Next
        'Boucle sur la dernière ligne non vide
     End Sub
    Merci pour ton / votre aide

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    J'ai modifié mon code mais je n'arrive toujours pas à créer mes classeurs avec des noms variables, voici ce que j'ai fait mais je suis perdu...
    Pouvez-vous m'aider ? Je bloque là ou il y a du rouge

    Par avance, merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub test()
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim Chemin As String, NomFichier As String, Fichier As String, Dossier As String, Import As String, VariableNom As String, Nom As String, Feuil as String
    
        Application.ScreenUpdating = False
        
        Chemin = "CHEMIN" 'Chemin du fichier mère
        NomFichier = "Fichier_Mere" 'Nom du fichier mère
        Fichier = Chemin & NomFichier 'Chemin & nom fichier mère
        Feuil = "SYNTHESE" 'Onglet où sont les informations sur le classeur mère
    
        Set wb = Workbooks.Open(Fichier, UpdateLinks:=0) 'Ouvre le fichier mère et désactive la mise à jour des liens
        Set ws = wb.Worksheets(Feuil) 'Se place sur la feuille "SYNTHESE"
        
        For L = 9 To ws.Range("B" & Rows.Count).End(xlUp).Row
        'Pour toutes les lignes à partir de la ligne 9, colonne B, et jusqu'a la dernière ligne non vide
        
        Workbooks.Add 'Crée un nouveau classeur Excel
        
        Import = "CHEMIN\"
        'Chemin pour entregistrer le nouveau classeur
        
        VariableNom = wb.ws.Range("B9" & Rows.Count).End(xlUp).Row.Value
        'Nom du classeur = B9 pour le premier classeur crée, et parcours les lignes suivantes pour la création des autres classeurs
        Nom = VariableNom
      
         ActiveWorkbook.SaveAs Filename:=Import & Nom, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        'Lig = Lig + 1
    
        Next
        
     End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    Toujours d'actualité si quelqu'un veut bien me venir en aide

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Ton code avec quelques commentaires/ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Chemin = "CHEMIN" 'Chemin du fichier mère 
        NomFichier = "Fichier_Mere" 'Nom du fichier mère
        Fichier = Chemin & NomFichier 'Chemin & nom fichier mère
        Feuil = "SYNTHESE" 'Onglet où sont les informations sur le classeur mère
     
        Set wb = Workbooks.Open(Fichier, UpdateLinks:=0) 'Ouvre le fichier mère et désactive la mise à jour des liens
        Set ws = wb.Worksheets(Feuil) 'Se place sur la feuille "SYNTHESE"
     
    For L = 9 To ws.Range("B" & Rows.Count).End(xlUp).Row
        'Pour toutes les lignes à partir de la ligne 9, colonne B, et jusqu'a la dernière ligne non vide
     
        Workbooks.Add 'Crée un nouveau classeur Excel
     
        Import = "CHEMIN\" 'tout ce que tu met entre guillemets excel l'interprète comme du texte 
    import=chemin & "\"
     
        'Chemin pour entregistrer le nouveau classeur
     
        VariableNom = wb.ws.Range("B9" & Rows.Count).End(xlUp).Row.Value 'ici tu prendras toujours le nom de la dernière cellule, il faut plutôt utiliser ta variable de boucle
    VariableNom = ws.Range("B" & L) 'de plus pas besoin de rajouter wb. puisqu'il est déjà dans la définition de ws
        'Nom du classeur = B9 pour le premier classeur crée, et parcours les lignes suivantes pour la création des autres classeurs
        Nom = VariableNom 'pourquoi créer une nouvelle variable identique a la précédente ? tu as la mémoire en trop ?
     
         ActiveWorkbook.SaveAs Filename:=Import & VariableNom , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    'activeworkbook.close ' j'ajouterais une ligne de fermeture pour éviter d'avoir a le faire a la main
     
        Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Sauvegarder nouveau classeur avec nom contenu dans cellule du classeur courant
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/04/2013, 10h27
  2. [XL-2007] Excel plante avec macro sauvegarde feuille vers nouveau classeur avec nom spécifique
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 10/05/2012, 14h59
  3. Creation de feuilles avec nom variable
    Par Potzo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2010, 10h28
  4. [XL-2003] Enregistrer classeur avec nom variable et chemin variable
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2009, 22h29
  5. Ajout d'une feuille avec nom prédéfini
    Par limulator dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/06/2008, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo