Recherche V dans plusieurs classeurs fermés

Résolu/Fermé
Nuage75 Messages postés 22 Date d'inscription mardi 17 novembre 2015 Statut Membre Dernière intervention 11 décembre 2015 - 20 nov. 2015 à 14:37
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 8 déc. 2015 à 12:38
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
A voir également:

2 réponses

Nuage75 Messages postés 22 Date d'inscription mardi 17 novembre 2015 Statut Membre Dernière intervention 11 décembre 2015 3
8 déc. 2015 à 12:30
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 déc. 2015 à 12:38
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 nov. 2015 à 09:38
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
Nuage75 Messages postés 22 Date d'inscription mardi 17 novembre 2015 Statut Membre Dernière intervention 11 décembre 2015 3
30 nov. 2015 à 11:44
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