Extraire des cellules de plusieurs classeurs

Résolu
castel -  
 Gaz -
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
Configuration: Windows XP Internet Explorer 7.0  excel 2003

3 réponses

  1. m@rina Messages postés 27623 Date d'inscription   Statut Modérateur Dernière intervention   11 564
     
    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
    1. Anonyme
       
      Merci beaucoup M@rina
      cela marche ....du 1er coup
      Bravo
      0
    2. Alexia
       
      Génial!!!!!
      J'ai utiliser ton code et l'ai adapté à mes besoins et ça marche nikel!!!!
      0
  2. Adi
     
    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
  3. Gaz
     
    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