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 IfEdit 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 CorinneJe 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