Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" a écrit dans le message de news:
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avanceBonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" a écrit dans le message de news:
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avanceBonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" a écrit dans le message de news:
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: FD075600-425F-4265-A580-21BC6E733A40@microsoft.com...
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avance
Bonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: D0979947-950C-46DA-963C-09849CA4BE97@microsoft.com...
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avance
Bonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: CEC12205-3A3D-4F16-9F39-D4E7BBB34150@microsoft.com...
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" a écrit dans le message de news:
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avanceBonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" a écrit dans le message de news:
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avanceBonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" a écrit dans le message de news:
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" a écrit dans le message de news:
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avanceBonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" a écrit dans le message de news:
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avanceBonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" a écrit dans le message de news:
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: FD075600-425F-4265-A580-21BC6E733A40@microsoft.com...
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avance
Bonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: D0979947-950C-46DA-963C-09849CA4BE97@microsoft.com...
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avance
Bonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" <rick@discussions.microsoft.com> a écrit dans le message de news: CEC12205-3A3D-4F16-9F39-D4E7BBB34150@microsoft.com...
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
Essaie ceci :
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String, Ligne As Long
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail"
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
Application.ScreenUpdating = False
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
With Wk.Worksheets("Feuil1")
Ligne = .Range("A65536").End(xlUp).Row
If Ligne < 15 Then Ligne = 15
.Range("A15:Z" & Ligne).Copy Rg
End With
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
Salutations!
"rick" a écrit dans le message de news:
michdenis , mes données sont à copié de A15 à Z 400,
sur la macro c'est seulement dans A????
mercid'avanceBonjour Rick,
Remplace cette ligne de code :
Set Rg = Rg.Offset(10)
PAR :
Set Rg = Rg(65536 - Rg.Row).End(xlUp).Offset(1)
Salutations!
"rick" a écrit dans le message de news:
tu met la ligne:
Set Rg = Rg.Offset(10)
desolé, chose que j'ai oublié de preciser certains fichiers source peuvent
avoir des données de A15 à Z45 ou bien de A15 à Z18, cela varie pour chaque
fichier source.
donc la ligne offset(10) n'est pas bonne.
Comment résoudre ce problème?
merci d'avanceBonjour Rick,
Voici une procédure qui copiera TOUTES les plages A15:A25 de la "Feuil1" de tous les classeurs contenus dans le répertoire
mentionné
dans la procédure.
Évidemment Toutes tes feuilles sources doivent avoir le même nom "Feuil1"
Ce répertoire doit contenir seulement des fichiers dont tu veux copier leur plage A15:A25 vers ton fichier compilant tes
résultats.
Évidemment, tu dois adapter le nom des objets selon ceux en vigueur dans ton application.
'---------------------------------------------
Sub CopierDesData()
'Section déclaration des variables
Dim Wk As Workbook, Rg As Range
Dim Repertoire As String
Dim Fichier As String
'Répertoire où sont tes fichiers Excel
Repertoire = "c:Atravail" 'à déterminer
'Fichier contient le premier fichier qui sera traité.
Fichier = Dir(Repertoire & "*.xls")
'Déterminer où les données seront copiées
'Dans la feuille "Feuil1" du classeur où
'tu copieras cette procédure, En colonne A:A
With ThisWorkbook.Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65536").End(xlUp).Row)
End If
End With
'Ceci est une boucle qui traitera à tour de rôle TOUS les
'fichiers Excel du répertoire. Elle copiera la plage A15:A25
'de la feuil1 de chaque classeur ouvert vers la feuil1 de
'ce classeur, les données à la suite des autres ...
Do While Fichier <> ""
'Test pour s'assurer que le fichier est
'différent de celui-ci (récipient du résultat)
If Fichier <> ThisWorkbook.Name Then
'Attribue à la variable Wk, le classeur qui
's'ouvre
Set Wk = Workbooks.Open(Repertoire & Fichier)
'Copie vers Rg, la plage A15:A25 de la feuil1
Wk.Worksheets("Feuil1").Range("A15:A25").Copy Rg
'Détermine la nouvelle Plage où seront copiées
'les données du prochain classeur à ouvrir
Set Rg = Rg.Offset(10)
'Ferme le classeur que tu viens d'ouvrir sans
'rien sauvegarder
Wk.Close False
'attribue à la variable fichier, le nom du prochain
'fichier à ouvrir
Fichier = Dir
End If
Loop
'Libère l'espace mémoire occupé par ces variables.
Set Wk = Nothing: Set Rg = Nothing
End Sub
'------------------------------------
Salutations!
"rick" a écrit dans le message de news:
Bonjour,
pour import de mes differents fichier source je connait bien la methode
getopen.
mais le probleme est que sur mes fichiers source j'ai des données de A15 à A25
sur les differents fichiers source.
Dans mon fichier destination, je souhaite les importer les uns à la suite de
l'autre sans écraser par dessus.
Mais je n'y arrive pas?
Je suis desolé, mais j'ai pas bien compris la macro que vous me donner:
Range("A65536").End(xlUp)(2).Select
quand je fait un import d'un de mes fichier source il faut qu'il se mette à
la prochaine ligne vide.
Pourriez vous m'en dire plus.
merci beaucoup
c'est ok
c'est ok
c'est ok