Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et classeur fermé ca donne quoi?
Merci!
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et classeur fermé ca donne quoi?
Merci!
"anonymousA" wrote:
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et classeur fermé ca donne quoi?
Merci!
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et j'ai un "subscript out of range"...
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et j'ai un "subscript out of range"...
"anonymousA" wrote:
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Et j'ai un "subscript out of range"...
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
oui, mais à quel endroit dans le programme ?Et j'ai un "subscript out of range"...
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
oui, mais à quel endroit dans le programme ?
Et j'ai un "subscript out of range"...
"anonymousA" wrote:
bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
oui, mais à quel endroit dans le programme ?Et j'ai un "subscript out of range"...
"anonymousA" wrote:bonjour,
on suppose que la colonne contenant les noms des fichiers est la colonne A
de la feuille appelée Feuil1 du classeur actif.ar ailleurs, je vais supposer
que tu connais le nombre des fichiers à ouvir, i.e que tu connais le N° de la
dernière ligne de la colonne A contenant un nom de fichier. On pourrait bien
sur automatiser cet aspect de recherche des cellules non vides dans la
colonne A mais sans précisions supplémentaires, j'en reste à la 1ere option.
On va ouvir les fichiers les uns après les autres. On pourrait faire le
transfert classeurs fermés mais je n'y vois pas d'interet majeur (sauf
contre-indications particulières non précisées dans ta question).
enfin je suppose que dans chacun des fichiers qui sera ouvert, les infos
sont contenus dans la feuille appelée Feuil1 et que ces infos doivent être
transférées dans le classeur actif dans la feuille appelée Feuil2
Sub transfert()
Application.DisplayAlerts = False
finfichiers = 4 'N° de ligne contenant le dernier nom du fichier. Attention
il ne faut pas qu'il y ait de ligne vide sinon le programme se plantera
Set wsh = ActiveWorkbook.Sheets("Feuil1")
Set wshdest = ActiveWorkbook.Sheets("Feuil2")
For I = 2 To finfichiers 'je suppose que le 1er fichier est en A2
Workbooks.Open wsh.Cells(I, 1).Value
Set wbk = ActiveWorkbook
Set wshsource = ActiveWorkbook.Sheets("Feuil1")
With wshsource
.UsedRange.Offset(1, 0).Resize(.UsedRange.Rows.Count - 1,
.UsedRange.Columns.Count).Copy
wshdest.Cells(wshdest.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
End With
wbk.Close
Next
End Sub
Attention, l'utilisation de xlCellTypeLastCell implique que la 1ere
écritture de données dans la feuille de réception démarre à la 1ere cellule
n'ayant jamais recu de données ni de format.
Si on souhaite faire démarrer l'écriture à la 1ere cellule non vide ( de
valeur ou de formules donc ayant eu la possibilité d'avoir reçu une donnée ou
un format mais ayant été écrasé depuis) , il faut utiliser une autre méthode
de détermination de cette cellule par l'une des méthodes suivantes:
'index de la dernière ligne possédant une valeur dans la colonne B p.e de la
feuille destinataire si on est sur que la colonne B recoit toujours des
valeurs
Range("B65536").End(xlUp).Row
ou
si on ne connait pas de colonne absolument renseignée dans la feuille
destinataire
'** l'index de la dernière ligne renseignée :
Lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Enfin, je ne connais pas le nombre de lignes à copier dans les fichiers
sources, mais si leur nombre total ou leur nombre total + le N° de la 1ere
ligne sur laquelle va s'inscrire les données ( cf précaution précédente sur
xlCellTypeLastCell ) est supérieurà 65536 ( limitation du Nbre de lignes par
feuille pour Excel), il conviendrait de mettre en place une gestion d'erreurs.
A+Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:
cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
j'ai supposé dans la proc que le classeur qui va réceptionner les données est
le classeur actif . Au démarrage de la procédure, il faut donc que ton
curseur soit positionné sur le classeur en question, en d'autres termes, il
faut donc que le classeur qui est le classeur destinataire soit au premier
plan dans Excel quand tu lances la procédure.
Ce qui me fait dire ca, c'est le fait que ca se plante sur Sheet4 ( tu es en
Excel Anglais, non ?) et que par défaut souvent dans Excel si on n' a pas
touché à cette option dans le Menu Outils/Options, le nombre de feuilles dans
un nouveau classeur est de 3 ( donc va jusqu'à Sheet3).Tout celà mis bout à
bout me fait penser que soit tu n'es pas surle classeur actif, soit ton
classeur actif (donc de réception des données) ne possède pas de feuille qui
s'appelle Sheet4. M'enfin , je peux me tromper.
Si tu veux éviter des désagréments de classeur actif, tu écris si je
reprends les termes de mon 1er envoi:
set wbkdest=workbooks("nomduclasseurderéceptiondesdonnées.xls")
'il faut bien sur que ce classeur soit ouvert
Set wsh = wbkdest.Sheets("Feuil1")
Set wshdest = wbkdest.Sheets("Feuil2")
Attention. Les instructions précédentes n'élimineront pas le problème de
feuilles inexistantes Feuil1 et/ou Feuil2 dans le classeur de réception des
données.Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
j'ai supposé dans la proc que le classeur qui va réceptionner les données est
le classeur actif . Au démarrage de la procédure, il faut donc que ton
curseur soit positionné sur le classeur en question, en d'autres termes, il
faut donc que le classeur qui est le classeur destinataire soit au premier
plan dans Excel quand tu lances la procédure.
Ce qui me fait dire ca, c'est le fait que ca se plante sur Sheet4 ( tu es en
Excel Anglais, non ?) et que par défaut souvent dans Excel si on n' a pas
touché à cette option dans le Menu Outils/Options, le nombre de feuilles dans
un nouveau classeur est de 3 ( donc va jusqu'à Sheet3).Tout celà mis bout à
bout me fait penser que soit tu n'es pas surle classeur actif, soit ton
classeur actif (donc de réception des données) ne possède pas de feuille qui
s'appelle Sheet4. M'enfin , je peux me tromper.
Si tu veux éviter des désagréments de classeur actif, tu écris si je
reprends les termes de mon 1er envoi:
set wbkdest=workbooks("nomduclasseurderéceptiondesdonnées.xls")
'il faut bien sur que ce classeur soit ouvert
Set wsh = wbkdest.Sheets("Feuil1")
Set wshdest = wbkdest.Sheets("Feuil2")
Attention. Les instructions précédentes n'élimineront pas le problème de
feuilles inexistantes Feuil1 et/ou Feuil2 dans le classeur de réception des
données.
Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:
cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.
Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B
j'ai supposé dans la proc que le classeur qui va réceptionner les données est
le classeur actif . Au démarrage de la procédure, il faut donc que ton
curseur soit positionné sur le classeur en question, en d'autres termes, il
faut donc que le classeur qui est le classeur destinataire soit au premier
plan dans Excel quand tu lances la procédure.
Ce qui me fait dire ca, c'est le fait que ca se plante sur Sheet4 ( tu es en
Excel Anglais, non ?) et que par défaut souvent dans Excel si on n' a pas
touché à cette option dans le Menu Outils/Options, le nombre de feuilles dans
un nouveau classeur est de 3 ( donc va jusqu'à Sheet3).Tout celà mis bout à
bout me fait penser que soit tu n'es pas surle classeur actif, soit ton
classeur actif (donc de réception des données) ne possède pas de feuille qui
s'appelle Sheet4. M'enfin , je peux me tromper.
Si tu veux éviter des désagréments de classeur actif, tu écris si je
reprends les termes de mon 1er envoi:
set wbkdest=workbooks("nomduclasseurderéceptiondesdonnées.xls")
'il faut bien sur que ce classeur soit ouvert
Set wsh = wbkdest.Sheets("Feuil1")
Set wshdest = wbkdest.Sheets("Feuil2")
Attention. Les instructions précédentes n'élimineront pas le problème de
feuilles inexistantes Feuil1 et/ou Feuil2 dans le classeur de réception des
données.Ca plante à partir de
Set wshdest = ActiveWorkbook.Sheets("Sheet4")
Encore merci... :)
"anonymousA" wrote:cette procédure fonctionne parfaitement sur un exemple que je me suis fait
sur mon PC avant de t'envoyer la proc, car il est exceptionnel que j'envoie
quelque chose sans le tester ou sans être sur qu'il l'ait été au moins une
fois.
Maintenant, les conditions d'exercice d'une macro dépendant à la fois du
soft et de la configuration du PC de l'utilisateur et de l'utilisateur
lui-même parfois ?
Si tu ne donnes pas plus d'infos sur le début d'une genèse de l'erreur,il ne
m'est pas possible de t'aider.
Pour déterminer d'où vient le problème, essaye de mettre un point d'arrêt à
chaque instruction et regarde à quel moment ca se plante.Bonjour,
J'ai dans une colonne une liste de fichiers du type:
C:Docs2001.xls
C:Docs2002.xls
C:Docs2003.xls etc...
J'aimerais aller chercher les données de la première feuille de chaque sauf
la première ligne et les mettre toutes à la suite les unes des autres dans
mon classeur actif sachant que la plage n'est jamais la même...
Merci!
Christophe.B