OVH Cloud OVH Cloud

Aller chercher une plage variable dans plusieurs fichiers...

21 réponses
Avatar
Christophe B.
Bonjour,

J'ai dans une colonne une liste de fichiers du type:
C:\Docs\2001.xls
C:\Docs\2002.xls
C:\Docs\2003.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

1 réponse

1 2 3
Avatar
anonymousA
un truc du genre. Je suppose bien sur qu'il s'agit d'effacer les lignes vides
de la feuille qui réceptionne les données

With wshdest.UsedRange
frow = .Rows(1).Row
End With

If frow <> 1 Then Range(Cells(1, 1), Cells(frow - 1, 256)).Delete

With wshdest.UsedRange
.AutoFilter
.AutoFilter Field:=1, Criteria1:="="
.Offset(1, 0).SpecialCells(xlCellTypeVisible).Delete
'.Delete
.AutoFilter Field:=1
.AutoFilter
End With

A+


CA MARCHE!!!

Maintenant, comment effacer les lignes vides???

Merci beaucoup!

"anonymousA" wrote:

bon,ce que tu décris me parait complètement pas normal

envoies moi tes fichiers à l'adresse s'il sont ne sont
pas trop gros et pas confidentiels et je vais essayer de voir comment traiter
la question.

N'oublie pas de laisser dans la procédure exactement le texte que tu as
frappé.

Je ne peux rien faire de + pour toi pour l'instant

A+


Ca bloque à "set wbk=..."
et ca me dit
error 1004

application-defined or object-defined error.


"anonymousA" wrote:

bien sur.

Je reste perplexe car si tu n'as qu'un classeur ouvert et qu'il a bien une
feuille dénominée Sheet4 comme nom d'onglet, ca doit marcher, car il n'y a
rien de compliqué la dedans.
Fais un dernier essai ( ca a l'air stupide mais sait-on jamais).
1ere phasei: écris une procédure nouvelle dans laquelle tu n'écris que
Sub essai
on error resume next
set wsh¬tiveworksbook.sheets("Sheet4")
if err.number<>0 then
msgbox err.number &"/" & err.description
end if
end sub

si tu obtiens le message d'erreur par msgbox regardes ce qu'il te dit . Dans
ce cas, ca veut forcément dire qu'il ne reconnait pas sheet4 comme étant une
feuille du classeur actif

si tu n'as pas de message d'erreur et que en réessayant la proc que je t'ai
envoyée , il se plante à nouveau sur la même ligne, essaye de changer le nom
de ta feuille dans Excel et mets le nouveau nom dans la proc.

A+


Juste un truc: est-ce que tout ce qui est dans la boucle with est en une
seule ligne? (je l'ai supposé ainsi)

"anonymousA" wrote:

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


















1 2 3