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 -
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 :
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.
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:
- Récupération de données ds un classeur excel
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Imprimer un classeur excel sur mac - Guide
- Word et excel gratuit - Guide
- Logiciel de récupération de données - Guide
3 réponses
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!)
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!)
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
-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
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)
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)
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
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
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.
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.
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...
ci joint lien vers un tuto
https://silkyroad.developpez.com/VBA/ClasseursFermes/
en ne négligeant pas d'aller sur les liens proposés...
merci pour l'interet que tu porte à mon problème !
Peux tu m'expliquer comment fonctionne la fonction parameter?
merci
" = '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 []
Windows(LabelDoc).Activate
Sheets("Liste").Activate
y = Range("NomBU").Value
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
Car je crois pas que avec les parametres on puisse coller un range!