[Excel] Macro : consolider 2 fich. en param.
Résolu
Arn's
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je cherche à consolider deux fichiers (plus exactement : les 3 premières colonnes de la troisième feuille de chaque fichier, mais peu importe) par l'intermédiaire d'une macro. Ne connaissant pas a priori le nom de ces deux fichiers, je demande à l'utilisateur de les choisir :
J'aimerais passer ces noms de fichiers, que je ne connais pas, en argument à la fonction consolidate. (J'ai conscience que mon vocabulaire n'est pas le bon.)
En fait, j'aimerais que, dans le bout de code suivant, les variables "Classeur1" et "Classeur2" soient interprétées, et remplacées par le nom de fichier qui correspond :
Je suppose que c'est simplement une question de syntaxe.
Merci d'avance pour vos réponses.
Je cherche à consolider deux fichiers (plus exactement : les 3 premières colonnes de la troisième feuille de chaque fichier, mais peu importe) par l'intermédiaire d'une macro. Ne connaissant pas a priori le nom de ces deux fichiers, je demande à l'utilisateur de les choisir :
Classeur1 = Application.GetOpenFilename("Classeurs Excel,*.xls") If Classeur1 = False Then Exit Sub Classeur2 = Application.GetOpenFilename("Classeurs Excel,*.xls") If Classeur2 = False Then Exit Sub
J'aimerais passer ces noms de fichiers, que je ne connais pas, en argument à la fonction consolidate. (J'ai conscience que mon vocabulaire n'est pas le bon.)
En fait, j'aimerais que, dans le bout de code suivant, les variables "Classeur1" et "Classeur2" soient interprétées, et remplacées par le nom de fichier qui correspond :
Workbooks.Open fileName:= _ "U:\MonChemin\Synth.xls" '(C'est le fichier de synthèse dans le quel je veux faire ma consolidation.) Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[Classeur1]Feuil3'!A:C" _ , _ "'U:\MonChemin\[Classeur2]Feuil3'!A:C" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Je suppose que c'est simplement une question de syntaxe.
Merci d'avance pour vos réponses.
A voir également:
- [Excel] Macro : consolider 2 fich. en param.
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
10 réponses
Bonjour,
En déclarant Classeur1 et Classeur2 en variables globales du module, elles peuvent être utilisées par toutes les fonctions du module.
;o)
En déclarant Classeur1 et Classeur2 en variables globales du module, elles peuvent être utilisées par toutes les fonctions du module.
;o)
Elles sont déjà déclarées en variables globales. Je pense que ce n'est pas le problème.
Je me suis mal exprimé, Consolidate est une méthode, et pas une fonction.
Je veux simplement consolider deux fichiers dont je ne connais pas le nom.
Ces deux noms sont stockés dans deux variables : "Classeur1" et "Classeur2".
En plus, "Classeur1" et "Classeur2" contiennent le chemin absolu (U:\MonChemin\Fichier1]), et pas le chemin relatif (Fichier1).
N'hésitez pas à me poser des questions si vous ne comprenez pas.
Je me suis mal exprimé, Consolidate est une méthode, et pas une fonction.
Je veux simplement consolider deux fichiers dont je ne connais pas le nom.
Ces deux noms sont stockés dans deux variables : "Classeur1" et "Classeur2".
En plus, "Classeur1" et "Classeur2" contiennent le chemin absolu (U:\MonChemin\Fichier1]), et pas le chemin relatif (Fichier1).
N'hésitez pas à me poser des questions si vous ne comprenez pas.
A l'exécution de ce code :
J'obtiens un message d'erreur : impossible d'ouvrir le fichier. (C'est normal, il s'agit de chemins absolus.)
Mais, même s'il s'agissait de chemins relatifs, est-ce la bonne syntaxe pour intégrer dans ces lignes des variables qui contiennent chacune un nom de fichier ?
Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[Classeur1]Feuil3'!A:C" _ , _ "'U:\MonChemin\[Classeur2]Feuil3'!A:C" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
J'obtiens un message d'erreur : impossible d'ouvrir le fichier. (C'est normal, il s'agit de chemins absolus.)
Mais, même s'il s'agissait de chemins relatifs, est-ce la bonne syntaxe pour intégrer dans ces lignes des variables qui contiennent chacune un nom de fichier ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai un sérieux doute car la fonction Cosolidate est utiliser pour consolider les données, en utilisant la fonction SUM.; alors que vous voulez intégrer un nom de fichier ?
J'ai un sérieux doute car la fonction Cosolidate est utiliser pour consolider les données, en utilisant la fonction SUM.; alors que vous voulez intégrer un nom de fichier ?
Oui, Consolidate permet de consolider des données. Ces données sont contenues dans les deux classeurs que je veux manipuler.
Si je savais à l'avance comment s'appellent ces deux classeurs (Fichier1.xls et Fichier2.xls, par exemple), j'aurais écrit ceci :
Mais je voudrais remplacer dans le code ci-dessus Fichier1.xls et Fichier2.xls par des variables qui contiennent les noms des fichiers désirés.
Comment faire ?
Si je savais à l'avance comment s'appellent ces deux classeurs (Fichier1.xls et Fichier2.xls, par exemple), j'aurais écrit ceci :
Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[Fichier1.xls]Feuil3'!A:C" _ , _ "'U:\MonChemin\[Fichier2.xls]Feuil3'!A:C" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Mais je voudrais remplacer dans le code ci-dessus Fichier1.xls et Fichier2.xls par des variables qui contiennent les noms des fichiers désirés.
Comment faire ?
Salut,
Je n'ai pas testé... Peut être ouvrir les fichiers avant de lancer cette procédure.
Dim NOMFICH As String, CHEMIN1 As String
CHEMIN1 = "U:\MonChemin\"
NOMFICH = CHEMIN1 & classeur1
Workbooks.Open Filename:=NOMFICH
NOMFICH = CHEMIN1 & classeur2
Workbooks.Open Filename:=NOMFICH
Windows("nom_du_fichier_qui_contient_ta_macro").Activate
Workbooks.Open fileName:= _
"U:\MonChemin\Synth.xls"
'(C'est le fichier de synthèse dans le quel je veux faire ma consolidation.)
Selection.Consolidate Sources:=Array( _
"'U:\MonChemin\[Classeur1]Feuil3'!A:C" _
, _
"'U:\MonChemin\[Classeur2]Feuil3'!A:C" _
), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Je n'ai pas testé... Peut être ouvrir les fichiers avant de lancer cette procédure.
Dim NOMFICH As String, CHEMIN1 As String
CHEMIN1 = "U:\MonChemin\"
NOMFICH = CHEMIN1 & classeur1
Workbooks.Open Filename:=NOMFICH
NOMFICH = CHEMIN1 & classeur2
Workbooks.Open Filename:=NOMFICH
Windows("nom_du_fichier_qui_contient_ta_macro").Activate
Workbooks.Open fileName:= _
"U:\MonChemin\Synth.xls"
'(C'est le fichier de synthèse dans le quel je veux faire ma consolidation.)
Selection.Consolidate Sources:=Array( _
"'U:\MonChemin\[Classeur1]Feuil3'!A:C" _
, _
"'U:\MonChemin\[Classeur2]Feuil3'!A:C" _
), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Nan, en fait je viens de comprendre ce qui n'allait pas (ça fait un bout de temps que je suis dessus) :
Dans ce bout de code :
Il fallait d'une part, pour interpréter les variables, écrire :
(avec des guillemets et des & au bon endroit, ce qui est loin d'être évident.)
Et d'autre part, écrire C1:C3 pour dire que je voulais les trois premières colonnes, au lieu de A:C :
Merci de t'être penché sur mon problème, en tous cas. (Une fois de plus.)
Même si ce n'est pas toi qui m'a apporté la solution, je trouve ça vraiment sympa d'aider les gens comme ça, j'admire.
Dans ce bout de code :
Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[Classeur1]Feuil3'!A:C" _ , _ "'U:\MonChemin\[Classeur2]Feuil3'!A:C" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Il fallait d'une part, pour interpréter les variables, écrire :
Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[" & Classeur1 & "]Feuil3'!A:C" _ , _ "'U:\MonChemin\[" & Classeur2 & "]Feuil3'!A:C" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
(avec des guillemets et des & au bon endroit, ce qui est loin d'être évident.)
Et d'autre part, écrire C1:C3 pour dire que je voulais les trois premières colonnes, au lieu de A:C :
Selection.Consolidate Sources:=Array( _ "'U:\MonChemin\[" & Classeur1 & "]Feuil3'!C1:C3" _ , _ "'U:\MonChemin\[" & Classeur2 & "]Feuil3'!C1:C3" _ ), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
Merci de t'être penché sur mon problème, en tous cas. (Une fois de plus.)
Même si ce n'est pas toi qui m'a apporté la solution, je trouve ça vraiment sympa d'aider les gens comme ça, j'admire.
hum hum euh Et Polux et pingu ils puent du c_l ???
Bonjour,
Il ne faut surtout rien penser de mal, je faisais juste remarquer qu'il m'avait remercié mais vous avait oublié tous les 2. Il a d'ailleurs rectifier cet oubli.
C'est pas très poli, mais chez nous c'est tombé dans le langage familier.
Excuse moi si je t'ai offensé d'une quelconque manière, ça partait en tous cas d'un bon sentiment.
Il ne faut surtout rien penser de mal, je faisais juste remarquer qu'il m'avait remercié mais vous avait oublié tous les 2. Il a d'ailleurs rectifier cet oubli.
C'est pas très poli, mais chez nous c'est tombé dans le langage familier.
Excuse moi si je t'ai offensé d'une quelconque manière, ça partait en tous cas d'un bon sentiment.