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

Macros et VBA Excel Discussion :

Remplir une zone de liste Excel avec une requête Access (problème)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut Remplir une zone de liste Excel avec une requête Access (problème)
    Bonjour,

    J'étais déjà venu sur ce forum pour le même problème et je ne retrouve plus mon ancien post.

    Mon problème est énoncé dans l'intitulé du sujet. Sur le site, j'ai vu que ceci devait me permettre de le résoudre :

    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
    Sub FillCombo()
    Dim db As DAO.Database
    Dim rec As DAO.Recordset
    curshname = ActiveSheet.Name
    Set db = DAO.OpenDatabase(ThisWorkbook.Path & "\Membres1.mdb", False, False)
    Set rec = db.OpenRecordset("SELECT NomFamille FROM Membres WHERE DepartOuRegionTravail = 'WA'", DAO.dbOpenSnapshot)
    For Each sh In ActiveWorkbook.Sheets(curshname).Shapes
    If sh.Type = msoFormControl And sh.Name Like "Drop*" Then
    sh.Select
    Do While Not (rec.EOF)
    Selection.AddItem rec.Fields(0).Value
    rec.MoveNext
    Loop
    Exit For
    End If
    Next sh
    rec.Close
    db.Close
    Set rec = Nothing
    Set db = Nothing
    End Sub
    Cependant, j'éprouve quelques difficultées : pour la ligne "curshname = ActiveSheet.Name", VB me dit que la variable "curshname" n'est pas définie. Je décide alors de supprimer cette ligne et de remplacer "curshname" par un nom de feuille pour la suite du programme et j'ai un autre problème : la variable "sh" n'est pas définie. Quelqu'un pourrait-il m'aider si possible en m'expliquant brièvement en quoi consiste les grandes lignes de ce programme afin que je puisse le modifier à ma guise ?

    Merci et bonne journée !

  2. #2
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    ben, déclare tes variables, non?

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    C'est pas comme ça qu'on les déclare ?

    Je débute en Visual Basic et j'ai des programmes ou j'écrivais juste "i = 1" et il ne me posait pas de problème de déclaration de variable.
    Elles se déclarent où et comment les variables ?

  4. #4
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    juste à tout hasard, as-tu dans ton code un "Option Explicit" en début?

    Pour déclarer une variable:

    Dim MaVar As Type

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    Citation Envoyé par Asdorve
    juste à tout hasard, as-tu dans ton code un "Option Explicit" en début?
    Oui pourquoi ?

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    OK je viens de comprendre. Le OPTION Explicit dit qu'il faut déclarer les variables de manière explicite.

    Je l'ai enlevé et maintenant, je n'ai plus d'erreur mais mon programme ne fait rien...

  7. #7
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    le fait d'avoir Option Explicit t'oblige à déclarer toutes tes variables, si tu en oublies une, il te renvoit une erreur comme celle que tu as reçu.

    Si tu déclare correctement ta variable curshname ça devrait rentrer dans l'ordre.

    Essaye (momentanément) de mettre le option Explicit en commentaire et relance .

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Citation Envoyé par Tontorise
    De plus, je ne vois pas non plus où on indique au programme l'endroit ou il doit créer la liste déroulante (feuille et cellule).
    Sur une page (Form) tu prends, dans la boite des composants, un contrôle ListBox, tu le poses sur Form et tu la renomes Selection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do While Not (rec.EOF)
    Selection.AddItem rec.Fields(0).Value
    rec.MoveNext
    Loop
    A mon avis le code que tu as posé semble bon (avec les correctifs signalés).
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    Merci pour les informations. Cependant, le programme n'affiche plus d'erreur mais il ne fait rien. J'ai essayé d'ajouter "selection.show" à la fin du petit programme pour qu'il affiche la liste mais ça ne change rien. C'est sûrement un truc con qu'il faut faire mais je m'y connaît pas encore en Visual Basic.

Discussions similaires

  1. Remplir une zone de liste Excel par une requête Access
    Par cafeine dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2011, 10h57
  2. Réponses: 2
    Dernier message: 20/11/2009, 11h37
  3. Remplir une zone de liste Excel par une requête Access
    Par Bourbaky dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/10/2007, 15h00
  4. Réponses: 1
    Dernier message: 09/10/2007, 14h17
  5. [Source][VBA-E] Remplir une zone de liste Excel par une requête Access
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/01/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