VBA : Somme.si sur différents classeurs

F

Fréd

Guest
Bonjour,
Je souhaite, dans un tableau récapitulatif, faire une "somme.si". Jusque là pas de problème, cependant cette fonction pointe vers un nombre "n" de tableaux, qui peut varier à tout moment.
Ma question est simple, comment faire en sorte que cette somme.si pointe vers tous les classeurs concernés, que j'en créé ou que j'en ôte ?
Merci d'avance
Fréd
 
C

CBernardT

Guest
Bonjour Fréd

Je pense que par formule simple, cela n'est pas possible.

Cependant, par VBA, cela est faisable en ciblant les n classeurs ouverts par exemple.

Un petit exemple zip sera un plus pour trouver une solution la plus adéquate possible.

Cordialement

CBernardT
 
C

CBernardT

Guest
Bonsoir Fréd

Un essai de solution :

1- Le fichier RecapV1.xls contient la macro dans le module reports ;

2- Le fichier Essai.xls joint sert de fichier test dans le pour report des valeurs qu'il contient vers la feuille "Recap" du classeur RecapV1.xls ;

3- a)- La macro ouvre successivement les fichiers dont les noms sont inscrits dans la plage ("A2:A6") de la feuille "Liste des classeurs", ; Elle bug donc quand elle arrive au second fichier qui est absent (au moins sur ma machine) ;
b)- La macro passe ensuite en revue les mois de la plage "B4:M4" de la feuille "Recap" ; En fonction du mois inscrit, elle recherche les valeurs correspondante dans le classeur "essais.xls" (Comme dans les plages définies dans les formules Somme.si) et les reporte dans les lignes 5,7 et 9 ; A noter que les noms des mois ont été modifiés afin d'être en correspondance avec les noms des mois présents dans les colonnes des classeurs contenant les données à reporter ;
c)- Quand tous les reports sont réalisés, elle ferme le classeur "essais.xls" et tente d'ouvrir le classeur "CE 05 2541258.xls" mais Bug donc. Faire fin dans la fenêtre Visual basic qui s'ouvre et fermer la fenêtre Visual Basic Editor.

Afin de continuer plus avant, donnes moi ton avis sur ce qui est réalisé et
de plus, donnes moi les informations complémentaires pour savoir où reporter les valeurs contenues dans les autres classeurs ???

Cordialement

CBernardT
 
F

Fréd

Guest
Merci Bernard pour cette démonstration, je vais la tester de ce pas. En plus, peux-tu me dire si ce genre de macro peux me permettre d'implanter un nom de fichier (bien sûr concaténé avec les références de cellules nécessaires) dans la boîte de dialogue permettant de procéder à une consolidation ?
Merci d'avance de tes bons soins
Fréd
 
F

Fréd

Guest
Bonjour CBernardT,
Bravo, ça fonctionne impeccable, cependant, cette macro doit être la propriété du classeur (elle ne doit pas appartenir à un classeur de macros), ce qui oblige la personne qui dupliquera le classeur a modifier à chaque fois la macro en fonction du nouveau nom de fichier : peut-on lui donner un nom générique type « active.workbook » (ça existe) ?

Par ailleurs, la fonction « SumIf » pointe vers une zone précise : J5:J22 par exemple, or cette zone est modifiable : si elle commence toujours à la ligne 5, elle peut s’arrêter n’importe quand sur une séquence de 13 lignes (soit se terminer aux lignes 18, 31, 44…). Peut-on lui demander de partir de la ligne 5 et de rechercher la dernière ligne du tableau (sachant que les colonnes concernées vont de A à P et que seule la colonne I sera toujours complètement renseignée.

Enfin, je ne lis pas assez bien le VBA pour savoir si cette macro permet bien la somme de tous les classeurs de la liste dans la feuille RECAP ?

Ouf, voilà, merci du temps que tu prends,

À bientôt
Fréd
 
C

CBernardT

Guest
Bonjour Fréd

Je pense que l'on ne se comprend pas très bien, on va essayer d'améliorer ça !

1- Les macros sont dans un module du fichier RecapV1.xls, fichier qui reçoit les reports des autres classeurs, et non dans un fichier à part ;

2- La liste des noms des fichiers à reporter, placés dans la feuille "Liste des classeurs" peut-être allongée ou raccourcie, la prise en compte de ces évolutions peut-être automatisée ;

3- Effectivement, dans l’exemple, les fonctions SUMIF pointent sur des plages fixes qui correspondent aux plages définies dans les formules SOMME.SI du fichier de base. Elles peuvent évoluer vers des plages à longueur variable en commençant toutes à la ligne 5 ;

4- La question maintenant, la plus importante pour l’achèvement de la procédure. Une fois le report des valeurs du premier classeur dans les cellules de la feuille "Recap", que doit-il être fait des valeurs à reporter des autres classeurs ??? Faut-il les additionner aux reports précédents dans les mêmes cellules ? Faut-il les retrancher aux reports précédents dans les mêmes cellules ? Faut-il les reporter dans des tableaux placés en dessous équivalent au précédent ?

Cordialement

CBernardT
 
C

CBernardT

Guest
Re Fréd

Dis donc ! tu multiplies les posts comme une mitrailleuse, comment veux-tu que l'on s'en sorte et suivre le fil de la progression du sujet ? Nous ne sommes pas les seuls à lire nos propos et à pouvoir apporter une contribution ? C'est l'esprit même de ce forum ! Relis s'il te plait la charte pour ne pas commettre d'autres impairs.

Tu aurais pu dire dès le début que cela concerné le report des données de secteurs de ventes départementaux, on y aurait vu plus clair. Bon je quitte dans l'immédiat.

A+

CBernardT
 
F

Fréd

Guest
Et oui ! Pour les posts, c'est une erreur de manip, je n'ai pas compris comment c'est arrivé, mais quand j'ai fait "envoyer", le message est apparu comme nouveau. J'ai cru à une mauvaise manip et j'ai refait un envoi en enlevant Re : devant. C'était pareil.
En plus ça ne s'affichait pas dans le post ! J'ai quitté et je suis revenue, j'ai refait la manip : toujours pareil => j'ai arrêté avant de remplir complètement le forum.
N'empêche je ne sais pas pourquoi c'est arrivé, et je présente mes excuses à tous les membres du forum pour la gêne causée.

Pour ce qui est des secteurs, ils ne sont pas forcément départementaux, il y a des exceptions, c'est pourquoi je ne l'ai pas précisé.

Bonne après-midi,
et si je ne t'ai pas sur le forum d'ici là, passe, ainsi que tous les membres du forum, de bonnes fêtes de Noël.

Fréd
P.S. : j'espère ne pas créer d'autres posts : au cas où, par avance mille excuses.
 

Discussions similaires

Réponses
2
Affichages
694

Statistiques des forums

Discussions
312 499
Messages
2 089 002
Membres
104 002
dernier inscrit
SkrauzTTV