Recherche V dans plusieurs classeurs fermés

Résolu
Nuage75 Messages postés 23 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je dispose d'un dossier avec plusieurs sous dossiers dans lesquels se trouvent des classeurs excel en nombre aléatoire.
Tous ces classeurs sont tramés de la même façon.

J'ai un code qui me permet de lister sur les colonnes "A:C" :
- La racine de chaque fichier;
- Le nom du fichier;
- Un lien de téléchargement;

Un deuxième code me permet d'extraire sur les 6 colonnes suivantes et à partir de la liste des racines générées par le premier code, 6 cellules qui se trouvent dans un onglet "MAQUETTE" (identique sur chaque fichier).

Dans une nouvelle feuille de ce classeur j'essaie de mettre au point un troisième code qui a partir de la liste des racines générée par le premier code pourrait m'extraire de chaque fichier les lignes de l'onglet "MAQUETTE" dans lesquelles il y a inscrit "Sous total".

Le terme "Sous-total" n'est qu'une partie du texte contenu dans le cellule et le nombre de lignes contenant "Sous-total" est aléatoire.

Je suis un grand débutant dans le domaine et ait beaucoup de mal à mettre au point ce troisième code.

Merci pour votre aide

2 réponses

  1. Nuage75 Messages postés 23 Statut Membre 3
     
    j'y suis parvenu, voici le code

    Sub recup()

    Set f = ThisWorkbook.Sheets("Feuil1")
    'parcourir la colonne 4 (à partir de la ligne 7, jusqu'à la dernière cellule non-vide de cette même colonne)
    For lig = 7 To f.Cells(Rows.Count, 4).End(xlUp).Row
    'ouvrir chaque fichier dont le chemin d'accès et le nom sont renseignés en colonne D
    Workbooks.Open Filename:=f.Cells(lig, 4)
    'recopier en colonne F et G de ton fichier (celui contenant la macro), le contenu des cellules A16 et A19, d'une feuille nommée "MAQUETTE DEVIS" dans le ficher qui vient d'être ouvert
    ThisWorkbook.Sheets(1).Cells(lig, 9) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[A16]
    ThisWorkbook.Sheets(1).Cells(lig, 10) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[A19]
    ThisWorkbook.Sheets(1).Cells(lig, 11) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[E23]
    ThisWorkbook.Sheets(1).Cells(lig, 12) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[E24]
    ThisWorkbook.Sheets(1).Cells(lig, 13) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[E25]
    'refermer le fichier (celui dont le nom figure en colonne D)
    ActiveWorkbook.Close savechanges:=False
    Next lig
    End Sub
    3
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Bonjour,

      Merci de ton retour.
      Désolé de n'être pas revenu plus tôt, je n'ai pas eu de suivi sur ce sujet...
      A+
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,

    Ou en êtes vous dans l'avancement de ce code?
    Pourriez vous nous montrer le code tel que vous l'avez écrit jusqu'à présent?
    0
    1. Nuage75 Messages postés 23 Statut Membre 3
       
      Bonjour,

      Je repars d'un code existant :
      Sub recup()
      Range("I7").Select 'sélectionner la cellule de début
      Chemin = "D:\AJOURDAN\Mes Documents\ECOTEC 3eme ANNEE\PROJET D'ENTREPRISE\VBA FM\Devis\Devis 001\"
      Fichier = Dir(Chemin & "*.xls")
      Do While Fichier <> ""
      Workbooks.Open Filename:=Chemin & Fichier
      Set Feuille = ActiveWorkbook.Sheets("MAQUETTE DEVIS")

      ThisWorkbook.Activate
      ActiveCell.Value = Feuille.Range("C3").Value
      ActiveCell.Offset(0, 1).Value = Feuille.Range("A16").Value
      ActiveCell.Offset(0, 2).Value = Feuille.Range("A19").Value
      ActiveCell.Offset(0, 3).Value = Feuille.Range("E23").Value
      ActiveCell.Offset(0, 4).Value = Feuille.Range("E24").Value
      ActiveCell.Offset(0, 5).Value = Feuille.Range("E25").Value

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

      Cependant, je dois encore faire quelques modifs.
      J'aimerais que le Chemin ne soit pas rentré manuellement, mais que la macro se serve de la liste présente dans la colonne D de la feuille et au lieu de m'extraire les cellules A16; A19... E25, il me faut les lignes complètes contenant le texte sous total
      0