Merci a vous deux pour vos commentaires et reponses rapides.
@halaster: Parfait merci beaucoup. Mais petite question complementaire: Ce type de commande s'ecrit dans une worksheet (ca semble evident). Mais ma macro veut lier le changement d'une sheet a une autre sheet. Ma question est: on ecrit la macro dans la sheet ou il y a le changement qui initie la macro? Ou dans l'autre feuille? Derniere option: vu que ca concerne deux feuilles discinctes, est ce que je dois ecrire ma macro dans le workbook (en utilisant la procedure Private Sub Workbook_SheetChange)?
Deuxieme question. je pense que Target est une variable. Je presume que je dois lui dire a quoi elle correspond non? Est ce que ce code pour la nommer est correct?
Target.Name = Sheets("Model").Range("Y25")
@Chris: Je comprends tres bien mais je me suis assure de changer la multiselection en une unique selection pour ce filtre la 
Et pourtant mon code ne fonctionne pas (il ya surement pleins d'autres erreurs mais ce n'est pas a cause de la multiselection ou non que ca plante).
J'ai fait plusieurs essais avec differents codes, dans differentes worksheets ou workbook. rien n'a jamais fonctionne.
Ton code est super chris, je le comprends (vraiment je t'assure) mais je suis incapable de le faire fonctionner. Je ne sais pas si je dois le completer par le mien ou pas.
Autre question: j'ai parfois un code qui semble sans erreur, je run ma macro mais alors excel me force a creer une macro en lui donnant un nom. Est ce necessaire? Qu'est ce que cela veut dire?
Voici le code que j'ai ecrit dans la Sheet "Model" (feuille qui contient la cellule qui est censee initer la macro)
1 2 3 4 5 6 7 8 9 10 11
| Private Sub Worksheet_Change(ByVal Target As Range)
Target.Name = Sheets("Model").Range("Y25")
If Target <> Sheets("Sheet7").PivotTables("PivotTable2").PivotFields("Season").CurrentPage Then
With Worksheets("Sheet7").PivotTables("PivotTable2")
.PivotFields("Saison").ClearAllFilters
For Each Pi In .PivotFields("Saison").PivotItems
If Pi.Caption <> Sheets("Model").Range("Y25").Value Then Pi.Visible = False
If Pi.Caption <> Sheets("Model").Range("Y25").Value Then Pi.Visible = True
Next
End With
End Sub |
De plus, VBA m'a force a creer une macro dans un nouveau module quand j'ai essaye de runner ma macro.
Partager