Chercher un MOT dans une plage de cellules puis masquer ligne suivante

Bonjour à tous et à toutes

Grande débutante en VBA, je me tourne vers vous pour chercher de l'aide.

L'illustration de mon problème est la suivante:

capture

Dans les cellules C3 et E3, les réponses sont dans un menu déroulant.

Je voudrais que:

SI C3 et/ou E3 contient le mot "plusieurs" ALORS

------Laisser la ligne 4 qui contient la question "Combien de compteurs?"

SINON Masquer la ligne 4.

Un grand merci par avance à la personne qui saura m'aider

Bonjour Gougouks, bonjour le forum,

Les cellules fusionnées et VBA ne font pas bon ménage. Il vaut mieux éviter la fusion si tu dois coder... Essaie comme ça :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range 'déclare la variable C (Cellule)
Dim TEST As Boolean 'déclare la variable TEST

If Application.Intersect(Target, Range("C3:F3")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage C3:F3, sort de la procédure
For Each C In Range("C3:F3")'boucle sur toutes les cellules C de la plage C3:F3
    If C.Value = "plusieurs" Then TEST = True 'si C vaut "plusieurs" alors TEST est [vrai]
Next C 'prochaine cellule de la boucle
Rows(4).Hidden = TEST 'la propriété Hidden de la ligne 4 est égale à TEST
End Sub

Bonjour, bonjour thauthème

une autre piste :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "C3" And Target.Address(0, 0) <> "E3" Then Exit Sub
    Rows(4).Hidden = Not (Range("C3").Value = "plusieurs" Or Range("E3").Value = "plusieurs")

End Sub

Bonjour,

Merci beaucoup à vous deux

Petite question Theze,

Le code que tu proposes masque la ligne 4 si les cellules C3 et/ou E3 contiennent le mot "plusieurs". Je voudrais en faites que se soit le contraire:

Si C3 et/ou E3 ne contient pas "plusieurs": masquer la ligne 4

Si C3 et /ou E3 vide: ne rien modifier;

Si C3 et/ou E3 contient "plusieurs": laisser la ligne 4.

Je voudrais aussi qu'il y ait l'option inverse. Si la personne qui remplis le document se trompe de réponse (réponse sans "plusieurs" donc la ligne 4 est masquée) et qu'elle choisi une réponse avec le mot "plusieurs", alors afficher la ligne 4.

Bonjour,

Si C3 et/ou E3 ne contient pas "plusieurs": masquer la ligne 4

c'est exactement ce que fait le code donné, si au moins 1 "plusieurs" se trouve dans une des deux cellules, la ligne reste visible, sinon elle est cachée !

Range("C3").Value = "plusieurs" si la cellule contient "plusieurs" retourne VRAI sinon, FAUX

Range("E3").Value = "plusieurs" si la cellule contient "plusieurs" retourne VRAI sinon, FAUX

un FAUX + un VRAI donne VRAI, deux VRAi donne VRAI et deux FAUX donne FAUX

comme la propriété Hidden attend un VRAI pour cacher, l'utilisation de l'opérateur "Not" permet d'inverser la valeur booléenne retourné par le test !

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "C3" And Target.Address(0, 0) <> "E3" Then Exit Sub

    'Si C3 et /ou E3 vide: ne rien modifier;
    If Range("C3").Value = "" Or Range("E3").Value = "" Then Exit Sub

    'Si C3 et/ou E3 contient "plusieurs": laisser la ligne 4.
    Rows(4).Hidden = Not (Range("C3").Value = "plusieurs" Or Range("E3").Value = "plusieurs")

    'la valeur booléenne retourné par le test en A1
    Range("G4").Value = Not (Range("C3").Value = "plusieurs" Or Range("E3").Value = "plusieurs")

End Sub

Salut Theze

Il y a surement quelque chose que je dois mal faire!

Ta proposition fonctionne dans un sens:

  • la ligne 4 se masque en absence du mot "plusieurs": ça c'est bon!
  • la ligne 4 masquée ne se "démasque" pas si je change en C3 et/ou E3 la réponse avec un "plusieurs".

Désolé de t’embêter avec mon cas..

Bonne journée

Bonjour,

Un classeur test :

Attention, c'est sensible à la casse, P est différent de p sinon, mettre en tête de module (sous Option Explicit) "Option Compare Text" :

Rechercher des sujets similaires à "chercher mot plage puis masquer ligne suivante"