Microsoft 365 Problème code VBA masquer ligne fonction onglet déroulant + TcD

reyjak

XLDnaute Nouveau
Bonjour,

Suite à diverses aides de personnes compétentes, j'ai pu réussir à cacher les cellules en fonction d'un nombre entrer dans une valeur.
J'ai modifié le code et intégrer dans mon tableur Excel.

Je rencontre cependant un problème, ma valeur est calculé en fonction d'un tableau croisée dynamique.

- Info :

Le tableau croisée dynamique sur la page : Tab croisée coût (le tableau de droite)
La page concernée : ESSAI Composants equipement (2)


En J32 j'ai un onglet déroulant (avec des doublons mais je dois peaufiner) qui me permet de sélectionner ce que je souhaite (Info issue du tableau croisée dynamique).
En L33, la valeur que je rentre manuellement et qui me cache mes lignes à partir de la ligne 33 jusqu'à 42 (inclus) => ce qui me permet de vérifier que le code VBA fonctionne bien

Quand j'insère ma formule (voir M33) en L33, que je valide, cela fait bien l'action une fois.
Mais ensuite lorsque je change ma valeur par le biais de l'onglet déroulant (J32), je n'ai plus d'action et reste figer sur l'action précédente.


- Détails formule M33 :

LIREDONNEESTABCROISDYNAMIQUE("Nbr Sous catégorie";'Tab croisée coût'!G$5;"Secteur";J32)
==> Elle me permet de sortir le nombre de sous ensemble dans chacune des catégories du TcD en fonction de l'onglet déroulant


- Le code :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
With [L33]
If Intersect(Target, .Cells) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Rows(33).Resize(10).Hidden = True 'row correspond à la ligne et resize le total de nombre de ligne que l'on réduit
If .Value Then Rows(33).Resize(.Value).Hidden = False
End With
End Sub

Suivant mes recherches, je suppute que le problème vienne de cette valeur la dans mon code: If . Value , j'ai essayé de le remplacer par range("L33"), cell (12,33), activecelle mais sans succès.

sur cette zone de codage je ne suis vraiment pas à l'aise.

Merci pour cette fastidieuse lecture...

Je joins le fichier, et reste à dispo pour toute question complémentaire.

Amicalement,

Reyjak.
 

Pièces jointes

  • Trame TdB maint - bug erreur compilation.xlsm
    100.5 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Reyjak,
Essayez avec ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [L33]) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Rows(33).Resize(10).Hidden = True 'row correspond à la ligne et resize le total de nombre de ligne que l'on réduit
    Rows(33).Resize([L33]).Hidden = False
End Sub
 

Pièces jointes

  • Trame TdB maint - bug erreur compilation.xlsm
    90.3 KB · Affichages: 5

reyjak

XLDnaute Nouveau
Bonjour Silvanu,

Merci,
Je viens d'essayer mais ça ne fonctionne pas.



J'ai bien trouvé une "manip" qui la fait fonctionner, mais il faut que je clic dans la cellule L33, puis dans la barre de formule, et que la j'appui sur Entrée.

Des que je change ma valeur de mon onglet et que je fais cette manip cela fonctionne.


J'ai fait une macro avec un bouton qui me permet de le faire automatiquement :

Sub Validation()

Range("L33").Select
ActiveCell.FormulaR1C1 = _
"=GETPIVOTDATA(""Nbr Sous catégorie"",'Tab croisée coût'!R5C[-5],""Secteur"",R[-1]C[-2])"

End Sub


Je ne sais pas si il est possible d'optimiser et de n'avoir que une seule formule.

Reyjak
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Sous 2007 ma PJ marche correctement :
20210210_164954.gif
 

reyjak

XLDnaute Nouveau
Sylvanu,

je comprends mieux, mon explication n'a pas été clair.
Je m'en excuse,
En effet ton code marche.

Je vais essayer de tourner différemment.
Actuellement :
Lorsque j'utilise l'onglet déroulant en J32, ici ma cellule en M33 change.
J'ai laissé L33 en remplissage manuel.

Ce que je cherche
Quand je copie/colle ma formule de M33 en L33, cela marche une fois, puis cela en fonctionne plus, sauf si je clic sur la cellule L33, et que dans la barre de formule j'appui sur entrée.

En espérant avoir été plus clair...

Milles excuses.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Il existe une solution mais "lourde", voir PJ.
A chaque clic dans la feuille on regarde si L33 à changer. Si oui on remet à jour, sinon on sort.
A tester pour voir si la macro appelée à chaque clic ( même si elle ne fait rien ) n'alourdit pas l'outil.
 

Pièces jointes

  • Trame TdB maint - bug erreur compilation (4).xlsm
    91 KB · Affichages: 2

reyjak

XLDnaute Nouveau
Sylvanu,

Je viens d'essayer ta formule.
Elle fonctionne très bien.
Pour d'autres personnes utilisateurs, intéressés, et susceptibles de l'utiliser, il faut cliquer dans une autre cellule, une fois la valeur changé, pour que la macro s'effectue.

Encore Merci Sylvanu, cela répond parfaitement à ma demande.

Au TOP !
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 107
Membres
112 661
dernier inscrit
ceucri