IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Remplacer une liste déroulante Multi Choix par


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 492
    Points : 166
    Points
    166
    Par défaut Remplacer une liste déroulante Multi Choix par
    Bonjour,

    J'aurais besoin de faire des listes déroulantes "Multi Choix" (plusieurs valeurs), mais ...
    1. cela semble déconseillé,
    2. il est impossible d'importer des données vers cette sorte de liste déroulante.

    J'ai dans un premier temps décidé de remplacer cette liste déroulante par un sous-formulaire ce qui fonctionne, SAUF qu'un sous-formulaire n'est possible qu'avec des formulaires uniques... et moi j'aimerais utiliser des formulaires continus...

    Auriez-vous pour moi, des conseils, des pistes à suivre...

    * Exemple 1 (avec liste déroulante "Multi valeurs" )
    Table/Formulaire1 avec champs
    • Nom
    • Prénom
    • Diplômes (Liste déroulante "Multi Valeurs")


    * Exemple 2 (avec sous-formulaire )
    Table1 avec champs
    • Nom
    • Prénom

    Formulaire1 avec champs
    • Nom
    • Prénom
    • Sous-formulaire2 (Diplômes)

    Table/Sous-formulaire2 avec champ
    • Diplômes

    Le top serai pour moi, le premier exemple, mais l'importation est impossible via Excel, donc j'irais vers l'exemple 2, mais les formulaires continus ne sont pas possibles... Help

    Merci d'avance pour vos lumières

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 492
    Points : 166
    Points
    166
    Par défaut
    J'ai une idée mais, j'ai des problèmes...

    Explication :
    Utiliser une liste déroulante (simple), et deux boutons "Ajouter" & "Retirer" et un champ [Valeurs]...

    Le but est de choisir une donnée dans la liste déroulante et grâce au bouton "Ajouter", ajouter cette valeur dans le champ [Valeurs] avec un "; "...

    Exemple :
    • Liste déroulante : Maison
    • Champ [Valeurs] après ajout... : Maison
    • Liste déroulante : Voiture
    • Champ [Valeurs] après ajout... : Maison, Voiture


    Ca c'est simple, MAIS maintenant il y a le bouton "Retirer" et aussi le fait de ne pas pouvoir donner la possibilité aux utilisateur d'ajouter deux fois la même valeurs... et aussi de ne pas essayer de retirer une valeur qui n'existe pas dans le champ [Valeurs] et là, je bloc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande3_Click()
    If IsNull(Me.VALEURS.Value) Then Me.VALEURS.Value = Me.ID_CHOIX.Column(1) Else Me.VALEURS.Value = Me.VALEURS.Value & "; " & Me.ID_CHOIX.Column(1)
    End Sub

    Des idées... pour le bouton "Retirer" et les deux vérifications ?
    Merci d'avance

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 492
    Points : 166
    Points
    166
    Par défaut
    J'ai trouvé pour vérifier si cela existe déjà !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Me.VALEURS.Value, Me.ID_CHOIX.Column(1)) <> 0 Then MsgBox ("Attention cela existe déjà !")
    et pour tester si la valeur n'existe pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Me.VALEURS.Value, Me.ID_CHOIX.Column(1)) = 0 Then MsgBox ("La valeur n'existe pas !")
    Il me reste à trouver comment détecter la chaine si elle existe et l'enlever... attention aux "; "...

    J'ai trouvé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.VALEURS.Value = Replace(Me.VALEURS.Value, Me.ID_CHOIX.Column(1), "")
    Mais j'ai un problèmes avec le ";", comment lui dire d'enlever aussi le ";" qui se trouve derrière lui SAUF si celui-ci n'a pas de ";" (première Valeur...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.VALEURS.Value = Replace(Me.VALEURS.Value, "; " & Me.ID_CHOIX.Column(1), "")
    Idem si j'efface et qu'il ne reste plus rien... ? il faudrait que la variable soit NULL

    Certainement pas le top, mais voilà...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande4_Click()
    Dim nbrmot As Integer
    Dim unermot As String
    If InStr(Me.VALEURS.Value, Me.ID_CHOIX.Column(1)) = 0 Then MsgBox ("Pas ce mot !"): Exit Sub
    nbrmot = Len(Me.ID_CHOIX.Column(1))
    unermot = Left(Me.VALEURS.Value, nbrmot)
    If InStr(Me.VALEURS.Value, ";") = 0 Then
    If unermot = Me.ID_CHOIX.Column(1) Then Me.VALEURS.Value = ""
    End If
    If unermot = Me.ID_CHOIX.Column(1) Then Me.VALEURS.Value = Replace(Me.VALEURS.Value, Me.ID_CHOIX.Column(1) & "; ", "") Else Me.VALEURS.Value = Replace(Me.VALEURS.Value, "; " & Me.ID_CHOIX.Column(1), "")
    End Sub

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/04/2010, 10h57
  2. Réponses: 11
    Dernier message: 19/02/2010, 16h00
  3. Ajouter à une liste déroulante multi-valuée
    Par Jonkill dans le forum VBA Access
    Réponses: 7
    Dernier message: 31/08/2008, 20h17
  4. Réponses: 2
    Dernier message: 21/10/2007, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo