VBA - gerer une liste de chemin d'accés

  • Initiateur de la discussion Initiateur de la discussion guez
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guez

XLDnaute Nouveau
Bonjour,

La macro ci dessous fonctionne parfaitement. Elle extrait 2 données des fichiers excel présent dans 1 dossier. (une feuille parametrage permet de selectionner la source). La finalité de cette macro est d'extraire 2 données des fichiers excel présent dans 32 dossiers. Les 32 sources sont inscrit dans ma page parametrage.

Outre la solution de répeter mon code 32 fois en changeant le chemin d'accés à chaque fois, est-il possible de faire autrement?

Comme vous pouvez le voir dans le code, la 1ere source est la cellule K19, les autres sont en dessous jusque K50.

J'espere être claire.🙄


Merci.



Code:
Sub recup()

'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String
Source = Sheets("PARAMETRES").Range("K19")
Chemin = Source ' chemin d'accés
fichier = Dir(Chemin & "*????-????-??.xls")
Do While fichier <> ""
Workbooks.Open Filename:=Chemin & fichier

'localisation des données à extraire
Dim Effectif As String, NumGestion As String
Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
    
'Extraction des données
ThisWorkbook.Sheets("AjoutEffectif").Activate
ActiveCell.Value = Effectif
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = NumGestion

Windows(fichier).Close savechanges:=False ' fermeture du fichier sources sans enregistrer les changements
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
fichier = Dir ' Fichier suivant
Loop
End Sub
 
Re : VBA - gerer une liste de chemin d'accés

A tester:

Code:
Sub recup()
'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String

ligne=ActiveCell.row
colonne=ActiveCell.column

for n=19 to 50

Source = Sheets("PARAMETRES").Range("K" & n)
Chemin = Source ' chemin d'accés
fichier = Dir(Chemin & "*????-????-??.xls")

Do While fichier <> ""
Workbooks.Open Filename:=Chemin & fichier

'localisation des données à extraire
Dim Effectif As String, NumGestion As String
Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
    
'Extraction des données
ThisWorkbook.Sheets("AjoutEffectif").Activate
'ActiveCell.Value = Effectif
'ActiveCell.Offset(0, 1).Select
'ActiveCell.Value = NumGestion

Cells(ligne+n-19,colonne)=Effectif
Cells(ligne+n-19,colonne+1)=NumGestion
Windows(fichier).Close savechanges:=False ' fermeture du fichier sources sans enregistrer les changements
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
fichier = Dir ' Fichier suivant
Loop

next
End Sub
 
Dernière édition:
Re : VBA - gerer une liste de chemin d'accés

MERCI pierre Jean

la macro se lance par contre elle extrait les données sur la même cellule a chaque fois 🙁

Comme il ya 2 donnée a extraire par fichier, il faut que j'ai les données du fichier 1 sur cellule A1 et B1, puis pour le fichier 2 A2 et B2... et ainsi de suite
 
Dernière édition:
Re : VBA - gerer une liste de chemin d'accés

Curieux !!
il me semblait avoir géré cela

vois comme ceci:

Code:
Sub recup()
'Parametre d'importation
ThisWorkbook.Activate
Dim Source As String

ligne=1 'ligne d'ecriture
colonne=1 ' colonne d'ecriture  

for n=19 to 50

Source = Sheets("PARAMETRES").Range("K" & n)
Chemin = Source ' chemin d'accés
fichier = Dir(Chemin & "*????-????-??.xls")

Do While fichier <> ""
Workbooks.Open Filename:=Chemin & fichier

'localisation des données à extraire
Dim Effectif As String, NumGestion As String
Effectif = Sheets("BALANCE").Range("D89")
NumGestion = Sheets("PARAMETRES").Range("D9")
    
'Extraction des données
ThisWorkbook.Sheets("AjoutEffectif").Activate
'ActiveCell.Value = Effectif
'ActiveCell.Offset(0, 1).Select
'ActiveCell.Value = NumGestion

Cells(ligne,colonne)=Effectif
Cells(ligne,colonne+1)=NumGestion
ligne=ligne+1
Windows(fichier).Close savechanges:=False ' fermeture du fichier sources sans enregistrer les changements
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
fichier = Dir ' Fichier suivant
Loop

next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Réponses
3
Affichages
673
Réponses
5
Affichages
477
Retour