Trier automatiquement un TCD avec un valeur du pressepapier
Bonjour,
Je suis nouveau sur ce Forum. Cela fait longtemps que je n'avais pas codé, du coup j'ai fait des mélanges pour arriver à ce que je veux et ça ne marche pas forcément bien. Et vu que je ne trouve pas de solution malgré mes recherches je me tourne vers vous.
Malheureusement je ne peux pas fournir le fichier, et je ne peux pas le recréer car les fonctions sont différentes entre Excel 2010 du boulot et Excel 2016 de chez moi. Si cela est bloquant je comprendrai.
Je vous explique mon problème en version rapide :
Je souhaite utiliser une valeur que je copie et colle dans un filtre d'un TCD pour faire un tri automatiquement par rapport à cette valeur, rien de plus compliqué.
Je vous laisse le code avec mes commentaires :
Sub Mamacro()
' Mamacro Macro
Dim celluleacopier As Long
' J'ai une autre macro dans la page qui permet de lancer cette macro quand je double clique sur une cellule d'une colonne donnée. Ensuite je me décale de -19 par rapport à la cellule sur laquelle je viens de cliquer pour récupérer l'information à copier.
ActiveCell.Offset(0, -19).Select
Application.CutCopyMode = False
'ici je stock la valeur dans la variable que j'ai précédemment déclaré.
celluleacopier = Selection.Copy
'Je vais sur une autre page de mon Excel
Sheets("Objet").Select
'J'enleve les filtres de mon Tableau croisé dynamique
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Part Number") _
.ClearAllFilters
' Et c'est ici que j'ai le problème. J'ai bien récupéré la valeur que je voulais, car si je la colle dans une cellule c'est bien la bonne. Par contre, je n'arrive pas à filtrer le TCD avec ma valeur de manière automatique. Quelqu'un peut-il m'aider ?
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Part Number") _
.CurrentPage = "celluleacopier"
End SubEn vous remerciant !
J'espère être compréhensible.
Bonjour,
Essaie ainsi :
Public Sub Update_Pivot_Table()
Dim strField As Variant
strField = ActiveCell.Offset(, -19).Value
With Worksheets("Objet").PivotTables("Tableau croisé dynamique1").PivotFields("Part Number")
.ClearAllFilters
.CurrentPage = strField
End With
End SubBonjour,
Merci beaucoup, j'essaie ça et je te tiens au courant.
MAJ du 11/09/2017 :
Public Sub Update_Pivot_Table()
Dim strField As Variant
strField = ActiveCell.Offset(, -19).Value
With Worksheets("Objet").PivotTables("Tableau croisé dynamique1").PivotFields("Part Number")
.ClearAllFilters
.CurrentPage = strField
End With
End SubAlors j'ai essayé avec ton code, cela ne fonctionne pas sur mon Excel.
Du coup, j'ai bidouillé une solution mixte :
Mamacro Macro
Dim celluleacopier As Variant
ActiveCell.Offset(0, -19).Select
Application.CutCopyMode = False
celluleacopier = Selection.Copy
Sheets("Lipram").Select
With Worksheets("Lipram").PivotTables("Tableau croisé dynamique1").PivotFields("Part Number")
.ClearAllFilters
On Error Resume Next
.PivotFields("Part Number").CurrentPage = celluleacopier
If Err.Number <> 0 Then
MsgBox "Veuillez coller le P/N du presse papier pour rechercher les Lipram associées"
End If
On Error GoTo 0
End WithEn gros, vu que ça ne marche pas, j'ai shunté l'idée par un message. Et l'utilisateur doit le faire à la main. Je t'avoue que j'aimerai bien comprendre pourquoi cela ne fonctionne pas mais en attendant voici ce que j'ai de mieux pour palier au problème.
Je t'ai mis le message d'erreur en P-J. Peut-être que ça peut t'aiguiller.
L'erreur est sur la ligne : .PivotFields("Part Number").CurrentPage = celluleacopier
En te remerciant.