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 :

Remplir une ComboBox avec des fichiers


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut Remplir une ComboBox avec des fichiers
    Bonjour,

    Voila mon souci :
    A l'ouverture de mon application j'ai fait une combo pour que l'utilisateur choissisent sur quelle base travaillée. Pour trouver les bases, j'ai développé une procédure qui fonctionne très bien :

    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
    Dim Chemin As String
        Dim Ctr As Integer
        Chemin = CurrentProject.Path
        'MsgBox Chemin
     
        With Application.FileSearch
     
            .NewSearch
            .RefreshScopes
            .LookIn = Chemin
            .FileName = "vet_base_*.mdb"
            .Execute
     
            'For Ctr = 1 To .FoundFiles.Count
                'MsgBox .FoundFiles(Ctr)
            'Next
     
        End With
    Voila par contre je ne sais pas comment faire pour que dans ma combo apparaissent les bases disponibles.

    Merci d'avance,

  2. #2
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    essaye avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combo.RowSource = valeurs
    où valeurs contient une liste sous forme "ligne1;ligne2;ligne.....;"
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Je n'ai pas bien compris dsl...

    peux tu me renseigner sachant que ma combo s'appelle lstSite et que le résultat de ma boucle est des MsgBox :
    C:\......\vet_base_colmar
    C:\....\vet_base_mulhouse
    C:\....\vet_base_strasbourg

    et le mieux encore serait d'afficher dans la Combo juste Colmar, Mulhouse, Strasbourg (c'est optionnel cela)

    Merci

  4. #4
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par mouaa Voir le message
    essaye avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combo.RowSource = valeurs
    où valeurs contient une liste sous forme "ligne1;ligne2;ligne.....;"
    J'ai essayé cela mais ca ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           'For Ctr = 1 To .FoundFiles.Count
                combo.RowSource = FoundFiles(Ctr)
            'Next
    Quelqu'un peut il m'aider ?

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Il faut contruire le contenu de la comboBox, celle-ci étant configurée en mode "liste de valeurs".
    Dans le code ci-dessous on crée la liste de valeurs dans la variable strList, puis on l'affecte à la propriété RowSource (Contenu) de la comboBox.
    Code vb : 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
    Dim Chemin As String
        Dim Ctr As Integer
        Dim strList As String	
        Chemin = CurrentProject.Path
        'MsgBox Chemin
     
        With Application.FileSearch
     
            .NewSearch
            .RefreshScopes
            .LookIn = Chemin
            .FileName = "vet_base_*.mdb"
            .Execute
     
            For Ctr = 1 To .FoundFiles.Count
                strList = strList & .FoundFiles(Ctr) & ";"
            Next
            if Len(strList)>0 Then strList = Left(strList, Len(strList)-1)
        End With
     
        ' Source des lignes de la comboBox
        NomDeLaComboBox.RowSource = strList
    Est-ce que ce code s'exécute bien dans le formulaire contenant la comboBox ?
    Autrement il faut changer la derniere ligne de code
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ' Source des lignes de la comboBox
        Forms("NomDuFormulaire").NomDeLaComboBox.RowSource = strList
    A+

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonjour,

    Il faut contruire le contenu de la comboBox, celle-ci étant configurée en mode "liste de valeurs".
    Dans le code ci-dessous on crée la liste de valeurs dans la variable strList, puis on l'affecte à la propriété RowSource (Contenu) de la comboBox.
    Code vb : 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
    Dim Chemin As String
        Dim Ctr As Integer
        Dim strList As String	
        Chemin = CurrentProject.Path
        'MsgBox Chemin
     
        With Application.FileSearch
     
            .NewSearch
            .RefreshScopes
            .LookIn = Chemin
            .FileName = "vet_base_*.mdb"
            .Execute
     
            For Ctr = 1 To .FoundFiles.Count
                strList = strList & .FoundFiles(Ctr) & ";"
            Next
            if Len(strList)>0 Then strList = Left(strList, Len(strList)-1)
        End With
     
        ' Source des lignes de la comboBox
        NomDeLaComboBox.RowSource = strList
    Est-ce que ce code s'exécute bien dans le formulaire contenant la comboBox ?
    Autrement il faut changer la derniere ligne de code
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ' Source des lignes de la comboBox
        Forms("NomDuFormulaire").NomDeLaComboBox.RowSource = strList
    A+
    Si ça ne fonctionne pas, tu peux rajouter ça :
    Pour une liste simple dans le combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NomDeLaComboBox.RowSourceType = "Liste valeurs"
    'et ensuite tu donnes la source, comme l'a dit LedZeppII:
    NomDeLaComboBox.RowSource = strList
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  7. #7
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Flo88 Voir le message
    Je n'ai pas bien compris dsl...

    peux tu me renseigner sachant que ma combo s'appelle lstSite et que le résultat de ma boucle est des MsgBox :
    C:\......\vet_base_colmar
    C:\....\vet_base_mulhouse
    C:\....\vet_base_strasbourg

    et le mieux encore serait d'afficher dans la Combo juste Colmar, Mulhouse, Strasbourg (c'est optionnel cela)

    Merci
    Pour faire ça, tu dois créer un jeu d'enregistrement, avec 2 champs: l'un contient le nom de la ville (Colmar, Mulhouse, Strasbourg), l'autre le chemin (C:\......\vet_base_colmar).

    Par exemple, tu peux créer une table temporaire, et rajouter un enregistrement dedans à chaque fois que tu trouves une BDD (dans ton code tu renvoies un MsgBox pour le moment).
    Pour remonter le nom, je vois que le nom de tes BDD finissent tous par le nom de la ville, donc tu peux récupérer les caractères qui se situent après le "_" dans chemin de chaque BDD, tu rajoutes une majuscule à la première lettre, et tu insères le nom dans la table temporaire, en même temps que tu insères le chemin.

    une fois que c'est fait, tu n'as plus qu'à faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TaCombo.RowSourceType = "Table/Requête"
    TaCombo.RowSource = "ta_table_temporaire"
    Voilà, si je ne me suis pas trompée, ça devrait être bon.

    Il y a probablement des façons plus simples, si quelqu'un a une suggestion....
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  8. #8
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par mouaa Voir le message
    Si ça ne fonctionne pas, tu peux rajouter ça :
    Pour une liste simple dans le combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NomDeLaComboBox.RowSourceType = "Liste valeurs"
    'et ensuite tu donnes la source, comme l'a dit LedZeppII:
    NomDeLaComboBox.RowSource = strList
    Ceci ne fonctionne pas
    J'ai essayé tes deux formules...

  9. #9
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    que contient ta "strList" au moment où tu l'associes au rowsource de ta combo ?
    sur quelle ligne access bloque-t-il ?
    quelle est son message d'erreur ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  10. #10
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par mouaa Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TaCombo.RowSourceType = "Table/Requête"
    TaCombo.RowSource = "ta_table_temporaire"
    Voilà, si je ne me suis pas trompée, ça devrait être bon.

    Il y a probablement des façons plus simples, si quelqu'un a une suggestion....
    Ceci fonctionne... Plus qu'à essayer de faire le insert into pour remplir la base

  11. #11
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par mouaa Voir le message
    Pour faire ça, tu dois créer un jeu d'enregistrement, avec 2 champs: l'un contient le nom de la ville (Colmar, Mulhouse, Strasbourg), l'autre le chemin (C:\......\vet_base_colmar).

    Par exemple, tu peux créer une table temporaire, et rajouter un enregistrement dedans à chaque fois que tu trouves une BDD (dans ton code tu renvoies un MsgBox pour le moment).
    Pour remonter le nom, je vois que le nom de tes BDD finissent tous par le nom de la ville, donc tu peux récupérer les caractères qui se situent après le "_" dans chemin de chaque BDD, tu rajoutes une majuscule à la première lettre, et tu insères le nom dans la table temporaire, en même temps que tu insères le chemin.

    une fois que c'est fait, tu n'as plus qu'à faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TaCombo.RowSourceType = "Table/Requête"
    TaCombo.RowSource = "ta_table_temporaire"
    Voilà, si je ne me suis pas trompée, ça devrait être bon.

    Il y a probablement des façons plus simples, si quelqu'un a une suggestion....
    Cela fonctionne bien... Cependant, je n'arrive pas à faire ma requête d'ajout... J'ai fait cela et cela bugge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For Ctr = 1 To .FoundFiles.Count
     
                SQL = "INSERT INTO SITE(Code, Chemin) " _
                & "VALUES (" & Ctr & ", " & .FoundFiles(Ctr) & ")"
                DoCmd.RunSQL (SQL)
     
            Next

  12. #12
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    tu peux faire un debug.print sur ta string SQL afin qu'on puisse voir le contenu de ta requête ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  13. #13
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Ca a l'air de bien fonctionné pourtant :

    INSERT INTO SITE(Nom, Chemin) VALUES (1, C:\Documents and Settings\5STAGE5\Bureau\ACCESS_vetement\vet_base_colmar.mdb)
    INSERT INTO SITE(Nom, Chemin) VALUES (2, C:\Documents and Settings\5STAGE5\Bureau\ACCESS_vetement\vet_base_mulhouse.mdb)

    Le message d'erreur est le suivant : Erreur d'exécution '3075' : Erreur de syntaxe(opérateur absent) dans l'expression 'C:\Doc......

  14. #14
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    Commence par encadrer tes valeur par des quotes simples dans ta requête, ça devrait aller mieux :
    Comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For Ctr = 1 To .FoundFiles.Count
     
                SQL = "INSERT INTO SITE(Code, Chemin) " _
                & "VALUES ('" & Ctr & "', '" & .FoundFiles(Ctr) & "')"
                DoCmd.RunSQL (SQL)
     
            Next
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  15. #15
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup cela fonctionne beaucoup mieux !!!
    Le must serait maintenant si possible au lieu d'avoir des numéros comme clé primaire, avoir les noms des villes qui sont à la fin et du champs (après le _ mais je ne sais pas tester)
    mais aussi de mettre ceci dans la combo et non le chemin

    MERCI MERCI MERCI

    Vous êtes énorme !

  16. #16
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    Pour remonter le nom, je vois que le nom de tes BDD finissent tous par le nom de la ville, donc tu peux récupérer les caractères qui se situent après le "_" dans chemin de chaque BDD, tu rajoutes une majuscule à la première lettre, et tu insères le nom dans la table temporaire, en même temps que tu insères le chemin.
    C'est ça que tu veux faire ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  17. #17
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    oui dsl

Discussions similaires

  1. [XL-2003] Remplir une combobox avec le contenu d'une colonne d'un autre fichier Excel
    Par funkykiwi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2011, 15h50
  2. Remplir une liste avec des noms de fichiers
    Par Claude_Azoulai dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/09/2007, 08h00
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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