Affichage liste sous condition [Résolu]

horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 8 sept. 2008 à 10:59 - Dernière réponse : horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention - 8 sept. 2008 à 21:08
3
Merci
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++

Merci dedenet2 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de dedenet2
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 8 sept. 2008 à 12:35
0
Merci
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
Commenter la réponse de NHenry
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 8 sept. 2008 à 13:42
0
Merci
Ce serait pour garder sur une feuille excel. Ce qui permettrait un remplissage plus rapide

Merci pour ta réponse si rapide
Commenter la réponse de horazon
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 8 sept. 2008 à 16:28
0
Merci
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.
Commenter la réponse de bigfish_le vrai
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 8 sept. 2008 à 16:37
0
Merci
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
Commenter la réponse de horazon
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 8 sept. 2008 à 16:44
0
Merci
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
Commenter la réponse de bigfish_le vrai
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 8 sept. 2008 à 17:00
0
Merci
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
Commenter la réponse de horazon
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 9 sept. 2008 à 11:52
0
Merci
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
Commenter la réponse de horazon
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 9 sept. 2008 à 12:00
0
Merci
C'est bon j'ai reussi merci beaucoup pour votre aide

Encore bonne journée à vous tous et merci encore
Commenter la réponse de horazon
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 9 sept. 2008 à 15:16
0
Merci
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
Commenter la réponse de horazon
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 9 sept. 2008 à 16:48
0
Merci
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
Commenter la réponse de horazon
horazon 9 Messages postés lundi 8 septembre 2008Date d'inscription 10 septembre 2008 Dernière intervention - 10 sept. 2008 à 07:59
0
Merci
Personne pour m'aider ??? S'il vous plait
Commenter la réponse de horazon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.