Affichage liste sous condition

Résolu
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008 - 8 sept. 2008 à 10:59
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008 - 10 sept. 2008 à 07:59
Bonjour à tous je suis débutant sous excel et VB pourtant il faudrait que je fasse un fichier regroupant pas mal d'informations.

Je voudrais si possible avoir une liste de choix qui conditionne l'apparition d'une autre liste de choix. C'est à dire si je choisi par exemple le choix 1 liste correspondante apparait , idem pour le choix 2 ....

J'ai essayé de le faire sans macro mais excel ne prend on compte que la valeur de la cellule alors que je voudrais qu'il prenne la formule.

Ayany échoué sur ce point j'ai fouillé diférent forum pour trouver une solution avec VB mais je suis trop débutant pour y comprendre quelque chose ^^.

Je vous remercie d'avance

PS: Je trouve pas comment joindre un fichier excel donc je vous met mon adresse mail au cas ou quelqu'un voudrait bien m'aider

horazon999@hotmail.com

12 réponses

dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
8 sept. 2008 à 21:08
Bonjour à tous ,
Pour les listes de choix , il faut utiliser l'instruction "Validation"
Voici le code de base que je te propose:
Dans cette exemple , j'utilise les cellules b3 et c3.

----------------------------------------------------------------------
Private Sub Workbook_Open()
On Error Resume Next
Range("b3").Validation.Delete
With Range("b3").Validation
.Add Type:=xlValidateList, Formula1:= _
"Gestion agitation,Gestion niveau,Gestion agitation + niveau"
End With
End Sub
----------------------------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Range("c3").Validation.Delete
If Range("b3").Value = "Gestion agitation" Then
With Range("c3").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur électrique 1,Agitateur électrique 2"
End With
ElseIf Range("b3").Value = "Gestion niveau" Then
With Range("c3").Validation
.Add Type:=xlValidateList, Formula1:= _
"Sonde de niveau ATEX 1,Sonde de niveau non ATEX"
End With
ElseIf Range("b3").Value = "Gestion agitation + niveau" Then
With Range("c3").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur électrique 1,Agitateur électrique 2, " & _
"Sonde de niveau ATEX,Sonde de niveau non ATEX"
End With
End If

End Sub
-----------------------------------------------------------------------
Argument Formula1:= permet de remplir la liste de choix.
Dans cette exemple , je mets directement les mots de la liste.
Si tu veux remplir la liste de choix depuis une plage de cellule ,
tu peux donc écrire à la place: Formula1:="=$b$10:$b$100"

J'espere avoir un peu répondu à ta question.
A++
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 sept. 2008 à 12:35
Bonjour,

C'est possible (après faut voir ce que tu veux faire et où).
La liste est où ?
- Sur la feuille Excel ?
- Sur une UserForm (VBA) ?

http://nhen0039.chez-alice.fr/index.php
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
8 sept. 2008 à 13:42
Ce serait pour garder sur une feuille excel. Ce qui permettrait un remplissage plus rapide

Merci pour ta réponse si rapide
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 sept. 2008 à 16:28
Salut,

T'es pas dans le bon theme ! pour le VBA c'est ici :

Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-LANGAGES-DERIVES_287.aspx Langages dérivés] / [theme-VBA_244.aspx VBA] /

oui c'est faisable sans macro dans excel mais il y a quand meme des limites. Cela veut dire quoi :

J'ai essayé de le faire sans macro mais excel ne prend on compte que la
valeur de la cellule alors que je voudrais qu'il prenne la formule.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
8 sept. 2008 à 16:37
En fait je voudrais que excel conditionne une formule insérée dans une case et non la valeur de la case.

Si vous voulez un exemple concret envoyé moi un mail je vous répondrais en vous envoyant une feuille excel avec mon probème.

Désolé pour le mauvais emplacement si un modo pouvait le remettre à la bonne place ce serait classe.

Merci
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 sept. 2008 à 16:44
Non non non non non ... pas de message perso les questions et les reponses c'est ici si non rien !

donc precise au mieux le probleme et la question
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
8 sept. 2008 à 17:00
Pour etre bien clair mon problème est le suivant

J'ai une liste de choix dont les 3 choix sont: Gestion agitation; Gestion niveau; Gestion agitation + niveau

Si je choisi Gestion de niveau je veux qu'une autre liste de choix apparaisse dans la cellule d'à côté et dont les choix seront Agitateur électrique; Agitateur électrique

Si je choisi Gestion de niveau je veux une liste qui contient les choix : Sonde de niveau ATEX; sonde de niveau non ATEX

Si je choisi Gestion agitation + niveau je veux que les 2 listes apparaissent l'une en dessous de l'autre.

Voila en espérant avoir été clair sinon posez moi des questions
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
9 sept. 2008 à 11:52
Merci pour ta réponse Dedenet2.

Mais voi un autre problème se pose, celui ci plus facil à régler ^^

J'en fais quoi de ce texte ?

Pour le moment je comprends pas grand chose aux macros je pense avoir comprend le fonctionnement de celle ci mais je sais pas trop quoi en faire.

Alors si je pouvais avoir encore cette petite aide.

Merci d'avance

Bonne journée
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
9 sept. 2008 à 12:00
C'est bon j'ai reussi merci beaucoup pour votre aide

Encore bonne journée à vous tous et merci encore
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
9 sept. 2008 à 15:16
Private Sub Workbook_Open()
  On Error Resume Next
  Range("d23").Validation.Delete
  With Range("d23").Validation
      .Add Type:=xlValidateList, Formula1:= _
      "Coffret gestion agitation,Coffret gestion niveau,Coffret gestion agitation et de niveau"
  End With
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)


On Error Resume Next
Range("d24").Validation.Delete
If Range("d23").Value = "Coffret gestion agitation" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur 0.12kW 60Hz,Agitateur 0.12kW ATEX,Agitateur 0.18kW,Agitateur 0.18kW ATEX,Agitateur 0.37kW,Agitateur 0.25kW ATEX,Agitateur 0.75kW ATEX,Agitateur pneumatique + Stop vérin"
End With
ElseIf Range("d23").Value = "Coffret gestion niveau" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Sonde de niveau 1 non ATEX lg 430mm,Sonde de niveau 1 ATEX lg 430mm"
End With
ElseIf Range("d23").Value = "Coffret gestion agitation et de niveau" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur 0.12kW 60Hz,Agitateur 0.12kW ATEX,Agitateur 0.18kW,Agitateur 0.18kW ATEX,Agitateur 0.37kW,Agitateur 0.25kW ATEX,Agitateur 0.75kW ATEX,Agitateur pneumatique + Stop vérin, " & _
"Sonde de niveau 1 non ATEX lg 430mm,Sonde de niveau 1 ATEX lg 430mm"
End With
End If


End Sub

Voila ma macro, maintenant je voudrais pousser un peu plus loin en faisant en sorte que si d23= "Coffret gestion agitation et de niveau"

Alors La liste des agitateurs apparait dans d24 et la liste des Sonde dans d25.

Merci d'avance
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
9 sept. 2008 à 16:48
Désolé je n'ai pas reussi à éditer le post précédent.

Mon problème est résolu seulement un autre est apparu ... (engrenage infernal )

Lorsque je choisi Gestion agitation ou Gestion niveau tout ce passe bien la cellule D24 se change, tout ce passe bien également lorsque je choisis les 2 combinés les cellules D24 et D25 se changent.

Seulement lorsque je veux revenir en arrière la cellule D25 reste en liste de choix alors que je voudrais qu'elle se remette à 0 sans choix possible.

Donc je vous post ma nouvelle macro:

Private Sub Workbook_Open()
  On Error Resume Next
  Range("d23").Validation.Delete
  With Range("d23").Validation
      .Add Type:=xlValidateList, Formula1:= _
      "Coffret gestion agitation,Coffret gestion niveau,Coffret gestion agitation et de niveau"
  End With
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)


On Error Resume Next
Range("d24").Validation.Delete
If Range("d23").Value = "Coffret gestion agitation" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur 0.12kW 60Hz,Agitateur 0.12kW ATEX,Agitateur 0.18kW,Agitateur 0.18kW ATEX,Agitateur 0.37kW,Agitateur 0.25kW ATEX,Agitateur 0.75kW ATEX,Agitateur pneumatique + Stop vérin,_"
End With
ElseIf Range("d23").Value = "Coffret gestion niveau" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Sonde de niveau 1 non ATEX lg 430mm,Sonde de niveau 1 ATEX lg 430mm,_"
End With
ElseIf Range("d23").Value = "Coffret gestion agitation et de niveau" Then
With Range("d24").Validation
.Add Type:=xlValidateList, Formula1:= _
"Agitateur 0.12kW 60Hz,Agitateur 0.12kW ATEX,Agitateur 0.18kW,Agitateur 0.18kW ATEX,Agitateur 0.37kW,Agitateur 0.25kW ATEX,Agitateur 0.75kW ATEX,Agitateur pneumatique + Stop vérin,_"
End With
With Range("d25").Validation
.Add Type:=xlValidateList, Formula1:= _
"Sonde de niveau 1 non ATEX lg 430mm,Sonde de niveau 1 ATEX lg 430mm,_"
End With
End If


End Sub

Voila encore merci d'avance
0
horazon Messages postés 9 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 10 septembre 2008
10 sept. 2008 à 07:59
Personne pour m'aider ??? S'il vous plait
0
Rejoignez-nous