XL 2010 faire apparaitre ligne et onglet sous condition en vba

polyteis

XLDnaute Occasionnel
Bonjour,
je viens chercher auprès de vous la solution à mon petit problème,
j'ai un classeur qui comprend 3 onglets DEJ1, DAF_SPB5 et listes qui sont masqués.
après quelques recherches , j'ai trouvé en vba un code qui me permet en D5= OUI (cellule contenant un choix OUI , NON°) .
de faire apparaitre une ligne, D6
un message box
un onglet, DAF_SPB5,
A partir de cela, j'ai tenté de faire la même chose en testant la cellule D6 (OUI/NON),
Que la réponse soit OUI ou NON , la ligne D7 doit apparaitre, la difference reside essentiellement dans le msg box qui diffère,
- les msgbox s'affichent bien
- la ligne D7 s'ouvre quand E6=NON
- La ligne D7 ne s'ouvre pas quand E6=OUI

Que faut il ecrire pour resoudre ce souci ?

merci pour votre participation
 

Pièces jointes

  • fac.xlsm
    19.4 KB · Affichages: 6
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Un truc ne va pas dans votre structure.
Code:
Si E6 cliquée
  Si E6="OUI"
      Action1
  Sinon
      Action2
  Finsi
Finsi
Si E6 cliquée
  Si E6="NON"
      Action3
  Sinon
      Action4
  Finsi
Finsi
Si vous mettez OUI en E6 il effectuera Action1 puis Action4 ( puisque c'est pas NON)
En PJ j'arrête à la fin de E6=OUI :
Code:
Si E6 cliquée
  Si E6="OUI"
      Action1
  Sinon
      Action2
  Finsi
  EXIT SUB
Finsi
Si E6 cliquée
  Si E6="NON"
      Action3
  Sinon
      Action4
  Finsi
Finsi
 

Pièces jointes

  • fac.xlsm
    18.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Exact. :oops:
En fait il y a un problème de structure. Si en E6 je met NON alors il va faire :
VB:
Cells(7, 4).Select
Selection.EntireRow.Hidden = True
puis
Cells(7, 4).Select
Selection.EntireRow.Hidden = False
Donc rien.
Pouvez vous préciser ce que vous voulez faire lorsque E6="OUI" et quand E6="NON" ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour que la structure marche, utilisez celle ci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, [d5]) Is Nothing Then
            If [d5] = "OUI" Then
                Sheets("DAF_SPB5").Visible = True
                MsgBox ("Indiquez dans la cellule E6" & Chr(13) & "par OUI ou NON" & Chr(13) & "si present dans la liste de référence")
                Cells(6, 4).Select
                Selection.EntireRow.Hidden = False
            Else
                Sheets("DAF_SPB5").Visible = False
                Cells(6, 4).Select
                Selection.EntireRow.Hidden = True
            End If
   End If
   If Not Intersect(Target, [e6]) Is Nothing Then
            If [e6] = "OUI" Then
                ' Mettre ici tout ce que vous voulez faire si E6="OUI"
            Else
                ' Mettre ici tout ce que vous voulez faire si E6="NON"
            End If
   End If
End Sub
Il n'y a qu'un code et un seul si OUI ou NON.
 

polyteis

XLDnaute Occasionnel
If Not Intersect(Target, [e6]) Is Nothing Then
If [e6] = "OUI" Then
MsgBox ("Indiquez dans la cellule E7,la référence du dossier ")
Cells(7, 4).Select
Selection.EntireRow.Hidden = False
Else
MsgBox ("Vous avez répondu NON.Le superviseur renseignera")
Cells(7, 4).Select
Selection.EntireRow.Hidden = False
End If
End If
If Not Intersect(Target, [e6]) Is Nothing Then
If [e6] = "" Then
Cells(7, 4).Select
Selection.EntireRow.Hidden = True
End If
End If

end sub

re,
voilà ce que j'ai ecrit, cela fonctionne correctement pour OUI et pour NON;
J'ai voulu poursuivre en me disant si la réponse est vide je masque la ligne,
la ligne se masque sauf que je recupère avant l'éxécution le message "Vous avez répondu NON.Le superviseur renseignera"
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Utilisez les balises </> pour le code c'est plus lisible ( à droite de l'icone GIF ), et indentez votre code.
Peut être en essayant :
VB:
If Not Intersect(Target, [e6]) Is Nothing Then
    Cells(7, 4).Select
    If [e6] = "OUI" Then
        MsgBox ("Indiquez dans la cellule E7,la référence du dossier ")
        Selection.EntireRow.Hidden = False
    Else
        If [e6] <> "" Then
            MsgBox ("Vous avez répondu NON.Le superviseur renseignera")
            Selection.EntireRow.Hidden = False
        Else
            Selection.EntireRow.Hidden = True
        End If
    End If
End If
J'ai optimisé en mettant le Cells(7, 4).Select au début, on gagne en ligne de code.
 

polyteis

XLDnaute Occasionnel
Bonjour,
Evidemment puisque la feuille est protégée.
Il faut déprotéger/reprotéger :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect
    ...
    ...
    ActiveSheet.Protect
End Sub
Si vous avez un mot de passe ou des déprotections partielles, alors référez vous à cela :
 

Discussions similaires

Réponses
9
Affichages
342

Statistiques des forums

Discussions
315 133
Messages
2 116 606
Membres
112 803
dernier inscrit
Falcon