variable dans declaration de plage pour T C D

  • Initiateur de la discussion Initiateur de la discussion treza88
  • 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 !

treza88

XLDnaute Occasionnel
Bonsoir à tous

Je voudrais savoir pourquoi ma variable PlageCell (situé à l'endroit 'Feuil1!c1: PlageCell').) à l'execution dela macro me donne le message d'erreur 'reference non valide'.
le code sert a lancer la création d'un tableau croisé dynamique.

Mon debut de code est le suivant:

Dim PlageCell As Variant

Set lastCell = Range('b65536').End(xlUp)
Set zone = Range(lastCell, lastCell)
Range(lastCell, lastCell).Select
PlageCell = ActiveCell.Address

'Range(lastCell, lastCell).Offset(1, -1).Select
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
'Feuil1!c1: PlageCell').CreatePivotTable TableDestination:='', TableName:= _
'T c d', DefaultVersion:=xlPivotTableVersion10

Si je remplace PlageCell par C10 par exemple ç passe.

Comment puis intégrer ma variable dans le code

Si quelqu'un peut m'aider.
Merci

Message édité par: treza88, à: 28/06/2006 21:55

Message édité par: treza88, à: 28/06/2006 22:34

Message édité par: treza88, à: 28/06/2006 22:36
 
salut treza88
Arfff pas évident à comprendre tu aurais du coller le code sans Balise
tu veux obtenir l'équivalent de
Feuil1! C1 : B10 mais en obtenant B10 via une variable
donc quand tu récupères la derniere cellule via
Set LastCell = Range('b65536').End(xlUp).Address(0,0) te donnera par exemple B10
bonne fin de soirée
 
Merci chTi160

Mais c'est pas pour recuperer l'adresse dans la variable qu'est le probleme c'est pour la declaration de la plage du TCD:

Feuil1!c1: PlageCell

Cette ecriture ne fonctionne pas.
Alors que:

Feuil1!c1:B10

Fonctionne tres bien, comment puisje ecrire l'equivalent mais avec une variable?

Merci
 
Merci chTi160

Mais c'est pas pour recuperer l'adresse dans la variable qu'est le probleme c'est pour la declaration de la plage du TCD:

Feuil1!c1: PlageCell

Cette ecriture ne fonctionne pas.
Alors que:

Feuil1!c1:B10

Fonctionne tres bien, comment puisje ecrire l'equivalent mais avec une variable?

Merci
 
re tu peux surement définir ta plage autrement

Set Maplage = Range('A3').CurrentRegion
Set Maplage = Range('A1:B'& Range('B65536').End(xlup).row)
Maplage.Name = 'Maplage'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
'Maplage'.CreatePivotTable TableDestination:='', TableName:= _
'T c d', DefaultVersion:=xlPivotTableVersion10

Enfin tu verras
 
Bonsoir,

Dans le code de CHti160, utilise ceci :

Code:
Set Maplage = Range('A3').CurrentRegion
Maplage.Name = 'Maplage'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
'Maplage'.CreatePivotTable TableDestination:='', TableName:= _
'T c d'

avec A3, la première cellule en haut à gauche. Elle doit inclure les entêtes de colonnes qui servent pour les champs du TCD.

😉
 
Merci à vous deux

J'ai le resultat que je recherche avec le code suivant:

Dim Plage As Range

Dim P As Long

With ActiveWorkbook.Sheets('feuil1')
P = .Range('b65536').End(xlUp).Row
Set Plage = .Range(.Cells(1, 2), .Cells(P, 3))
End With

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Plage).CreatePivotTable TableDestination:='', TableName:= _
'T c d', DefaultVersion:=xlPivotTableVersion10

Mais j'ai un autre soucis apparemment si j'execute une deuxième fois la macro j'ai une erreur.
Sauf si avant de lancer la macro je reselection la feuil1. Pourtant dans le debut du code je le realise bien par rapport à la feuil1.

Si quelqu'un peut me donner un coup de main.

Merci
 
Bonsoir,

je suppose que lorsque tu relances ta macro c'est pour placer un deuxième TCD sur une autre feuille.

Essaie ceci -->
With ActiveWorkbook.Sheets('feuil1')
.activate
.....le reste de ta macro


Supprime aussi cette instruction : DefaultVersion:=xlPivotTableVersion10

😉
 
Merci Dan

Pour tes infos et pour ta rapidité, ça fonctionne au poil.

Je donne mon code complet pour la création d'un TCD avec plage variable au cas ou et si ça peut interresser quelqu'un d'autre sur le forum.

Dim Plage As Range
Dim P As Long

With ActiveWorkbook.Sheets('feuil1')
.Activate
P = .Range('b65536').End(xlUp).Row
Set Plage = .Range(.Cells(1, 2), .Cells(P, 3))
End With

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Plage).CreatePivotTable TableDestination:='', TableName:= _
'T c d'
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables('T c d').AddFields RowFields:= _
'client'
With ActiveSheet.PivotTables('T c d').PivotFields('heure')
.Orientation = xlDataField
.Caption = 'Somme de heure'
.Function = xlSum
End With

ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars('PivotTable').Visible = False

En meme temps si tu as une remarque quelconque n'esite pas.

Merci encore

Message édité par: treza88, à: 29/06/2006 21:06
 
- 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

Discussions similaires

Réponses
1
Affichages
730
Réponses
69
Affichages
9 K
Réponses
4
Affichages
1 K
Retour