Nom de fichiers avec 2 variables + recopie de zone vers 1 fichier

3 réponses
Avatar
stormtroopertk1230
Bonjour,

J'aurai besoin de votre aide car je voudrai recopier une zone de données de fichier range(D60:K65) sachant que je voudrai que l'ouverture des fichiers et la sélection de la zone se fasse automatiquement.

Voiçi ce que j'ai pour commencer :

Le mois1 correspond au n° du répertoire du mois.
Le mois2 correspond au n° du mois du fichier.
Le i doit être variant car il se rapporte à des terminaisons de fichier

Dim Mois1$, Mois2$, pFld$, f$
i = JA_
i1 = SN_

Mois1 = Worksheets("Menu").Range("C10").Activate
Mois2 = Worksheets("Menu").Range("C11").Activate

pFld = "Chemin" & Mois1
f = Dir(pFld)
Do Until f = ""
    If f Like "Feuille_" & i & Mois2 ".xlsm" Then
    Workbooks.Open pFld & f
    End If
    f = Dir()
Next i
Loop

End Sub

3 réponses

Avatar
MichD
Bonjour,

Ton problème est surement très complexe. Je n'arrive même pas à comprendre ta question!

A ) Comme ç'est toi, il me semble qu'avec un petit effort, le nom des variables pourrait être plus parlant.

B ) Chemin du répertoire où sont les fichiers
Chemin = c:ExcelMesFichier
NoMois = 5 'à déterminer
Répertoire = NoMois NoMois pour numéro du répertoire du mois
CheminComplet = Chemin & Répertoire & ""

C ) Différentes fin de fichiers...un nom de fichier a l'air de quoi ? Un exemple aurait été bien venu.
Les 2 fins de fichiers dans un tableaul
FinFichier = Array("JA_","SN_")

D ) Adresse de la plage à récupérer : D60:K65
Adr = "D60:K65"

E ) les données à récupérer sont dans quelle feuille des classeurs ? Nom de la feuille
NomFeuille = "toto"

F ) Tu veux copier les données récupérer OÙ ? Dans quelle feuille ? Nom de cette feuille ?
Veux-tu récupérer seulement les données ou les données + le format de cellules des fichiers sources ?
FeuilleDest = "Feuil1"

La macro pourrait ressembler à ceci :
'------------------------------------------------
For each Elt In FinFichier
NomFichier = "*" & Elt & ".xls*"
Fichier = dir(CheminComplet & NomFichier)
Do While Fichier <>""
Set Wk = Workbooks.open(chemincomplet & fichier)
With Wk.Worksheets(NomFeuille)
DerLig = ThisWorkbook.worksheets(FeuilleDest).Range("A65536").end(xlup).row) +1
.Range(Adr).copy ThisWorkbook.worksheets(FeuilleDest).range("A" & DerLig)
End With
Wk.Close
Fichier = Dir()
Loop
'------------------------------------------------


MichD
------------------------------------------

"stormtroopertk1230" a écrit dans le message de groupe de discussion :

Bonjour,

J'aurai besoin de votre aide car je voudrai recopier une zone de données de
fichier range(D60:K65) sachant que je voudrai que l'ouverture des fichiers et la
sélection de la zone se fasse automatiquement.

Voiçi ce que j'ai pour commencer :

Le mois1 correspond au n° du répertoire du mois.
Le mois2 correspond au n° du mois du fichier.
Le i doit être variant car il se rapporte à des terminaisons de fichier

Dim Mois1$, Mois2$, pFld$, f$
i = JA_
i1 = SN_

Mois1 = Worksheets("Menu").Range("C10").Activate
Mois2 = Worksheets("Menu").Range("C11").Activate

pFld = "Chemin" & Mois1
f = Dir(pFld)
Do Until f = ""
If f Like "Feuille_" & i & Mois2 ".xlsm" Then
Workbooks.Open pFld & f
End If
f = Dir()
Next i
Loop

End Sub
Avatar
stormtroopertk1230
MichD a écrit le 02/12/2011 à 13h52 :
Bonjour,

Ton problème est surement très complexe. Je n'arrive même
pas à comprendre ta question!

A ) Comme ç'est toi, il me semble qu'avec un petit effort, le nom des
variables pourrait être plus parlant.

B ) Chemin du répertoire où sont les fichiers
Chemin = c:ExcelMesFichier
NoMois = 5 'à déterminer
Répertoire = NoMois NoMois pour numéro du
répertoire du mois
CheminComplet = Chemin & Répertoire & ""

C ) Différentes fin de fichiers...un nom de fichier a l'air de quoi ? Un
exemple aurait été bien venu.
Les 2 fins de fichiers dans un tableaul
FinFichier = Array("JA_","SN_")

D ) Adresse de la plage à récupérer : D60:K65
Adr = "D60:K65"

E ) les données à récupérer sont dans quelle
feuille des classeurs ? Nom de la feuille
NomFeuille = "toto"

F ) Tu veux copier les données récupérer OÙ ? Dans
quelle feuille ? Nom de cette feuille ?
Veux-tu récupérer seulement les données ou les
données + le format de cellules des fichiers sources ?
FeuilleDest = "Feuil1"

La macro pourrait ressembler à ceci :
'------------------------------------------------
For each Elt In FinFichier
NomFichier = "*" & Elt & ".xls*"
Fichier = dir(CheminComplet & NomFichier)
Do While Fichier <>""
Set Wk = Workbooks.open(chemincomplet & fichier)
With Wk.Worksheets(NomFeuille)
DerLig =
ThisWorkbook.worksheets(FeuilleDest).Range("A65536").end(xlup).row)
+1
.Range(Adr).copy ThisWorkbook.worksheets(FeuilleDest).range("A" &
DerLig)
End With
Wk.Close
Fichier = Dir()
Loop
'------------------------------------------------


MichD
------------------------------------------

"stormtroopertk1230" a écrit dans le message de groupe de
discussion :

Bonjour,

J'aurai besoin de votre aide car je voudrai recopier une zone de données
de
fichier range(D60:K65) sachant que je voudrai que l'ouverture des fichiers et
la
sélection de la zone se fasse automatiquement.

Voiçi ce que j'ai pour commencer :

Le mois1 correspond au n° du répertoire du mois.
Le mois2 correspond au n° du mois du fichier.
Le i doit être variant car il se rapporte à des terminaisons de
fichier

Dim Mois1$, Mois2$, pFld$, f$
i = JA_
i1 = SN_

Mois1 = Worksheets("Menu").Range("C10").Activate
Mois2 = Worksheets("Menu").Range("C11").Activate

pFld = "Chemin" & Mois1
f = Dir(pFld)
Do Until f = ""
If f Like "Feuille_" & i & Mois2 ".xlsm" Then
Workbooks.Open pFld & f
End If
f = Dir()
Next i
Loop

End Sub


Merci pour cette 1ère réponse.
Certes, je suis allé un peu vite concernant ma demande que je vais reformuler.

1) Ouverture des fichiers :
J’ai 12 répertoires numérotés de 1 à 12, 1 répertoire pour chaque mois.
Dans chaque répertoire, j’ai un certain nombre de fichiers intitulé de la manière suivante :
Feuille_XA_112011.xlms, Feuille_XB_112011.xlms, Feuille_XC_112011.xlms etc…

Je voudrais que la macro puisse ouvrir le Répertoire 11 en fonction de la cellule C10 de ma feuille « Menu » du fichier « suivi_2011.xlsm » qui aura pour valeur 11.
Je voudrai aussi que la macro puisse gérer les variables _XA_, _XB, _XC_ & MM2011.xlms de manière qu’elle puisse tous les ouvrir.

2) Copie des Données vers Fichier Final « suivi_2011.xlsm »:
Chaque fichier -> Feuille_XA_112011.xlms, Feuille_XB_112011.xlms, Feuille_XC_112011.xlms etc… comportent tous la même synthèse au même endroit soit la Range(D60 :K65)

Je voudrai ensuite que ces différentes Range(D60 :K65) puissent se copier à différents endroit de la feuille 11 du fichier « suivi_2011.xlsm »
Par exemple :
La synthèse Range(D60 :K65) du fichier Feuille_XA_112011.xlms devra se copier sur l’onglet 11 du fichier « suivi_2011.xlsm » aux coordonnées (D6 :K10)
La synthèse Range(D60 :K65) du fichier Feuille_XB_112011.xlms devra se copier sur l’onglet 11 du fichier « suivi_2011.xlsm » aux coordonnées (D16 :K20) etc…

Merci de votre aide.
Avatar
MichD
Certes, je suis allé un peu vite concernant ma demande que je vais reformuler.

1) Ouverture des fichiers :
J’ai 12 répertoires numérotés de 1 à 12, 1 répertoire pour chaque mois.
Dans chaque répertoire, j’ai un certain nombre de fichiers intitulé de la
manière suivante :
Feuille_XA_112011.xlms, Feuille_XB_112011.xlms, Feuille_XC_112011.xlms etc…

Je voudrais que la macro puisse ouvrir le Répertoire 11 en fonction de la
cellule C10 de ma feuille « Menu » du fichier « suivi_2011.xlsm » qui aura pour
valeur 11.
Je voudrai aussi que la macro puisse gérer les variables _XA_, _XB, _XC_ &
MM2011.xlms de manière qu’elle puisse tous les ouvrir.


| Copie des Données vers Fichier final « suivi_2011.xlsm
**** Dans quelle feuille, où dans la feuille, à partir de l'adresse A1 ?

| La synthèse Range(D60 :K65) du fichier Feuille_XA_112011.xlms devra se copier
| sur l’onglet 11 du fichier « suivi_2011.xlsm » aux coordonnées (D6 :K10)
| La synthèse Range(D60 :K65) du fichier Feuille_XB_112011.xlms devra se copier
| sur l’onglet 11 du fichier « suivi_2011.xlsm » aux coordonnées (D16 :K20) etc…
****Avant d'écrire la macro, il faut un tableau clair pour chaque fichier, si tu veux, tu
peux utiliser une feuille que tu masqueras par la suite.... sur cette feuille, ou tu peux
utiliser des variables, mais l'information doit être complète...

Nom du fichierÀouvri - Nom de la feuilleÀouvrir - Adresse de la première cellule où seront copiées les données
dans la feuille de
destination

| Je voudrai aussi que la macro puisse gérer les variables _XA_, _XB, _XC_ &
****Est-ce que la liste est complète ? Si tu en as omis, qui va les ajouter ?

La programmation est un exercice terre-à-terre. Il faut tout dire, la procédure ne devine rien!

La procédure suggérée est presque complète... la procédure finale aura la même structure
Certes, elle a besoin d'être mise à jour selon les nouvelles données que tu ajouteras, les
variables ont besoin d'être déclarées...Si tu fais l'effort de comprendre pas à pas ce que la
macro fait, tu vas vite de rendre compte de l'information requise pour compléter la macro.

'-----------------------------------------
Sub Test()
'Déclaration des variables : à faire

'Renseigner la valeur que doivent avoir les variables au départ : à faire

'Le coeur de la procédure :
For each Elt In FinFichier
NomFichier = "*" & Elt & ".xls*"
Fichier = dir(CheminComplet & NomFichier)
Do While Fichier <>""
Set Wk = Workbooks.open(chemincomplet & fichier)
With Wk.Worksheets(NomFeuille)
DerLig = ThisWorkbook.worksheets(FeuilleDest).Range("A65536").end(xlup).row) +1
.Range(Adr).copy ThisWorkbook.worksheets(FeuilleDest).range("A" & DerLig)
End With
Wk.Close
Fichier = Dir()
Loop
End Sub
'-----------------------------------------