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

VBA Access Discussion :

Re: Sélection multiple d'une liste déroulante


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Re: Sélection multiple d'une liste déroulante
    Bonjour la communauté .

    Mon problème est le suivant j'ai une table Access (Nom :'Mission') contenant des champs ('codeSAPPartenaire' et 'localiteDestinationMission') de type texte court ; avec la propriété Zone de liste déroulante et j'ai mis à Oui la propriété 'Autoriser plusieurs valeurs' . Sur le formulaire j'ai créé un bouton d'insertion avec le code suivant vba au clic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Commande178_Click()
                Dim bd As DAO.Database
                Dim rs As DAO.Recordset
                Dim rst As DAO.Recordset
                Dim rs1 As DAO.Recordset
                Dim rs2 As DAO.Recordset
                Set bd = CurrentDb
                Dim var As Variant
                Dim var2 As Variant
                Dim var3 As Variant
                Dim var4 As Variant
                Dim texte As String
                Dim strSQL As String
                Dim idMission As Integer
                Dim i As Long
     
                Set rs = bd.OpenRecordset("Mission", dbOpenDynaset)
                rs.AddNew
                rs.Fields!codeSubventionBailleur = Me.codeSubventionBailleur
                rs.Fields!typologieMission = Me.typologieMission
                rs.Fields!objectifsGeneraux = Me.objectifsGeneraux
                rs.Fields!objectifsSpecifiques = Me.objectifsSpecifiques
                rs.Fields!dateDeDepart = Me.dateDeDepart
                rs.Fields!dateDeRetour = Me.dateDeRetour
                rs.Fields!methodologie = Me.methodologie
                rs.Fields!contexte = Me.contexte        
                For Each var In Me.codeSAPPartenaire.ItemsSelected
                      rs.Fields!codeSAPPartenaire = Me.codeSAPPartenaire.ItemData(var) + "," + rs.Fields!codeSAPPartenaire
                Next var
                For Each var2 In Me.localiteDestinationMission.ItemsSelected
                      rs.Fields!localiteDestinationMission = Me.localiteDestinationMission.ItemData(var2) + "," + rs.Fields!localiteDestinationMission
                Next var2     
                rs.Fields!libelleMission = Me.libelleMission   
                rs.Update
         MsgBox "Mission Sauvegardée !", vbInformation, "Rapport d'enregistrement"
    End Sub
    La code s'exécute mais pas comme prévue en fait quand je consulte la table Mission je voit que excepter les champs où la sélection multiple est autorisé c'est à dire ('codeSAPPartenaire' et 'localiteDestinationMission') toutes les autres champs contiennent l'information saisie sur le formulaire . Pourtant il n'y pas d'erreur d'exécution . J'ai tester la boucle for dans l'itération de donné mais j'ai l'impression que 'var' est vide c'est dire il se comporte comme si on n'a rien sélectionner sur le formulaire .

    Merci beaucoup de me venir en aide !!!

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    J'ai l'impression que vous vous compliquez la vie mais pour vous répondre il faudrait que vous déposiez un extrait de la partie de l'application qui pose problème (juste l'indispensable, anonymisé si nécessaire).

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour EricDgn ,

    Si j'ai bien compris c'est la partie du code source qui ne marche pas comme il le faut :

    c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                For Each var In Me.codeSAPPartenaire.ItemsSelected
                      rs.Fields!codeSAPPartenaire = Me.codeSAPPartenaire.ItemData(var) + "," + rs.Fields!codeSAPPartenaire
                Next var
                For Each var2 In Me.localiteDestinationMission.ItemsSelected
                      rs.Fields!localiteDestinationMission = Me.localiteDestinationMission.ItemData(var2) + "," + rs.Fields!localiteDestinationMission
                Next var2
    Quand je section sur des données sur la liste déroulante j'ai aucun résultat sur la table . J'espère que je me fait comprendre.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Tout m'étonne dans votre code, à commencer pas toute cette liste de rs.Fields!... = Me...
    Ensuite, utiliser un champ multi-valeurs ne simplifie généralement pas les choses. Personnellement, j'évite.
    Cependant, pour essayer d'avancer, un petit exemple en attaché.

    Cordialement.

    Un bon tutoriel: Les champs multi-valués
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Au fait dans mon cas je suis vraiment obligé d'utiliser un multi sélection .

    J'ai ouvert le fichier que vous m'avez joint ; mais dans votre cas c'est un peu diffèrent . En fait je contrôle les insertion dans la base de données avec un bouton (avec un du code vba au clic ) . Autrement dit si je fait un insertion au travers la touche entré du clavier ou avec un bouton exécutant une macro de sauvegarde j'ai pas ce problème . Mais comme je doit contrôler les valeurs entrées par l'utilisateur (interdire des champs nul et autre condition) je ne peut le faire qu'a travers le vba . Ainsi je récupère les valeur saisie que j'introduit dans la base avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Set rs = bd.OpenRecordset("Mission", dbOpenDynaset) // pour utiliter la table Mission
            rs.AddNew // Je fait une nouvelle ligne
            rs.Fields!contexte = Me.contexte // J'affecte la valeur saisie sur le champs 'Contexte' du formulaire à la collonne contexte de la table Mission
            For Each var In Me.codeSAPPartenaire.ItemsSelected // De la même manière j'essai de recuperer la valeur selectionner au niveau des champ multi 
                      rs.Fields!codeSAPPartenaire = Me.codeSAPPartenaire.ItemData(var) + "," + rs.Fields!codeSAPPartenaire
                Next var
                For Each var2 In Me.localiteDestinationMission.ItemsSelected
                      rs.Fields!localiteDestinationMission = Me.localiteDestinationMission.ItemData(var2) + "," + rs.Fields!localiteDestinationMission
                Next var2
    Hélas théoriquement il n'y a pas de problème mais après l'exécution les champs multi sélection sont vides .
    Merci de prêter toujours attention à mon problème !!!

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Si je comprends bien quand vous voulez ajouter un nouvel enregistrement, vous ouvrez un formulaire dont aucun des champs n'est lié à la table Mission. Dans cette situation où tous les champs sont "indépendants", il n'est pas possible d'avoir un champ liste multi-sélection.
    Cordialement.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Non c'est pas ça . Mon formulaire a pour source la table mission et tous les champs du formulaire index bien une colonne de la table . En fait c'est la procédure pour insérer une donnée via vba . A ce que je sache .

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Désolé, je ne parviens pas à comprendre comment vous faites. Vous pourriez éventuellement modifier ma petite db exemple pour montrer cela.
    Cordialement.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour ;

    Comment vous allez ?

    J'ai adapté votre base de données exemple avec mon problème . J'ai l'ai en attaché .

    Cordialement .
    Fichiers attachés Fichiers attachés

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    En fait, il n'y a rien à faire, cela s'enregistre automatiquement!

    Cordialement.
    Fichiers attachés Fichiers attachés

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour la réponse pertinente mais je ne comprend pas certains code .

    Par exemple tous ce qui suit je n'arrive pas comprendre le rôle de chaque fonction :

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub Bloquer(b As Boolean)
        With Me
            .buttonNouveau.Enabled = b
            .buttonModifier.Enabled = b
            .buttonSave.Enabled = Not b
            .buttonAnnuller.Enabled = Not b
            .MsObj.Enabled = Not b
            .MsLoc.Enabled = Not b
        End With
        Me.AllowAdditions = Not b
    End Sub
     
    Private Sub Form_AfterInsert()
        Debug.Print "Form_AfterInsert"
    End Sub
     
    Private Sub Form_AfterUpdate()
        Debug.Print "Form_AfterUpdate"
    End Sub
     
    Private Sub Form_BeforeInsert(Cancel As Integer)
        Debug.Print "Form_BeforeInsert"
    End Sub
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Debug.Print "Form_BeforeUpdate"
    End Sub
     
    Private Sub Form_Current()
        Debug.Print "Form_Current", Me.NewRecord
    End Sub
     
    Private Sub Form_DataSetChange()
        Debug.Print "Form_DataSetChange"
    End Sub
     
    Private Sub Form_Open(Cancel As Integer)
        Bloquer True
    End Sub
    Private Sub buttonModifier_Click()
        Bloquer False
    End Sub
     
    Private Sub buttonNouveau_Click()
        Bloquer False
        DoCmd.GoToRecord , , acNewRec
    End Sub

    Pour le bouton Annuler j'ai remis à True la fonction Bloquer pour qu'il puisse marche correctement .
    Merci .

  12. #12
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Les lignes 13 à 36 sont à supprimer, c'était juste pour suivre la succession des événements.
    Si b = True, alors Not b = False (et inversément), ce qui permet de gérer les divers .Enabled
    Cordialement

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour votre appuis assez opérationnel . Bonne journée et j'espère qu'on va toujours maintenir le contact .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sélection multiple dans une liste déroulante
    Par annkevsa dans le forum LabVIEW
    Réponses: 0
    Dernier message: 23/10/2013, 14h07
  2. Réponses: 3
    Dernier message: 13/08/2009, 10h55
  3. Découpage de chaine et sélection multiple dans une liste
    Par Ben-o dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 05/12/2008, 10h56
  4. importation sélection multiple d'une liste
    Par MAMANHOU dans le forum IHM
    Réponses: 2
    Dernier message: 03/07/2008, 10h54
  5. [Forms 9i] Sélection multiple dans une liste
    Par Magnus dans le forum Forms
    Réponses: 13
    Dernier message: 17/01/2007, 12h26

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