Commande 'Consolider' et macro

Pierre-Henry

XLDnaute Junior
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 :confused:)

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

  • Macro_consolider.xls
    33 KB · Affichages: 46
  • Macro_consolider.xls
    33 KB · Affichages: 58
  • Macro_consolider.xls
    33 KB · Affichages: 50
Dernière édition:

Catrice

XLDnaute Barbatruc
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

  • Macro_consolider.xls
    36 KB · Affichages: 75
  • Macro_consolider.xls
    36 KB · Affichages: 70
  • Macro_consolider.xls
    36 KB · Affichages: 77

Pierre-Henry

XLDnaute Junior
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
 

Catrice

XLDnaute Barbatruc
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:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 749
Messages
2 091 623
Membres
105 009
dernier inscrit
aurelien76110