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 :

Copier 3 fichiers excel dans 1. [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Copier 3 fichiers excel dans 1.
    Bonjour le forum!!!

    J'espère que vous allez tous bien!
    Je viens vous voir pour un petit problème, en effet, je souhaite copié 3 fichiers excel dans un seul et meme fichier (nommer concaténation_fichier.xls) voila mon code :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    '----------------------------------Concaténation des fichiers M & M-2------------------------
     
    'On Error GoTo Gestion_Erreur_1
     
    MsgBox " Sélectionner la Facture N"
     
    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é
     
    Chemin_dossier = InputBox("Chemin du dossier: ", "Chemin du dossier", "Veuillez rentrer le chemin du dossier(sans  le \  à la fin du chemin)")
     
    'On Error GoTo Gestion_Erreur_1
     
    With fichier_a_traité
    ChDir Chemin_dossier
     
    .SaveAs Filename:= _
    "Concaténation_fichier.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
     
     
    'Gestion_Erreur_1:
    '
    'MsgBox ("Une erreur est survenue dans la procédure Nom_Feuilles " & "de l'application " & Err.Source & Chr(13) & ". Erreur n° " & Err.Number & ": " _
    '& Err.Description)
    'goto end sub
     
     
     
    '----------------------------Compter le nombre de projet-----------------------------------------------------
     
            Compteur = 0
            For i_compteur = 1 To Sheets.Count 'Pour i_compteur = 1 jusqu'au nombre total de Feuilles.
                PositionTiret = InStr(1, Sheets(i_compteur).Name, "-") 'Recherche du tiret
                 'controle_nom_F = ActiveSheet.Name
                If PositionTiret > 0 Then 'And controle_nom_F <> "10 -Shared tools"  ' Si il y a un tiret alors
                    Debut = Mid(Sheets(i_compteur).Name, 1, PositionTiret - 1) 'On Coupe le nom de la feuille avant le tiret pour n'avoir que le numéro
                    If IsNumeric(Debut) Then ' si ce qui est avant le tiret est numérique alors
                        Compteur = Compteur + 1 'On incrémente le compteur !
                    End If
                End If
            Next i_compteur
     
    .Close (False) 'fermeture de fichier a traite sans sauvegarde
     
    End With
     
    '---------------------------------------------------------------------------------------------------------------
     
    MsgBox " Sélectionner la Facture N-2"
     
    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é
     
     
    Workbooks.Open Filename:=Chemin_dossier & "\Concaténation_fichier.xls"
    Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
     
    With fichier_a_traité
     
    For Each wk In .Worksheets
    wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
    Next
     
    .Close (False) 'fermeture de fichier a traite sans sauvegarde
     
    End With
     
    '---------------------Copie du fichier Code affaire dans concaténation_fichier------------------------
     
    MsgBox " Sélectionner le tableau des codes affaires"
     
    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é
     
     
    'Workbooks.Open Filename:=Chemin_dossier & "\Concaténation_fichier.xls"
    Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
     
    With fichier_a_traité
     
    For Each wk In .Worksheets
    wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
    Next
     
    '.Close (False) 'fermeture de fichier a traite sans sauvegarde
     
    End With
    fichier_ou_on_colle.Save
    malheureusement depuis que j'essaye de rajouter mon dernier fichier, je suis bloqué car il ne me sauvegarde pas l'étape du milieu ( donc la copie du fichier dit: " N-2" )

    On espérant recevoir un peu d'aide...

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    je comprends que le fichier_à_ouvrir devient le fichier_à_traiter qui devient concatenation_fichier.xls
    la copie se fait apparemment dans fichier_à_traiter (ou Concatenation_fichier.xls)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each wk In Worksheets
    wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
    Next
    donc on recopie dans le même fichier car c'est le fichier_à_traiter qui est actif à ce moment.

    pour le 2ème fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each wk In .Worksheets
    wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
    Next
    .Sheets.Count compte les feuilles du fichier_à_traiter alors que ça devrait être le fichier_ou_on_colle

    idem pour le 3ème fichier
    Il serait bon de déclarer les classeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Set classeur1 = ActiveWorkbook
     Set classeur2 = Workbooks(fichier_à_traiter)
    et de préciser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each wk In classeur2.Worksheets
      wk.Copy After:=classeur1.Sheets(classeur1.Sheets.Count)
    Next
    ou avec With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With classeur1
     For Each wk In classeur2.Worksheets
      wk.Copy After:= .Sheets(.Sheets.Count)
     Next
    End With

  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
    Bonjour Helas !
    Merci pour ton aide, voila comment j'ai régler mon problème :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    MsgBox " Sélectionner la Facture M"
     
     
    Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
    fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogue 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é
    Chemin_dossier = InputBox("Chemin du dossier: ", "Chemin du dossier", "Veuillez rentrer le chemin du dossier(sans  le \  à la fin du chemin)")
     
    With fichier_a_traité
    ChDir Chemin_dossier
     
    .SaveAs Filename:= _
    "Concaténation_fichier.xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
     
    End With
    'fichier_ou_on_colle.Save
    '---------------------------------------------------------------------------------------------------------------
     
    MsgBox " Sélectionner la Facture M-2"
     
    fichier_a_ouvrir = Application.GetOpenFilename
    Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir)
    Workbooks.Open Filename:=Chemin_dossier & "\Concaténation_fichier.xls"
    Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
     
     
    With fichier_a_traité
    For Each wk In .Worksheets
    wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
    Next
    End With
    fichier_ou_on_colle.Save
    fichier_ou_on_colle.Close
    '--------------------------------------------------------------------------------------------------------
    MsgBox " Sélectionner le fichier Codaff2010"
     
    fichier_a_ouvrir = Application.GetOpenFilename
    Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir)
    Workbooks.Open Filename:=Chemin_dossier & "\Concaténation_fichier.xls"
    Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
     
     
    With fichier_a_traité
    For Each wk In .Worksheets
    wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
    Next
    End With
     
    fichier_ou_on_colle.Save
     
    End Sub
    Si tu as des choses à redire je suis tout Ouïe !
    Bonne journée !

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

Discussions similaires

  1. Copier plusieurs Fichiers Excel dans un seul
    Par willoweiss dans le forum Excel
    Réponses: 1
    Dernier message: 10/12/2013, 09h52
  2. [XL-2007] Copier plusieurs fichiers Excel dans un nouvel onglet à chaque fois
    Par OptionExplicitSu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2012, 17h48
  3. macro pour copier un fichier excel dans un dossier
    Par mery13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2009, 13h36
  4. Copier un fichier excel dans un power point
    Par jhpotter dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2008, 10h11
  5. Copier des données excel dans un autre fichier excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2007, 20h57

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