Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : Rassembler plusieurs fichiers Excel

2 réponses
Avatar
Isa
Merci Isabelle pour tes conseils.

Je coince toujours :
Dans ton exemple tu mets :
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
=> ça signifie que tu prends la dernière ligne écrite + 1 pour avoir la 1ère
ligne disponible ?

Ensuite dans mes feuilles IMPORT que je dois rassembler, je n'ai pas le même
nb de lignes à copier, ça dépend du fichier : ça commence toujours en A2 et
ça finit en F...
Comment puis-je chercher la dernière cellule remplie ?

De plus, comment fait-on pour qu'il ne tienne pas compte des Majuscules /
Minuscules dans la comparaison de chaînes de caractères ? (car si mon
Global.xls contient des majuscules, il faut l'écrire pile pile pareil.)

D'avance merci de vos réponses.

Isa.

*******************************************************

bonjour Isa,

voici la modification,

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:\zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
If .FoundFiles(i) <> "C\zaza\global.xls" Then '<----------Test sur
global.xls
Workbooks.Open Filename:=.FoundFiles(i)
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A"
& x)
ActiveWorkbook.Close SaveChanges:=False
End If
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub


isabelle

Isa a écrit :
> Merci pour vos conseils.
> Je coince à un endroit :
> Je dois rassembler toutes les données de la feuille nommée IMPORT de tous
> les fichiers du répertoire, sauf le fichier global qui va tout rassembler
> (c'est le fichier sur lequel je vais exécuter le programme).
>
> Comment puis-je exclure ce fichier, il s'appelle global.xls ?
> Merci.
>
> "isabelle" wrote:
>
>> bonjour Isa,
>>
>> voici un exemple avec FileSearch,
>> j'ai supposé qu'il n'y avait qu'un seul onglet par fichier
>> et que la plage A1:B10 de chaque fichier étaient copier sur le Classeur1, Feuill1
>>
>> Sub bachfile()
>> Set fs = Application.FileSearch
>> With fs
>> .LookIn = "C:\zaza"
>> .Filename = "*.xls"
>> .Execute
>> For i = 1 To .FoundFiles.Count
>> ' MsgBox .FoundFiles(i)
>> Workbooks.Open Filename:=.FoundFiles(i)
>> x = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
>> Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A" & x)
>> ActiveWorkbook.Close SaveChanges:=False
>> Next i
>> If .FoundFiles.Count = 0 Then
>> MsgBox "Aucun fichier n'a été trouvé."
>> End If
>> End With
>> End Sub
>>
>> isabelle
>>
>> Isa a écrit :
>>> Bonjour,
>>>
>>> Tout d'abord, je vous remercie pour vos conseils pour la création d'une
>>> nouvelle feuille avec copie des données d'une autre feuille, j'ai réussi à
>>> faire ce que je désirais (Jacquouille, merci, j'ai du être touchée par la
>>> grâce divine ;-))).
>>>
>>> Maintenant, je dois passer une autre étape qui est la suivante :
>>> Dans un répertoire, j'ai x fichiers Excel, tous avec une feuille nommée
>>> IMPORT.
>>> Je dois créer un nouveau fichier Excel regroupant les données de ces
>>> feuilles IMPORT (Je ne dois prendre que certaines données).
>>> Ma question est essentiellement comment faire pour naviguer d'un fichier à
>>> un autre. Je suppose qu'il y a un type d'objet fichier...
>>> D'avance merci de vos réponses.
>>>
>>> Isa.

2 réponses

Avatar
Isa
J'ai l'erreur "L'indice n'appartient pas à la sélection" sur ce code :
x = Workbooks(.FoundFiles(i)).Sheets("IMPORT").Range("A65536").End(xlUp).Row
+ 1

Avez-vous une idée ?
Merci.

"Isa" wrote:

Merci Isabelle pour tes conseils.

Je coince toujours :
Dans ton exemple tu mets :
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
=> ça signifie que tu prends la dernière ligne écrite + 1 pour avoir la 1ère
ligne disponible ?

Ensuite dans mes feuilles IMPORT que je dois rassembler, je n'ai pas le même
nb de lignes à copier, ça dépend du fichier : ça commence toujours en A2 et
ça finit en F...
Comment puis-je chercher la dernière cellule remplie ?

De plus, comment fait-on pour qu'il ne tienne pas compte des Majuscules /
Minuscules dans la comparaison de chaînes de caractères ? (car si mon
Global.xls contient des majuscules, il faut l'écrire pile pile pareil.)

D'avance merci de vos réponses.

Isa.

*******************************************************

bonjour Isa,

voici la modification,

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
If .FoundFiles(i) <> "Czazaglobal.xls" Then '<----------Test sur
global.xls
Workbooks.Open Filename:=.FoundFiles(i)
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A"
& x)
ActiveWorkbook.Close SaveChanges:úlse
End If
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub


isabelle

Merci pour vos conseils.
Je coince à un endroit :
Je dois rassembler toutes les données de la feuille nommée IMPORT de tous
les fichiers du répertoire, sauf le fichier global qui va tout rassembler
(c'est le fichier sur lequel je vais exécuter le programme).

Comment puis-je exclure ce fichier, il s'appelle global.xls ?
Merci.

"isabelle" wrote:

bonjour Isa,

voici un exemple avec FileSearch,
j'ai supposé qu'il n'y avait qu'un seul onglet par fichier
et que la plage A1:B10 de chaque fichier étaient copier sur le Classeur1, Feuill1

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
Workbooks.Open Filename:=.FoundFiles(i)
x = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A" & x)
ActiveWorkbook.Close SaveChanges:úlse
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle

Bonjour,

Tout d'abord, je vous remercie pour vos conseils pour la création d'une
nouvelle feuille avec copie des données d'une autre feuille, j'ai réussi à
faire ce que je désirais (Jacquouille, merci, j'ai du être touchée par la
grâce divine ;-))).

Maintenant, je dois passer une autre étape qui est la suivante :
Dans un répertoire, j'ai x fichiers Excel, tous avec une feuille nommée
IMPORT.
Je dois créer un nouveau fichier Excel regroupant les données de ces
feuilles IMPORT (Je ne dois prendre que certaines données).
Ma question est essentiellement comment faire pour naviguer d'un fichier à
un autre. Je suppose qu'il y a un type d'objet fichier...
D'avance merci de vos réponses.

Isa.








Avatar
isabelle
bonjour Isa,

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
If .FoundFiles(i) <> "Czazaxx.xls" Then
Workbooks.Open Filename:=.FoundFiles(i)
x = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
y = ActiveSheet.Range("A65536").End(xlUp).Row
Range("A1:F" & y).Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A" & x)
ActiveWorkbook.Close SaveChanges:úlse
End If
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub


isabelle

Merci Isabelle pour tes conseils.

Je coince toujours :
Dans ton exemple tu mets :
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
=> ça signifie que tu prends la dernière ligne écrite + 1 pour avoir la 1ère
ligne disponible ?

Ensuite dans mes feuilles IMPORT que je dois rassembler, je n'ai pas le même
nb de lignes à copier, ça dépend du fichier : ça commence toujours en A2 et
ça finit en F...
Comment puis-je chercher la dernière cellule remplie ?

De plus, comment fait-on pour qu'il ne tienne pas compte des Majuscules /
Minuscules dans la comparaison de chaînes de caractères ? (car si mon
Global.xls contient des majuscules, il faut l'écrire pile pile pareil.)

D'avance merci de vos réponses.

Isa.

*******************************************************

bonjour Isa,

voici la modification,

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
If .FoundFiles(i) <> "Czazaglobal.xls" Then '<----------Test sur
global.xls
Workbooks.Open Filename:=.FoundFiles(i)
x =
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A"
& x)
ActiveWorkbook.Close SaveChanges:úlse
End If
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub


isabelle

Merci pour vos conseils.
Je coince à un endroit :
Je dois rassembler toutes les données de la feuille nommée IMPORT de tous
les fichiers du répertoire, sauf le fichier global qui va tout rassembler
(c'est le fichier sur lequel je vais exécuter le programme).

Comment puis-je exclure ce fichier, il s'appelle global.xls ?
Merci.

"isabelle" wrote:

bonjour Isa,

voici un exemple avec FileSearch,
j'ai supposé qu'il n'y avait qu'un seul onglet par fichier
et que la plage A1:B10 de chaque fichier étaient copier sur le Classeur1, Feuill1

Sub bachfile()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza"
.Filename = "*.xls"
.Execute
For i = 1 To .FoundFiles.Count
' MsgBox .FoundFiles(i)
Workbooks.Open Filename:=.FoundFiles(i)
x = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Range("A1:B10").Copy Workbooks("Classeur1").Sheets("Feuil1").Range("A" & x)
ActiveWorkbook.Close SaveChanges:úlse
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle

Bonjour,

Tout d'abord, je vous remercie pour vos conseils pour la création d'une
nouvelle feuille avec copie des données d'une autre feuille, j'ai réussi à
faire ce que je désirais (Jacquouille, merci, j'ai du être touchée par la
grâce divine ;-))).

Maintenant, je dois passer une autre étape qui est la suivante :
Dans un répertoire, j'ai x fichiers Excel, tous avec une feuille nommée
IMPORT.
Je dois créer un nouveau fichier Excel regroupant les données de ces
feuilles IMPORT (Je ne dois prendre que certaines données).
Ma question est essentiellement comment faire pour naviguer d'un fichier à
un autre. Je suppose qu'il y a un type d'objet fichier...
D'avance merci de vos réponses.

Isa.