Récupération de données ds un classeur excel

Cédric -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je dois faire une synthèse de plusieurs documents et pour cela j'utilise une macro qui ouvre tous mes documents pour récupérer les données. Le problème c'est que sa prend beaucoup trop de temps(il peut y avoir entre 10 et 100 classeurs différents).

Je sais que l'on peut récupérer ces données sans ouvrir les classeurs, et donc gagner énormément de temps ! Seul problème, je n'y arrive pas et je ne trouve pas la méthode à suivre.

voici une partie de mon code pour vous montrer ce que je souhaite faire :

        Application.DisplayAlerts = False 'désactivation des demandes de sauvegarde du presse-papier
        Workbooks.Open Filename:=NomChemin 'ouverture du document     
        Windows(LabelDoc).Activate
        Sheets("Liste").Activate
        y = Range("NomBU").Value
        Windows("Synthèse.xls").Activate 'ouverture de la synthèse
        Sheets("Synthèse_Devise").Activate
        Cells(cellule, 1).Value = y
        ActiveWorkbook.Close SaveChanges:=False 'fermeture du document
        Application.DisplayAlerts = True 'réactivation des demandes de sauvegarde du presse-papier


Comme vous avez pu le constater, j'ouvre un classeur pour récupérer une donnée.
Mais en sachant que j'ai plusieurs données à récupérer et sur plusieurs feuilles de chaque classeur que je dois en ouvrir entre 10 et 100 je vous laisse imaginer le temps que sa met !!

J'espere que quelqu'un pourra m'aider !!
merci à tous ceux qui se pencheront sur mon problème !!

Cordialement.
A voir également:

3 réponses

xav3601 Messages postés 3390 Statut Membre 311
 
Salut!
Je crois que tu peux faire ca en utilisant la fonction parameter.
0
Cédric
 
Salut xav3601,
merci pour l'interet que tu porte à mon problème !

Peux tu m'expliquer comment fonctionne la fonction parameter?

merci
0
xav3601 Messages postés 3390 Statut Membre 311
 
ca ressemble à un truc dans ce format:

" = 'C:\[fichier.xls]feuil1'!B9"

La je récupère la valeur de la cellule B9 du fichier c:\fichier.xls
Il faut bien les respecter les ', les ! et les []
0
Cédric
 
et comment je fait si je veux récupérer une valeur avec un range dans une feuille spécial de mon classeur :

Windows(LabelDoc).Activate
Sheets("Liste").Activate
y = Range("NomBU").Value
0
Cédric
 
et puis je dois également pouvoir fair un truc comme sa :

Windows(LabelDoc).Activate
Sheets("Conclusion").Activate
n = 0
For m = 1 To 200
If Cells(m + 38, 2).Value = "" Then
Exit For
End If
n = n + 1
Next m
Windows("Synthèse.xls").Activate 'ouverture de la synthèse
Sheets("Synthèse_Devise").Activate
Cells(cellule, 15).Value = n
0
xav3601 Messages postés 3390 Statut Membre 311
 
tu fais une boucle!
Car je crois pas que avec les parametres on puisse coller un range!
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

La solution par fichiers fermés demande que tu sois précis dans ta demande:
les fichiers sont ils dans le m^me dossier (répertoire) ?
ont ils la m^me structure (feuilles, plages à exporter) ?
les plages sont elles multicellules ou monocellules ?
si multicellules, les colonnes sont elles homogènes (textes, dates, nombres)... comporte elles des étiquettes (genre nom, prénom, adresse par exemple) ?

Il ne sera exporté que des données et aucun format

Ci joint un petit exemple qui parcourt un dossier et importe une cellule dans un classeur récapitulatif par une macroXL4 dite de walkenbach
http://www.cijoint.fr/cjlink.php?file=cj201006/cijgPzMi2y.zip

si il s'agit de plages, on pourra passer par la technologie ADO mais sans renseignements précis...
Je t'en envoie un exemple basique un peu plus tard...(fouilles dans mon grenier!)
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
ci joint exemple basique avec ADO
n'oublie d'adapter le chemin à ton ordi
http://www.cijoint.fr/cjlink.php?file=cj201006/cijjXBIXPX.zip
0
Cédric
 
Bonjour michel,

-alors oui les fichiers sont dans un même répertoire qui est selectionné par l'utilisateur lui même à chaque foi qu'il lance la macro
-ils ont la même structure : 5 feuilles par classeur qui sont toutes nomées pareil
-les plages monocellules et multicellules je ne sais pas exactement ce que c'est, mais je suppose que c'est du multicellules (si tu peux avoir une petite définition)
-les colones sont homogènes (une colone Nom, une Date, une Pourcentage, etc...)
-certaines cellules comporte des étiquettes mais pas toutes

pour les exporter je n'ai pas besoin de leur format mais seulement de la valeur de la cellule. Le format je le met directement dans mon tableau de synthèse.

Si tu peux trouver ton exemple sa serai parfait, je te remerci en tout cas pour l'attention que tu porte à mon problème !!

Cordialement,
Cedric
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
nos meesages se sont croisés§§§
au cas où
http://www.cijoint.fr/cjlink.php?file=cj201006/cijjXBIXPX.zip
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour tou(te)s,
Petite précision, les classeurs doivent être au normes d'une BD, Cad la première ligne représente les titres ou noms des champs, et il ne peut y avoir de ligne vide.
Il est plus façile d'ouvrir un classeur, de lire ce que l'ont veux, de le refermer, la configuration du classeur n'a pas d'importance dans cette solution.
A+

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour lhermite
Petite précision, les classeurs doivent être au normes d'une BD, Cad la première ligne représente les titres ou noms des champs

Faux: il suffit de mettre le paramêtre de connexion "Hdr" à "No" (hdr=header)

il est plus facile d'ouvrir.... a étudier au cas par cas et si on est pas pressé:100 fichiers à ouvrir et fermer...

mais je ne veux surtout pas déranger
0
Cédric
 
michel à tout compris,
mon code est déjà fait et fonctionne mais j'ouvre et je femre chaque classeur et sa met un temps fou. Problème : j'ai pas le temps.


par contre michel, peux tu m'aider encore un peu, je me suis mis au VB il n'y a que quelques petites semaines et j'ai encore un peu de mal.
Je suis perdu dans ton exemple : je ne comprend pas tout le fonctionnement.
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Re, t'expliquer ADO n'est pas évident, surtout si tu n'as que quelques semaines de VBA

ci joint lien vers un tuto
https://silkyroad.developpez.com/VBA/ClasseursFermes/

en ne négligeant pas d'aller sur les liens proposés...
0