Fonction utilisant plusieur fichier excel

micpiscine -  
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

A voir également:

3 réponses

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
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+
0
micpiscine
 
il y a moyen de ne pas le faire manuellement? sachant que me noms de fichier se suivent?
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

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+
0
micpiscine
 
dès que j'utilise la fonction indirect un #REF! apparait
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149 > micpiscine
 
Condition Nécessaire et Suffisante : que le nom du fichier soit bon et que la feuille existe.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

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

0
micpiscine
 
Merci :) mais je me pers un peu dans le code pourrait tu le commenter pour que je sache ou écrire mes variables et mes nom de fichiers ? :)
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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)
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
0