Fonction utilisant plusieur fichier excel
micpiscine
-
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
jaurais une question pour vous je voudrais faire une fonction simple (somme dans mon cas) reliant plusieurs fichier excel
dans mon cas se sont des facture je voudrais additionner une case (A1 par exemple) de plusieurs fichier (disons 50) tous répertorier dans le même dossier
jaurais une question pour vous je voudrais faire une fonction simple (somme dans mon cas) reliant plusieurs fichier excel
dans mon cas se sont des facture je voudrais additionner une case (A1 par exemple) de plusieurs fichier (disons 50) tous répertorier dans le même dossier
A voir également:
- Fonction utilisant plusieur fichier excel
- Fichier bin - Guide
- Fichier epub - Guide
- Fonction si et excel - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
Bonjour,
Une solution simple consiste à reporter chaque valeur dans une colonne dédiée.
Exemple :
En A1 : ='C:\Users\Toto\Documents\[Classeur1.xlsm]Feuil1'!$A$1
En A2 : ='C:\Users\Toto\Documents\[Classeur2.xlsm]Feuil1'!$A$1
...
En A50 : ='C:\Users\Toto\Documents\[Classeur50.xlsm]Feuil1'!$A$1
En A51 : =SOMME(A1:A50)
A+
Une solution simple consiste à reporter chaque valeur dans une colonne dédiée.
Exemple :
En A1 : ='C:\Users\Toto\Documents\[Classeur1.xlsm]Feuil1'!$A$1
En A2 : ='C:\Users\Toto\Documents\[Classeur2.xlsm]Feuil1'!$A$1
...
En A50 : ='C:\Users\Toto\Documents\[Classeur50.xlsm]Feuil1'!$A$1
En A51 : =SOMME(A1:A50)
A+
Bonjour,
pour le faire "automatiquement par VBA
cellules additionnées en B1, somme restituée en A2, macro dans classeur "cible" feuil1
pour le faire "automatiquement par VBA
cellules additionnées en B1, somme restituée en A2, macro dans classeur "cible" feuil1
Sub additionner()
Dim Somme As Double
Dim recap As String, chemin As String, onglet As String
Dim fich As String
recap = ThisWorkbook.Name
onglet = "feuil1" ' A ADAPTER
chemin = ThisWorkbook.Path ' A ADAPTER
Application.ScreenUpdating = False
Range("A2:A100").ClearContents
ChDir chemin
fich = Dir("*.xls") 'si XL>=2007 xlsx ou xlsm
While fich <> ""
If fich <> recap Then
'source: instruction dite de "Walkenbach"
Somme = Somme + ExecuteExcel4Macro("'" & chemin & "\[" & fich & "]" & onglet & "'!R1C2") 'R1C2<==> B1
End If
fich = Dir
Wend
Range("A2") = Somme
End Sub
Bonjour
Tu as demandé:
je voudrais faire une fonction simple (somme dans mon cas) reliant plusieurs fichier excel
et
mes nom de fichiers ?
me fiant là dessus, je t'ai écris une macros qui parcourt le dossiers où on trouve tes 50 classeurs: on rend ce dossier actif (ch dir) et la boucle donne au fur et à mesure le nom des classeurs (tu n'as pas besoin de savoir le nom)
La fonction "dir" renvoie le nom du fichier en cours (variable "fich")
on emploie une ligne qui permet de ne pas ouvrir et refermer chaque classeur(gain de temps)et qui renvoie la valeur du classeur en cours cellule B1 de la feuille donnée par la variable "onglet" vers le classeur nommé par la variable "recap " qui additionne au fur et à mesure les valeurs des 50 classeurs
sans précision de ta part j'ai considéré que le classeur "cible" (recap) était dans le même dossier que les 50; sinon tu adaptes le chemin vers tes 50
et tu supprimes le if -end if
je te joins un petit exemple ou on collecte des dates au lieu de faire une somme
http://www.cjoint.com/c/EJcgTVdEhwq
Michel
Tu as demandé:
je voudrais faire une fonction simple (somme dans mon cas) reliant plusieurs fichier excel
et
mes nom de fichiers ?
me fiant là dessus, je t'ai écris une macros qui parcourt le dossiers où on trouve tes 50 classeurs: on rend ce dossier actif (ch dir) et la boucle donne au fur et à mesure le nom des classeurs (tu n'as pas besoin de savoir le nom)
ChDir chemin--
fich = Dir("*.xls") 'si XL>=2007 xlsx ou xlsm
While fich <> ""
....
fich = Dir
Wend
La fonction "dir" renvoie le nom du fichier en cours (variable "fich")
on emploie une ligne qui permet de ne pas ouvrir et refermer chaque classeur(gain de temps)et qui renvoie la valeur du classeur en cours cellule B1 de la feuille donnée par la variable "onglet" vers le classeur nommé par la variable "recap " qui additionne au fur et à mesure les valeurs des 50 classeurs
sans précision de ta part j'ai considéré que le classeur "cible" (recap) était dans le même dossier que les 50; sinon tu adaptes le chemin vers tes 50
et tu supprimes le if -end if
je te joins un petit exemple ou on collecte des dates au lieu de faire une somme
http://www.cjoint.com/c/EJcgTVdEhwq
Michel
Merci de ne pas ouvrir plusieurs fils pour la même question.
=INDIRECT("'C:\Users\Toto\Documents\[Classeur" & (1000+ LIGNE()) & ".xlsm]Feuil1'!$F$36")
et tu tires la formule vers le bas.
A+