Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

lizanne828

XLDnaute Nouveau
Bonjour,

Je cherche à récupérer les données de fichiers tous construits pareils, dont les noms sont village1 , village2, village3 etc... Je souhaiterai mettre par la suite ces données dans le fichier où je suis en train d'écrire la macro.
Je tiens un début, qui marche:

Sub boucle_fichiers()

Dim i As Integer

MsgBox ExecuteExcel4Macro("'C:\Users\Caroline\Desktop\macro fichiers\[village1]feuil1'!R3C5")

End Sub

Le msgbox me renvoie la bonne valeur, mais je voudrais intégrer une variable dans mon nom de fichier genre

dim i as integer

for i=1 to 10

MsgBox ExecuteExcel4Macro("'C:\Users\Caroline\Desktop\macro fichiers\[village"&i&"]feuil1'!R3C5")

Je sais que la synthaxe n'est pas bonne, et je n'arrive pas à trouver la bonne synthaxe!

Quelqu'un pourrait-il m'aider? ou peut-être qu'on ne peut pas intégrer une variable dans ce type de fonction?

Merci!
 

Modeste

XLDnaute Barbatruc
Re : Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

Bonsoir lizanne828,

Chez moi, ça fonctionne avec la syntaxe dont tu dis qu'elle est mauvaise (à condition de faire précéder et suivre chaque '&' d'une espace)

Je dois aussi ajouter l'extension (mais si tu dis que chez toi ça fonctionne sans, c'est lié aux options d'affichage de l'Explorateur, sans doute)


[Edit:] en attendant ton retour et pour être complet, le même résultat peut-être obtenu via la consolidation de données (peut-être un peu fastidieux si tu as de nombreux fichiers)
On peut également créer cette première formule:
Code:
="='C:\Users\Caroline\Desktop\macro fichiers\[village"&LIGNES($1:1)&".xls]feuil1'!E3"
- la recopier vers le bas jusqu'à obtenir le n° du dernier village
- sélectionner la plage, la copier et faire un collage spécial > Valeurs
- sur le résultat, Données > Convertir > Type délimité > Terminer ... chez moi, les formules se calculent à ce moment!

(ici aussi, je dois ajouter l'extension)
 
Dernière édition:

lizanne828

XLDnaute Nouveau
Re : Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

En effet, en fait ça marche, si je mets le bon nombre de fichiers dans ma boucle, par exemple j'ai 4 fichiers:

Sub boucle_fichiers()

Dim i As Integer

For i = 1 To 4

Sheets("Feuil1").Range(Cells(2, i), Cells(2, i)).Value = ExecuteExcel4Macro("'F:\Essais de macros fichiers\[village" & i & "]feuil1'!R3C5")

Next i

End Sub

Mais ma syntaxe effectivement est bonne, je ne me faisais pas du tout confiance :p

Par contre, aucun message d'erreur seulement si je sais jusqu'à quelle valeur peut prendre i. Y aurait-il du coup un moyen de définir i en lui disant For i=1 To x, avec x étant le nombre de fichiers "village" de mon dossier? (quel code définirait ce nombre?)

Merci !!
 

Modeste

XLDnaute Barbatruc
Re : Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

Re,

Je ne sais pas si ce n'est pas inutilement compliqué :confused:
Les lignes suivantes permettent de compter les fichiers en un emplacement précis (cet emplacement a changé entre tes 2 messages??), dont le nom commence par "village":
VB:
Sub test()
chemin = "F:\Essais de macros fichiers\"
f = Dir(chemin & "village*")
Do While f <> ""
    cpt = cpt + 1
    f = Dir
Loop
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

Re²,

Sur base de ce qui précède, il me semble que ceci serait déjà plus simple:
VB:
Sub test()
chemin = "F:\Essais de macros fichiers\"
f = Dir(chemin & "village*")
lig = 2
Do While f <> ""
    ActiveSheet.Cells(lig, 15).Formula = "='" & chemin & "[" & f & "]Feuil1'!H20"
    lig = lig + 1
    f = Dir
Loop
End Sub

Mais, comme disait l'autre: "c'est vous qui voyez!"
 

lizanne828

XLDnaute Nouveau
Re : Fonction ExecuteExcel4Macro pour récupérer des données dans fichiers fermés

C'est génial!!! C'est EXACTEMENT ce que je voulais faire!
Et ça marche, et en plus comme d'hab je m'étais compliqué la vie!

Ouf!

Un grand merci!

Je pense que ça servira à d'autres, j'ai parcouru plein de forums où bcp avaient la même question, mais que des réponses tarabiscotées!

pourquoi faire simple quand on peut faire compliqué, hein :D
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll