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

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 !

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

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

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,

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.
 
C'est normal puisqu'il s'agit d'un Worksheet_Change, il faut une validation de données pour déclencher la macro.
Perso je ne sais pas faire sans cette validation. Peut être qu'un esprit plus affuté vous trouvera une solution.
 
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 !
 
- 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

  • Question Question
XL pour MAC Insertion ligne
Réponses
8
Affichages
501
Réponses
12
Affichages
481
Retour