Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Commande 'Consolider' et macro

  • Initiateur de la discussion Initiateur de la discussion Pierre-Henry
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pierre-Henry

Guest
Bonjour à tous,
J'ai un petit souci, qui ne devrait pas en rester longtemps un au vu des capacités de pas mal de monde ici....🙂

Je voudrais créer une macro qui permette de consolider le tableau compris entre les cellules A1 et K12, par exemple, sur ma feuille courante (ces coordonnées sont constantes, ce qui simplifie l'affaire je suppose).
Toujours est-il que lorsque j'enregistre ma macro (car il n'y a que comme ça que je sais faire....), j'obtiens le code VBA suivant :
Code:
Sub Consolider()
'
' Consolider Macro
'

'
    Selection.Consolidate Sources:="[Classeur1]Feuil1!R1C1:R12C11", Function:= _
        xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
End Sub

Ce qui me gêne, c'est la partie "[Classeur1]Feuil1!", car elle m'empêche d'appliquer la macro sur la Feuil2 par exemple, bien que ce soit celle sur laquelle je me trouve (ça ressemble à du charabia, mais je pense que c'est à peu près compréhensible 😕)

Quelqu'un pourrait-il m'aider?
Merci d'avance!

EDIT : en accord avec ce que j'ai écrit plus haut, le fichier joint ne fonctionne pas, puisque j'ai renommé mon classeur! Pour que la macro s'exécute correctement, il faut le re-nommer en Classeur1.xls
 

Pièces jointes

Dernière modification par un modérateur:
Re : Commande 'Consolider' et macro

Bonsoir,

Tu peux t'inspirer de ceci :

Sub Consolider()
Range("A15").Consolidate Sources:="[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name & "!" & ActiveSheet.Range("B2").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Function:=xlSum, TopRow:=True, LeftColumn:=True
End Sub

Voir le fichier joint
 

Pièces jointes

Re : Commande 'Consolider' et macro

Merci beaucoup! Tout un lot de fonctions que je ne connaissais pas!

Par curiosité (mais ça risque d'être utile dans mon projet plus concret...), je ne vois pas où tu as mis les coordonnées du tableau à consolider, je veux dire que ma cellule K12, qui est tout de même importante, n'est jamais mentionnée....il y a une astuce cachée? Un coup de chance? (sincèrement j'émets l'hypothèse mais je n'y crois pas 🙂 )

Pourrais-tu m'éclairer, et m'indiquer en général où il faut mettre ça.

Merci d'avance
 
Re : Commande 'Consolider' et macro

Bonsoir,

ActiveWorkbook.Name recupere le nom du classeur en cours
ActiveSheet.Name recupere le nom de la feuille en cours
ActiveSheet.Range("B2").CurrentRegion.Address(ReferenceStyle:=xlR1C1) recupere la zone de données courante contenant des données à partir de la cellule B2 (tu peux mettre A2 ou B1 ou A1) et construit l'adresse en reference "R1C1" (attendu par la fonction consolider) plutot que A1:K12

Pour que CurrentRegion fonctionne, il ne faut pas qu'il y ait de colonne ou de ligne completement vide. Si tu as toujours au moins les entetes sans trou (en ligne 1 et colonne A) ca fonctionnera meme s'il manque des données.

Pour mieux voir, essaye ça :

Sub Test2()
ActiveSheet.Range("B2").CurrentRegion.Select
End Sub
 
Dernière édition:
Re : Commande 'Consolider' et macro

Merci beaucoup, c'est très clair et parfaitement adapté à ce que je dois faire.
Il ne me reste plus qu'à noter tout ça au chaud et à te souhaiter une bonne nuit!

Merci encore!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…