Apparition d'une colonne sous condition

Bonjour,

J'ai un problème qui pourrait paraître trivial pour certains, mais qui me résiste depuis une semaine.

Je souhaite conditionner l'apparition de nouvelles colonnes aux données présentes dans la colonne précédente, je m'explique:

J'ai une colonne "obtention du contrat" à laquelle on peut répondre Oui/Non.

Pour une réponse positive, je souhaite afficher une colonne "Montant du contrat" "Date de signature". De même, pour un réponse négative la colonne "Raison de l'échec" devrait apparaitre.

Je ne sais comment faire

Merci d'avance,

Bonjour,

Si l'on pose :

Colonne A : Valeur oui ou NOn --> entre les cellules A2 et A2000

Colonne B et C : "Montant du contrat" "Date de signature" (colonnes cachées par défaut)

Colonne D : "Raison de l'échec" (colonne cachée par défaut)

Utilise cette macro que tu placeras en VBA (ALT+F11) et ce, dans la feuille concernée (CRTL+R pour afficher le VBA PROJECT à gauche et double clique sur la feuille où se trouve tes données)

Option Explicit
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
'Macro par DAN le 19/06/07
If Not Application.Intersect(Target, Range("A2:A2000")) Is Nothing Then
Select Case Target
Case "Oui"
Columns("B:C").EntireColumn.Hidden = False
Case "Non"
Columns("D:D").EntireColumn.Hidden = False
End Select
End If
End Sub

Reste à savoir quel critère tu veux pour rechacher tes colonnes.

A te lire

Dan

Bonjour

Une autre approche avec 2 boutons

Cordialement

https://www.excel-pratique.com/~files/doc/OuiNon.xls

Tout d'abord, merci d'avoir pris le temps de répondre à mon problème.

Nad Dan, je pense avoir suivi à la lettre tes instructions (d'ailleurs fort bien expliqués), mais cela ne marche pas.

La réponse Oui/Non n'influe pas sur les colonnes qui s'affichent. Je suis sur un ordinateur au bureau, peut être y a t'il des restrictions sur les macros que j'ignore, qui bloquent celles-ci. J'ai beau regardé dans les options des macros, je ne trouve pas ce qui pourrait empêcher la mise en marche du programme. J'ai bien fait attention à respecter la place des colonnes (A pour la question, B et C pour les conditions positives ...).

Amadéus, cela marche parfaitement, merci beaucoup !! Mais je me demande, si je veux pouvoir entrer plusieurs contrats, dans les colonnes du tableau, est il possible d'afficher plusieurs lignes, avec pour chacune d'entres elles, deux boutons Oui/Non?

De ce fait, pour toutes les réponses cochées Non, l'ensemble des raisons de l'échec s'afficherait, et pour les réponses positives, la totalité des dates du contrat serait visible.

En attendant une éventuelles réponse, je cherche de mon coté.

Encore merci pour l'aide énorme que vous fournissez aux néophytes de mon espèce!

Bonjour,

De nous deux, le spécialiste des macros étant Dan, je ne voudrais pas dire de bêtise mais j'aurais mis :

Select Case Target.Value

Case Is = "Oui"

A essayer

Nad

Je viens d'essayer avec

Select Case Target.Value

Case Is = "Oui"

Je suppose qu'il fallait de la même manière, Case Is = "Non" par la suite. Malheureusement ca ne marche tjrs pas. J'ai inséré une liste Oui/Non, mais je ne pense pas que cela puisse créer de conflit.

Je joins le fichier dont je me sers pour tester la fonction.

https://www.excel-pratique.com/~files/doc/CUkzbClasseur2.xls

Merci de votre aide,

Re,

Pour une réponse positive, je souhaite afficher une colonne "Montant du contrat" "Date de signature".

Tu n'as pas bien lu ce que je t'ai écrit et donc normal que cela ne fonctionne pas puisque dans ton fichier les colonnes ne sont pas cachées au départ.

Cache d'abord tes colonnes puis utilise la liste déroulante.

A te lire

Dan

Je suis assez fier de moi

En bidouillant un peu ton code,

Option Explicit

Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)

'Macro par DAN le 19/06/07

If Not Application.Intersect(Target, Range("A2:A2000")) Is Nothing Then

Select Case Target.Value

Case Is = "Oui"

Columns("D: D").EntireColumn.Hidden = True

Columns("B:C").EntireColumn.Hidden = False

Case Is = "Non"

Columns("B:C").EntireColumn.Hidden = True

Columns("D: D").EntireColumn.Hidden = False

End Select

End If

End Sub

(espace entre D: D pour éviter le racourci smiley)

J'obtiens le résultat voulu si l'on ne se base que sur une seule ligne. Si on utilise une seconde ligne, pour un seconde contrat, par contre il y a un effet indésirable.

Exemple:

Première ligne : Oui

Seconde ligne : Non

Résultat => seuls les colonnes associées à la réponse non s'affichent.

Cela serait parfait, si à la ligne n (Réponse non par exemple), toutes les réponses négatives (colonnes D) s'affichaient. A la ligne (n+1), (que l'on prends arbitrairement Oui) toutes les réponses B&C s'affichaient.

Cela suppose probablement une relation de récurence, malheureusement je n'ai pas le niveau pour la coder

J'espère avoir réussi à me faire comprendre. En tout cas merci de votre aide!

En plus d'être fier de moi, je suis bête . Le résultat que je cherchais marche avec ce code....

Un énorme merci, pour vos connaissances et votre disponibilités

Au plaisir,

Re,

Dan est en ligne et je pense qu'il va s'occuper de la suite.

Par contre, le 1er code de Dan fonctionnait parfaitement bien ; je pense que comme il te le dit plus haut, tu ne devais pas masquer les colonnes au départ, ce qui fait que la macro ne pouvait pas fonctionner.

A +

Nad

Oui, son code consistait à désactiver le masque sous certaines conditions, comme je n'avais rien masqué cela nous pouvait pas marcher

Mon erreur m'a obligé à me plonger dans le code, au lieu de le recopier bêtement, ce qui s'avère plutôt bénéfique.

Merci

Re,

PAs de quoi. Avec plaisir de t'avoir aidé.

Comme tu l'as compris, dans ce code la valeur FALSE permet d'afficher tandis que la valeur TRUE te permet de cacher.

A bientôt.

Dan

Salut le forum

Pourquoi ne pas plutôt utiliser des couleurs, et comme choix "Oui", "Non" et "En Attente"

Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
'Macro par DAN le 19/06/07
'Modifier par Mytå
If Not Application.Intersect(Target, Range("A2:A2000")) Is Nothing Then
With Target
Select Case .Value
Case "Oui"
.Offset(0, 1).Interior.ColorIndex = xlNone
.Offset(0, 2).Interior.ColorIndex = xlNone
.Offset(0, 3).Interior.ColorIndex = 1
Case "Non"
.Offset(0, 1).Interior.ColorIndex = 1
.Offset(0, 2).Interior.ColorIndex = 1
.Offset(0, 3).Interior.ColorIndex = xlNone
Case Else
.Offset(0, 1).Interior.ColorIndex = 3
.Offset(0, 2).Interior.ColorIndex = 3
.Offset(0, 3).Interior.ColorIndex = 3
End Select
End With
End If
End Sub

Mytå

Effectivement on gagne en lisibilité avec cette méthode par couleur. Néanmoins cela (me) pose deux problèmes:

  • La colonne D (Raison de l'échec) n'apparait plus à l'écran lorsque la case "Non" est cochée.
  • Serait-il possible de personnaliser les couleurs du masque de scolonnes inutiles ? Le noir fait très agressif je trouve. Un rouge délavé me semblerait plus attractif.

Je cherche de mon coté..

Encore merci pour votre aide

Effectivement on gagne en lisibilité avec cette méthode par couleur. Néanmoins cela (me) pose deux problèmes:

  • La colonne D (Raison de l'échec) n'apparait plus à l'écran lorsque la case "Non" est cochée.
  • Serait-il possible de personnaliser les couleurs du masque de scolonnes inutiles ? Le noir fait très agressif je trouve. Un rouge délavé me semblerait plus attractif.

Je cherche de mon coté..

Encore merci pour votre aide

Rechercher des sujets similaires à "apparition colonne condition"