Masquer une ligne en fonction d'une variable

Bonjour,

je débute en programmation VBA. J'effectue des tests sur des variables pour masquer / afficher des lignes.

Les deux premiers tests ci dessous fonctionnent bien, la variable testée dans ces deux cas est une variable soit saisie soit choisie dans une liste déroulante.

Le dernier test (optifiscale) me donne du fil à retorde, c'est exactement le même principe que les deux autres sauf qu'il s'agit dans ce cas d'une variable calculée.

Pour moi il n'y a que cette différence ....

J'ai vérifié que la variable était bien déclarée - c'est ok .

Auriez vous une piste de solution ?

Merci d'avance de votre aide

Case "optfisca"

Debug.Print "Val:" & Range("optfisca").Value

Set lignes = Worksheets("AGRI ACS BNC hors santé Mic LM").Rows("170:170")

If Range("optfisca").Value = "0" Then

lignes.Hidden = True

Debug.Print "Ligne 170:170 cachée"

Else

lignes.Hidden = False

Debug.Print "Ligne 170:170 affichée"

End If

Case "optfiscb"

Debug.Print "Val:" & Range("optfiscb").Value

Set lignes = Worksheets("AGRI ACS BNC hors santé Mic LM").Rows("171:171")

If Range("optfiscb").Value = "0" Then

lignes.Hidden = True

Debug.Print "Ligne 171:171 cachée"

Else

lignes.Hidden = False

Debug.Print "Ligne 171:171 affichée"

End If

Case "optifiscale"

Debug.Print "Val:" & Range("optifiscale").Value

Set lignes = Worksheets("AGRI ACS BNC hors santé Mic LM").Rows("167:167")

If Range("optifiscale").Value = "Non" Then

lignes.Hidden = True

Debug.Print "Ligne 167:167 cachée"

Else

lignes.Hidden = False

Debug.Print "Ligne 167:167 affichée"

End If

Edit Modo : Code placé avec les balises de code


Bonjour,

Merci d'utiliser les balises de code lorsque vous postez un code dans votre demande.
Pour ce faire, click sur l'icone </> puis coller le code dans la fenêtre.
Vu que c'est votre premier post j'ai apporté la correction.


Dans votre demande il manque la ligne "Select case ....." n'est pas repris. Peut-etre avoir le code complet ?

Crdlt

Merci beaucoup Dan pour votre réponse .

Je ne savais pas pour les balises.

Je ferais ça la prochaine fois que j'aurais une question à poser.

Voici le début du code :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim lignes As Range

On Error Resume Next

Debug.Print Target.Name.Name

Sheets("AGRI ACS BNC Hors santé Mic LM").Unprotect Password:="abc"

Select Case Target.Name.Name

J'ai trouvé une solution alternative qui consiste à mettre la référence de la cellule à tester plutôt que le nom affecté au champ mais bon c'est risqué .

Je vous remercie encore !

Cordialement Corinne

Je ne savais pas pour les balises
Je ferais ça la prochaine fois que j'aurais une question à poser.

Heu pourquoi alors dans votre post vous replacez à nouveau des lignes de codes sans balises ??

Au vu de votre post vous avez une solution ou pas ?

1. Si non, je pense qu'un petit fichier (sans données confidentielles) aiderait à mieux comprendre
Là je me pose les questions :
- Target c'est quelle cellule ? et qu'est ce que l'on met dans cette cellule
- range("Opfisca") c'est quelle cellule ?

2. Si oui, -->

Crdlt

Rechercher des sujets similaires à "masquer ligne fonction variable"