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 :

Rassembler deux .xls en un!


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 79
    Par défaut Rassembler deux .xls en un!
    Bonjour le Forum!

    Je possède 2 fichiers excel et j'aimerai les fusionner pour n'en faire qu'un..
    Auriez-vous une petite macro histoire de mettre sur la voie ?

    Merci d'avance à ceux qui répondrons!



  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Copie de classeur
    Bonjour,

    Supposons que tu aies 2 classeurs
    Forum 29 Juillet 1.xls et Forum 29 Juillet 2.xls
    et que tu souhaites intégrer le 1er classeur dans le 2ème au seul niveau des feuilles de calcul.

    A placer dans un module de Forum 29 Juillet 1.xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Copie_Feuilles()
     
    Dim wk As Worksheet
     
    With Workbooks("Forum 29 Juillet 2.xls")
        For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count)
        Next
        .Save
    End With
     
    End Sub
    A adapter.

    Cordialement.

    Marcel.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 79
    Par défaut
    Merci Marcel de vous intéressez à mon problème!

    Je pense m'être mal exprimée dans mon premier post, en effet je souhaite fusionner mes 2 fichiers excel dans un nouveau classeur.

    Pensez-vous cela possible ...

    merci



    PS: Je tiens à rappeler que je suis débutant dans ce domaine!

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Fusion et enregistrement
    Pas de problème.
    Il suffit d'utiliser "SaveAs" (enregistrer sous) au lieu de Save (enregistrer), ce qui donne

    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
    Sub Copie_Feuilles()
     
    Dim wk As Worksheet
     
    With Workbooks("Forum 29 Juillet 2.xls")
        For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count)
        Next
        ChDir "Répertoire"
        .SaveAs Filename:= _
            "Nouveau_claseur.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    End With
     
    End Sub
    A adapter si besoin.

    Je pars en congés, et je souhaite au Forum un bon mois d'Août.
    Bon courage pour les uns. Bonnes vacances pour les autres.

    Bien Cordialemnt.

    Marcel.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 79
    Par défaut
    Merci pour ton aide Marcel !

    Et bonne vacances à toi !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 79
    Par défaut
    Bonjour!


    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 Copie_Feuilles2()
     
    Dim wk As Worksheet
     
    With Workbooks("IBM_IB-Recurrent 2010-06 ESTIM vf.xls")
        For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count)
        Next
        ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
        .SaveAs Filename:= _
            "Nouveau_claseur.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    End With
     
    End Sub

    Savez-vous comment faire (à partir de ce code!) pour que se soit l'utilisateur qui rentre les fichiers à copier.
    Car pour le moment je suis obligé de rentrer le nom du fichier ( ici "IBM_IB-Recurrent 2010-06 ESTIM vf.xls" )dans le code or je veut que le code soit "universelle", qu'il marche pour tout les fichiers, car le nom de fichier peut changer.

    Avez-vous idée cher Forum!?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Bonjour visto94,

    As tu essayé avec l'instruction GetOpenFileName?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.GetOpenFilename("", , "Reflectivity File Selection", , True) 'ouverture dela boite de dialogue Open
    Cette instruction ouvre une boite de dialogue te permettant de selectionner les fichiers.

    Si tu sélectionnes plusieurs fichiers, cette instruction te renvoie un tableau.
    il te faut donc déclarer un tableau

    Après, tu te sers de l'instruction Open pour ouvrir les fichiers sélectionnés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Workbooks.Open
    Voila,
    j'espère que c'est compréhensible,

    Johann

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Essaies avec le code suivant en l'adaptant:

    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
    Sub Copie_Feuilles()
     
    Dim WB as Workbook, fichier_a_traité as Workbook
    Dim wk As Worksheet
     
     
    Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
    fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)
     
    Set fichier_a_traité= Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
     
    With fichier_a_traité
        For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
        Next
    End With
    .Close (False)    'fermeture de fichier a traite sans sauvegarde
     
    ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
        .SaveAs Filename:= _
            "Nouveau_claseur.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    End With
     
    End Sub
    Je te laisse adapter, déclarer correctement fichier_à_ouvrir et sauvegarder.

    Pour récupérer l'emplacement du fichier, ou si tu veux enregistrer ton nouveau fichier au même emplacement que l'ancien, penses à l'instruction ".Path".

    Cordialement,
    Johann

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 79
    Par défaut
    Merci johannj mais cela me copie le fichier sélectionner deux fois de suite dans le " nouveau_classeur" ...

    De plus à quel moment utilises-tu WB?



    Après avoir modifier l'emplacement du "bloc de sauvegarde" de la manière suivante:

    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 Copie_Feuilles22()
     
    Dim WB As Workbook, fichier_a_traité As Workbook
    Dim wk As Worksheet
     
     
    Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
    fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)
     
    Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
     
    With fichier_a_traité
    ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
        .SaveAs Filename:= _
            "Nouveau.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
        For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
        Next
     
    .Close (False)    'fermeture de fichier a traite sans sauvegarde
     
     
    End With
     
    End Sub

    Le fichier "nouveau.xls" s'enregistre et se ferme ensuite. On peut voir, une fois le fichier "nouveau.xls" réouvert, que la macro a fonctionner maintenant comment faire pour copier un autre .xls a la suite de celui ci ( "nouveau.xls")?

    Merci pour vos réponses!

Discussions similaires

  1. [XL-2003] Rassembler deux colonnes de texte
    Par jelly dans le forum Excel
    Réponses: 5
    Dernier message: 15/11/2012, 14h11
  2. [MySQL] Rassembler deux requétes
    Par discochami dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/05/2012, 12h39
  3. [XSD]rassembler deux xsd
    Par slimtun dans le forum Valider
    Réponses: 3
    Dernier message: 14/01/2008, 10h34
  4. rassembler deux projets windev
    Par nath-0-0 dans le forum WinDev
    Réponses: 2
    Dernier message: 17/04/2007, 14h09
  5. rassembler deux requetes
    Par imane_bennouna dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/07/2006, 16h13

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