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 :

[E-07]Effacer une zone de liste déroulante qui est remplie avec une requete access


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 45
    Points : 26
    Points
    26
    Par défaut [E-07]Effacer une zone de liste déroulante qui est remplie avec une requete access
    Bonjour !

    J'ai farfouillé un peu partout sur le forum et je suis tombé sur cet exemple :

    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
    Sub FillCombo()
     
    Dim db As DAO.Database
    Dim rec As DAO.Recordset
     
    curshname = ActiveSheet.Name
    Set db = DAO.OpenDatabase("C:\Temp\MaBase.mdb", False, False)
     
    Set rec = db.OpenRecordset("SELECT unChamp FROM MaTable WHERE Machin = 'toto'", 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
    Jusque la pas de soucis. par contre impossible d'éffacer les valeurs contenus dans la liste de même je ne comprend pas comment récuperer la valeur saisis par l'utilisateur.

    je ne connaissais pas le code Sh.type ... et selection.additem. je pensais naivement qu'avec un selection.recordcount ou listcount je pourrais récuperer le nombre d'élement présent dans ma liste et par la suite faire une boucle pour y éffacer, de même je pensais a un selection.value pour récuperer la valeur. Mais rien ne marche !

    Si quelqu'un pouvait m'expliquer ou me donner un lien qui me permettrait de comprendre je vous en serais tres reconnaissant !

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Je n'ai pas regardé ton code en détail mais tu peux tester

    pour effacer le contenu de la liste


    bonne soirée
    michel

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Bonjour ! Merci pour la réponse malheureusement j'avais déja essayer il me dit : "erreur d'execution 438 propriete ou méthode non gérée par cet objet"



    Par contre j'arrive a retourner le numero de ligne qui a été selectionné par l'utilisateur dans la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For Each Sh In ActiveWorkbook.Sheets("Tableau par LCT").Shapes
    If Sh.Type = msoFormControl And Sh.Name Like "Choix_Posit*" Then
     
    Sh.Select
     
    Selection.Value
    MsgBox Selection.Value
    Exit For
     
     
    End If
    Next Sh
    Par contre ce qui m'interresse c la valeur de cette ligne ...

    Si vous avez une idée !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    je n'avais pas fait attention qu'il s'agissait d'un objet de la barre d'outils formulaires.
    pour supprimer le contenu de la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Ws As Worksheet
     
    Set Ws = ThisWorkbook.Worksheets("Feuil1")
    Ws.Shapes("Zone de liste 2").ControlFormat.RemoveAllItems

    bonne soirée
    michel

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonsoir

    et pour ta deuxième question :

    Comment identifier les lignes sélectionnées dans une Listbox formulaire ?


    bonne soirée
    michel

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Merci de vous être penchez sur mon cas

    j'ai enfin compris comment sa marche !

    je marque ici ce que j'ai compris si d'autre personne tombe sur le même cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Ws As Worksheet
     
    Set Ws = ThisWorkbook.Worksheets("Feuil1")
    Dim valeur As Integer
    'Shapes désigne le bouton formulaire donc ici on marque le nom de ce bouton entre les ""
    valeur = Ws.Shapes("Choix_Posit").ControlFormat.Value
    'on recupère la ligne qui a été selectionné par l'utilisateur
    MsgBox Ws.Shapes("Choix_Posit").ControlFormat.List(valeur)
    'on affiche grace à la ligne la valeur de celle-ci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/04/2015, 11h53
  2. Réponses: 2
    Dernier message: 20/11/2009, 11h37
  3. Réponses: 5
    Dernier message: 18/11/2009, 11h25
  4. Réponses: 3
    Dernier message: 07/07/2009, 18h15
  5. Réponses: 1
    Dernier message: 19/01/2006, 17h54

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