Récupération valeur liste déroulante et affichage d'un texte

Fermé
Sly - 30 mai 2013 à 14:50
 Sly - 3 juin 2013 à 08:05
Bonjour,

Je suis en train de faire une base de données avec des listes déroulantes, malheureusement, autant en Excel j'arrive pas trop mal à me débrouiller, autant en Access, je pédale dans le taboulé.

J'ai fait une base de données avec 2 listes déroulantes, la seconde dépendant de la première, et je voulais faire en sorte que si on choisissait quelques valeurs sur la liste déroulante (5 sur 45 environ), un message texte (ou une msgbox) apparaisse pour nous avertir que nous utilisons un modèle spécial.

Actuellement, j'en étais à ça :



Private Sub cmbCategories_AfterUpdate()
Dim lngIDCat   As Long
Dim SQL        As String

         ' Pour faire adapter la seconde liste déroulante à la première
  If Not IsNumeric(Me!cmbCategories) Then Exit Sub
  lngIDCat = Me!cmbCategories
  SQL = "SELECT IDPart, Part, IDCategorie FROM TBLParts WHERE IDCategorie =" & lngIDCat & " ORDER BY Part"
  cmbParts.RowSource = SQL
  cmbParts.Enabled = True
  cmbParts.SetFocus
  cmbParts.Dropdown
  
         'Ca c'était pour un test de message box
  Dim MonCtl As Control
Dim Element As Variant
Set MonCtl = Forms!FRLTest!cmbCategories
For Each Element In MonCtl.ItemsSelected
    MsgBox MonCtl.Column(0, Element)
Next
  
          'Et ça pour un texte (nommé platine) à afficher lorsque l'on sélectionne 3738.
  'If Me.cmbCategories = "3738" Then
    'Me.Platine.Visible = True
    'Else
    'Me.Platine.Visible = False
    'MsgBox "Votre référence est en platine"
  'End If

End Sub


Je suis sur excel 2003 et 2010 (j'ai dû alterner pour contourner des problèmes), mais là, c'est tout con, mais je n'arrive pas à dire "Si tu trouves 3738 dans la liste cmbCategories, affiche la zone de texte caché, sinon ne fais rien"...

En vous remerciant d'avance pour votre aide,
Sly

2 réponses

f894009 Messages postés 17209 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 décembre 2024 1 711
30 mai 2013 à 18:26
Bonjour,

pourquoi ces lignes sont en commentaire

'If Me.cmbCategories = "3738" Then
'Me.Platine.Visible = True
'Else
'Me.Platine.Visible = False
'MsgBox "Votre référence est en platine"
'End If
0
Bonsoir à tout les trois,
Et en plus les nombres ne doivent pas mis entre guillemets, (If Me.cmbCategories = "3738" )
Et en plus tu écris
 "  If Not IsNumeric(Me!cmbCategories) Then Exit Sub  "
0
Bonsoir, merci déjà de répondre.

Pour les lignes en commentaire, c'est parce que j'ai oublié d'enlever le commentaire, mais globalement, c'était pour montrer 1 des deux exemples que j'ai essayés.

Sinon pour Tessel, j'ai voulu les mettre en numérique, mais ma base de données comporte des données numériques ET textuelles dans la même base. Je peux avoir comme ici "3738" et "3738 rhabillage" par exemple.
0
Bonsoir,
La question est de forme.
Tu dis : "ma base de données comporte des données numériques ET textuelles dans la même base. " (Peu importe, ce n'est pas le problème.)
Et tu écris dans ton code: "
If Not IsNumeric(Me!cmbCategories) Then Exit Sub
Alors il faut que tu comprennes que si cmbCategories prend la valeur "3738 rhabillage" Access considèrera que c'est du texte et sortira immédiatement. Par contre si cmbCategories prend la valeur "3738" il devra la considérer comme Numeric et de ce fait cette valeur ne devra pas être comparée à une valeur de type texte mais numérique et devra être écrite sans les guillemets.
0
Ha oui oui, je comprends ce que tu veux dire. Cependant, j'ai paramétré ma liste en texte et non en numérique, justement pour éviter ce genre de problèmes. La preuve, la première partie, celle qui comporte le "If Not IsNumeric etc." sert à activer la recherche de la seconde colonne, qui s'adapte à la première. Et elle marche, malgré des valeurs numériques, car considérées comme texte.

Mais globalement, là n'était pas la question (vu que la première partie de mon code fonctionne), la question était surtout pour la deuxième, qui disait que si on trouvait une certaine valeur dans la première colonne -la fameuse "If Not IsNumeric", une zone de texte devienne visible, et si elle ne la trouve pas, qu'elle reste invisible.

(PS : Merci de m'aider, et désolé de répondre tardivement, n'ayant Access qu'au travail, je n'ai pas pu tester des solutions pour faire avancer mon fichier.)
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 30/05/2013 à 22:48
Bonjour
Je ne sais si c'est cela que tu recherches mais voila un exemple sur les listes deroulantes multicriteres.
Tu choisis dans la liste 1, elle donne reponse dans la liste 2, tu choisis dans la liste 2, reponse dans la liste 3
https://www.cjoint.com/c/CEEwRSADzXQ
0
Bonsoir,

Merci, je vais regarder votre document et voir si je peux utiliser une partie de ses codes pour m'aider sur mon projet.

Bien à vous.
0