Extraire des cellules de plusieurs classeurs

Résolu/Fermé
castel - 19 sept. 2009 à 00:05
 Gaz - 15 mai 2013 à 18:12
Bonjour,

Ma demande est : ecrire en visual basic excel (ou faire une macro excel idéalement) pour faire ceci :

Dans un repertoire AAA, j'ai une cinquantaine de fichiers excel, constitués chacun de 5 feuilles.
(Seules 6 cellules de la feuil2 m'intéressent dans chacun de ces fichiers)
Pour chaque fichier, Je voudrai aller piocher les 6 cellules suivantes de cette feuil2 : C3 C7 E5 E13 G24 E25
puis les coller dans cet ordre sur une ligne d' une nouvelle feuille d'un fichier excel baptisée "synthese.xls".

Les 6 valeurs récupérées dans le fichier 1 seraient collées sur la ligne 1 de "synthese.xls" , c'est à dire en A1 B1 C1 D1 E 1 F1
Les 6 valeurs récupérées dans le fichier 2 seraient collées sur la ligne 2 de "synthese.xls" , c'est à dire en A2 B2 C2 D2 E2 F2
....
Les 6 valeurs récupérées dans le fichier n seraient collées sur la ligne 1 de "synthese.xls" , c'est à dire en An Bn Cn Dn En Fn

Important : le nombre de fichiers excel situés dans AAA varie dans le temps.

Il faut donc gérer une boucle de 1 à n selon le nombre de fichiers présents dans AAA, sans en oublier et sans lire 2 fois le même

Merci

Castel
A voir également:

3 réponses

m@rina Messages postés 20907 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 22 septembre 2024 11 327
19 sept. 2009 à 12:28
Bonjour,

Essaie ceci :

Sub recup()
Range("A1").Select 'sélectionner la cellule de début
Chemin = "C:\mon dossier AAA\"
fichier = Dir(Chemin & "*.xls")
Do While fichier <> ""
Workbooks.Open Filename:=Chemin & fichier
Set feuille = ActiveWorkbook.Sheets("Feuil2")

ThisWorkbook.Activate
ActiveCell.Value = feuille.Range("C3").Value
ActiveCell.Offset(0, 1).Value = feuille.Range("C7").Value
ActiveCell.Offset(0, 2).Value = feuille.Range("E5").Value
ActiveCell.Offset(0, 3).Value = feuille.Range("E13").Value
ActiveCell.Offset(0, 4).Value = feuille.Range("G24").Value
ActiveCell.Offset(0, 5).Value = feuille.Range("E25").Value

Windows(fichier).Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
fichier = Dir ' Fichier suivant
Loop
End Sub


m@rina
3
Merci beaucoup M@rina
cela marche ....du 1er coup
Bravo
0
Génial!!!!!
J'ai utiliser ton code et l'ai adapté à mes besoins et ça marche nikel!!!!
0
Bonjour,

C'est exactement la fonction qu'il me faudrait pour un ami, mais ce dernier est sur Mac. Quelqu'un sait-il comment adapter cette macro pour Excel 2004, car en l'état elle ne fonctionne pas et je n'y connait malheureusement pas grand chose. En vous remerciant...
1
J'ai utilisé ce code qui fonctionne trés bien mais je n'arrive pas a l'adapter:
je veux la cellule C3 de la feuille 1 et la cellule C5 de la feuille 3.
Quel code ajouter svp?
Merci
0