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

Contribuez Discussion :

[VBA] - Lire un champs multivalué dans un formulaire


Sujet :

Contribuez

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 44
    Points
    44
    Par défaut [VBA] - Lire un champs multivalué dans un formulaire
    Bonjour à tous,

    Depuis Access 2007, il est possible de créer, dans une table, un champs avec une liste déroulante à sélection multiple. Le cas d'utilisation décrit ici part du principe qu'un tel champs a été mis en oeuvre puis inclus dans un formulaire et que nous devons récupérer sa valeur pour un traitement en VBA.

    Dans le cas d'un ComboBox classique sa valeur sera récupérée avec la code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
        'Affiche le contenu du champs
        Debug.Print Me.MonComboBox.Value
    End Sub
    Avec un ComboBox multivalué, la valeur est stockée dans une table et affichée sous la forme d'un tableau. Elle ne pourra donc pas être lue avec la méthode indiquée ci dessus.
    Pour y parvenir nous devons interpréter le contenu du champs comme un "Array()" tel que ci-deesous :
    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
    Sub Test()
        'Déclaration des valiables utilisées
        Dim MonTableau, i, MaValeur
     
        'Affectation du contenu de mon ComboBox à la variable 'MonTableau'
        MonTableau = Me.MonComboBox.Value
     
        'Lecture du contenu du tableau et concaténation des valeurs dans la variable 'MaValeur'
        For i = 0 To UBound(MonTableau)
            MaValeur = MaValeur & MonTableau(i) & ";"
        Next
     
        'On retire le ';' qui restera à la fin de la chaine
        MaValeur = Left(MaValeur, Len(MaValeur) - 1)
     
        'Affichage du résultat
        Debug.Print MaValeur
    End Sub
    Voilà, j'espère que ce bout de code aidera quelqu'un ...

    Bonne journée à tous !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    En complément, une autre solution peut éventuellement être utilisée si le cas le permet.

    Nous partirons du principe que le formulaire dans lequel se trouve la champs multivalué dont nous devons récupérer la valeur contient également l'ID de l'enregistrement dans la table ou se trouve le champs en question.
    Dans ce cas, la fonction DLookup nous aidera de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Test()
        'Déclaration de la variable utilisé
        Dim MaValeur
        'Selon l’événement utilisé pour lire cette valeur, il peut être utile d'actualiser les données
        Me.Refresh
        'On récupère enfin notre valeur directement dans la table
        MaValeur = DLookup("NomDuChampsMultivalué", "NomDeLaTable", "NomDuChampsID = " & Me.EnrID)
        'Et on l'affiche
        Debug.Print MaValeur
    End Sub

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Salut,

    un tutoriel est également disponible ici :
    https://warin.developpez.com/access/multivalue/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. [AC-2013] Lire un champ Multivalué dans un controle
    Par daerlnaxe dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/12/2014, 10h42
  2. [AC-2013] Lire un champ d'un sous formulaire en VBA
    Par Ludwik dans le forum VBA Access
    Réponses: 6
    Dernier message: 11/10/2014, 19h06
  3. Réponses: 1
    Dernier message: 25/01/2012, 13h11
  4. Réponses: 6
    Dernier message: 19/11/2010, 19h27
  5. Réponses: 5
    Dernier message: 31/03/2007, 23h36

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