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 !
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
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.
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
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!
- 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.