Cacher ligne automatiquement Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
lejack02
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 19 novembre 2016
Version d'Excel : 2013

Message par lejack02 » 27 juin 2018, 20:37

Bonsoir,

Je souhaiterais cacher automatiquement des lignes selon la valeur que certaines cellules peuvent avoir. J'ai fais des recherches et essayé un code mais pour l'instant, cela ne fonctionne pas. Ai-je fais quelque chose de faux?
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = True
 Application.ScreenUpdating = False
          
           If LCase(Range("CellName").Value) = "The student has good grades" Then
            	Range("T1").EntireRow.Hidden = True
          End if
 Application.EnableEvents = True         
End Sub
            
Merci d'avance et bonne soirée !
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'683
Appréciations reçues : 647
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 27 juin 2018, 20:42

Bonsoir lejack02,

La 1ère ligne de ta sub devrait être : Application.EnableEvents = False

Ton instruction de masquage de ligne est correcte, mais comme c'est
pour la cellule T1, ceci est plus simple : Rows(1).Hidden = True

Pour ton instruction de test, y'a contradiction entre LCase (en minuscules) et le T majuscule de "The" !
(donc le test de comparaison ne pouvait jamais être vrai !)

If LCase$(Range("CellName")) = "the student has good grades" Then

enfin, tu peux mettre le test et son action en une seule ligne :

If LCase$(Range("CellName")) = "the student has good grades" Then Rows(1).Hidden = True

alors comme ça tu veux masquer tous les bons élèves ? bon, ça doit être pa'c'que tu veux voir que les mauvais !  :P ;;)
pour pouvoir mieux les mettre en retenue (heures de colles) ou convoquer les parents ?  :roll: :mrgreen:

si c'est ok : merci de passer le sujet le sujet en résolu.  :wink:
sinon : vérifie les données de ta feuille.  ::D

dhany
l
lejack02
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 19 novembre 2016
Version d'Excel : 2013

Message par lejack02 » 28 juin 2018, 09:04

Bonjour dhany,

Merci beaucoup pour ta réponse :)

En fait je souhaite cacher les cours supplémentaires qu'ils devraient prendre pendant la période estivale :lol:

J'aurais du préciser que "T1" n'est pas la cellule T1 mais le nom d'une cellulle nommé ou d'une plage selon les endroits. Donc je pensais conserver la 2ème partie "Entirerow.Hidden" pour que je puisse l'appliquer de manière dynamique.

Le soucis étant que les majuscules au début des phrases sont nécessaires sur ce fichier :lole: :lole: y'a t il un moyen d'avoir un "LCase" qui s'applique aussi aux majuscules? Merci beaucoup !

Edit: J'ai enlevé le Lcase et cela semble fonctionner :)
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'683
Appréciations reçues : 647
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 28 juin 2018, 09:47

Bonjour lejack02,

j'ai vu ton message avant qu'tu l'modifies ; j'voulais t'répondre ceci : mon test du message d'hier à 20:42 était :

If LCase$(Range("CellName")) = "the student has good grades" Then

LCase$() met en minuscules, oui, mais comme c'est juste pour le test, ça change pas la valeur de Range("CellName") qui peut rester avec toutes les majuscules que tu veux !  ;;)  mais attention : la chaîne de caractères à droite du signe "=" doit être entièrement en minuscules ; ou si à droite c'est aussi une variable, tu peux utiliser LCase$() pour cette variable aussi.

d'autre part, si maint'nant tout fonctionne correctement comme tu veux, c'est l'essentiel !  :sp:

dhany
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message