Mise en forme conditionnelle un peu particulière

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pierre1923

XLDnaute Nouveau
Bonjour,

je cherche a faire une mise en forme conditionnelle un peu particulière mais je n'y arrive pas.

le but serait dans un questionnaire :

- de masquer les 3 lignes dessous si la réponse à la première question est non ou sans objet

- et de laisser la possibilité de répondre à ces 3 lignes si la réponse à ma première question est oui

je vous joins mon fichier, merci d'avance.

Pierre
 
Re : Mise en forme conditionnelle un peu particulière

Merci Hasco et Mutzik

Hasco ce que tu me proposes est exactement ce que je veux mais si j'essaye de le transférer sur un autre fichier ça ne fonctionne pas...
j'ai pourtant recopié le code en changeant les données mais ça ne fonctionne pas... j'ai collé ça (en rouge ce que j'ai changé)

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$33" Then Range("34:35").EntireRow.Hidden = Target.Value <> "Oui"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
 
Re : Mise en forme conditionnelle un peu particulière

Re Pierre,

C'est la raison pour laquelle nous demandons souvent que les fichiers joints ressemblent au maximum au fichier original dans leur structures.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$33" Then Range("34:35").EntireRow.Hidden = Target.Value <> "Oui"
End Sub

Donc tu veux qui si D33 est différent de "Oui", les lignes 34 et 35 de la même feuille(celle qui contient la macro) soient cachées.

As-tu changé au moins une fois la valeur de D33 pour que l'évènement WorkSheet_Change se lance?

Sinon vérifie que la gestion d'évènement est bien autorisée:
Dans l'éditeur de macro faire CTRL+G
Dans la fenêtre qui s'ouvre taper '?Application.EnableEvents' avec le point d'interrogation et sans les '
Valider
Si la réponse est 'false"
Taper en dessous 'Application.EnableEvents = true ' sans point d'interrogation ni ' et valider.
Essayer de nouveau de changer la cellule D33

Si cela ne fonctionne toujours pas joindre ici un fichier exemple ressemblant.
A+


Si tel est le cas, tout semble bon.
 
Re : Mise en forme conditionnelle un peu particulière

pour plus de facilité je vous joins mon fichier type qui ne bougera pas avec en rouge toutes les questions conditionnelles et en dessous les critères d'apparition ou non.

je ne sais comment vous remercier
 
Re : Mise en forme conditionnelle un peu particulière

Merci pour toutes ces réponses mais je vais garder celle d'HASCO qui me convient presque parfaitement.

je vais cependant pousser le vice encore un peu :

il faudrait que le processus soit le même mais que si jamais je réponde d'abord oui à la question conditionnelle puis que je mette des réponses aux questions du dessous, ces réponses soient effacées si jamais je décidais de mettre non à la question conditionnelle.

je poste un fichier de travail avec un exemple

Merci d'avance
 
Re : Mise en forme conditionnelle un peu particulière

Re,

A partir du fichier exemple:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
    With Range("2:4").EntireRow
        .Hidden = Target.Value <> "Oui"
        If .Hidden Then .Columns(2).ClearContents
    End With
End If
End Sub

A toi d'adapter, tu en sais suffisament maintenant.

A+
 
Re : Mise en forme conditionnelle un peu particulière

Désolé HASCO je ne suis vraiment pas doué... je n'arrive pas a appliquer ton code qui traduit parfaitement mon besoin à mon fichier.
je n'arrive pas a greffer le "If .Hidden Then .Columns(2).ClearContents" à ma structure...

voici ma page de code avec chaque ligne qui correspond au questions conditionnelles et sous question.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$34" Then Range("35:37").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$39" Then Range("40:41").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$42" Then Range("43:46").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$47" Then Range("48:50").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$89" Then Range("90:91").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$96" Then Range("97:99").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$96" Then Range("100:100").EntireRow.Hidden = Target.Value <> "Non*"
If Target.Address = "$D$101" Then Range("102:112").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$113" Then Range("114:116").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$117" Then Range("118:119").EntireRow.Hidden = Target.Value <> "Oui*"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub


je ne sais comment te remercier

Pierre
 
Re : Mise en forme conditionnelle un peu particulière

Re,

Déjà je t'ai montré dans un exemple précédent comment utiliser Select case dans ce genre de test.

Ensuite je ne vois aucune tentative dans le code que tu me donnes, d'adapter ce que j'ai fait aujourd'hui pour toi.

C'est lassant.

A+
 
Re : Mise en forme conditionnelle un peu particulière

Pardon, je travail sous pression et je te promet que je fais des tentatives. pour le fait d'utiliser select j'avais avant de voir ta réponse trouvé ma méthode alternative qui fonctionnait donc je ne voulais pas prendre le risque de tout planter et la je travail sur la deuxième partie et en fait je pense tenir le bon bout.
j'ai surement cédé à la facilité mais j'ai passé ma journée sur fichier et pour un novice comme moi ça m'a cuit le cerveau.

merci encore pour ton aide
 
Re : Mise en forme conditionnelle un peu particulière

Bonjour,

J'ai un dernier problème... j'ai réussi à adapter le code d'Hasco avec "select case" puis "ClearContents" cependant je n'arrive pas à faire une légère modification que j'avais réussi à traduire avec mon ancien code. Pour l'instant pour toutes mes questions conditionnelles si je choisis "oui*" alors les questions subsidiaires apparaissent sinon elle disparaissent et se vident. il y a cependant une petite variante : pour la question conditionnelle 96 il y a deux cas différents :

- si je choisis "oui*" alors j'ai les lignes 97 à 99 qui apparaissent
- si je choisis "non*" alors j'ai uniquement la ligne 100 qui apparait

dans mon ancien code j'avais traduit ça par :
If Target.Address = "$D$96" Then Range("97:99").EntireRow.Hidden = Target.Value <> "Oui*"
If Target.Address = "$D$96" Then Range("100").EntireRow.Hidden = Target.Value <> "Non*"


mais je n'arrive pas à l'intégrer a select case

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("$D$34,$D$39,$D$42,$D$47,$D$89,$D$96,$D$101,$D$113,$D$117"), Target) Is Nothing And Target.Count = 1 Then
Dim nb As Long
Select Case Target.Row
Case 34, 47, 96, 113: nb = 3
Case 39, 89, 117: nb = 2
Case 42: nb = 4
Case 101: nb = 11
End Select
With Target.Offset(1).Resize(nb).EntireRow
.Hidden = Target.Value <> "Oui*"
If .Hidden Then .Columns(4).ClearContents
End With
End If
End Sub

Merci d'avance


Pierre
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
102
Réponses
4
Affichages
131
Réponses
25
Affichages
606
Réponses
6
Affichages
158
Retour