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 :

Vider contenu des listbox déroulantes


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut Vider contenu des listbox déroulantes
    Bonjour à tous,

    Je suis actuellement en train de bosser sur un formulaire de saisie dans ma base de données.

    Je suis confronté à un soucis pour vider mes zone de list déroulante avec un bouton et du code.
    Concernant les Textbox c'est bon, mais les listbox ne veulent pas se vider. J'ai tester pas mal de choses avec mon code mais rien n'a fonctionné. Voici le code event sur mon bouton clear :

    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
    Option Compare Database
     
    Private Sub Commande160_Click()
     
    Dim Ctrl As Control
    For Each Ctrl In Me.Controls
         If TypeOf Ctrl Is TextBox Then
               Ctrl.Value = ""
         End If
         If TypeOf Ctrl Is ComboBox Then
               Me!MALIST.Value = Null
         End If
     
    Next Ctrl
     
     
    End Sub

    En réalité cela fonctionne si je mets : Me!LeNomDeMaListe.Value = Null mais je souhaiterais une seule ligne de code pour toutes les combos box si c'est envisageable. Sinon ctrl+C ctrl+V ^^

    Merci d'avance !

    EDIT : Finalement je vais partir sur une ligne de code par liste déroulante, ça fonctionne et au final ce n'est pas si embêtant. Problème résolu mais si quelqu'un à la solution pour faire du tout en un, ca peut servir pour d'autres personnes.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    le code ci-dessous vide le contenu des contrôles de type combobox selon son origine source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         If TypeOf Ctrl Is ComboBox Then
            If Ctrl.RowSourceType = "Value List" Then
                If Ctrl.ListCount > 0 Then
                    For i = Ctrl.ListCount - 1 To 0 Step -1
                        Ctrl.RemoveItem Index:=i
                    Next i
                End If
            ElseIf Ctrl.RowSourceType = "Table/query" Or Ctrl.RowSourceType = "Field List" Then
                Ctrl.RowSource = ""
            End If
     
         End If
    j'espère que cela correspond à ton besoin
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Bonjour, merci pour ta réponse, ton temps et ton code.

    Malheureusement cela ne marche pas, Erreur de compilation Next sans For, j'ai rajouter un End if, plus d'erreur mais cela ne vide pas les combobox.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    le mieux est que je donne le code complet : je l'ai testé et il fonctionne. J'ai aussi ajouté le vidage des contrôles de type ListBox au cas où :
    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
     
    Private Sub btClear_Click()
    Dim Ctrl As Control
    Dim i As Integer
     
    For Each Ctrl In Me.Controls
     
    ' Vidage des zones de Texte
         If TypeOf Ctrl Is TextBox Then
               Ctrl.Value = ""
         End If
    ' Vidage des zones de listes et listes déroulantes
         If TypeOf Ctrl Is ComboBox Or ListBox Then
            If Ctrl.RowSourceType = "Value List" Then
                If Ctrl.ListCount > 0 Then
                    For i = Ctrl.ListCount - 1 To 0 Step -1
                        Ctrl.RemoveItem Index:=i
                    Next i
                End If
            ElseIf Ctrl.RowSourceType = "Table/query" Or Ctrl.RowSourceType = "Field List" Then
                Ctrl.RowSource = ""
            End If
     
         End If
     
    Next Ctrl
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Merci pour ta réponse.

    Hélas c'est toujours pas fonctionnel dans mon cas (ça doit être un détail comme la source ou je ne sais pas ^^) mais ce n'est pas très grave je vais laisser comme j'ai actuellement c'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         If TypeOf Ctrl Is ComboBox Then
               Me!Marché.Value = Null
    Encore merci ! Je passe en résolu plus tard au cas ou.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    erreur de ma part et en plus pas testé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         If (TypeOf Ctrl Is ComboBox) Or (TypeOf Ctrl Is ListBox) Then
    sinon en ajoutant des Debug.Print on peut connaitre ceux qui passent dans la boucle ou pas :
    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
    Private Sub btClear_Click()
    Dim Ctrl As Control
    Dim i As Integer
     
    For Each Ctrl In Me.Controls
    Debug.Print Ctrl.Name & " - " & TypeName(Ctrl)  ' Espion 006 
    ' Vidage des zones de Texte
         If TypeOf Ctrl Is TextBox Then
               Ctrl.Value = ""
         End If
    ' Vidage des zones de listes et listes déroulantes
         If (TypeOf Ctrl Is ComboBox) Or (TypeOf Ctrl Is ListBox) Then
            Debug.Print "*** traité ***: " & Ctrl.Name & "-" & TypeName(Ctrl)    ' Espion 007
            If Ctrl.RowSourceType = "Value List" Then
                If Ctrl.ListCount > 0 Then
                    For i = Ctrl.ListCount - 1 To 0 Step -1
                        Ctrl.RemoveItem Index:=i
                    Next i
                End If
            ElseIf Ctrl.RowSourceType = "Table/query" Or Ctrl.RowSourceType = "Field List" Then
                Ctrl.RowSource = ""
            End If
     
         End If
     
    Next Ctrl
     
    End Sub
    et éventuellement ajouter un point d'arrêt et faire du pas à pas ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Merci encore une fois :p

    Ca ne vide toujours pas les combo box chez moi désolé

    Ca doit être un problème au niveau de mes sources ou je ne sais quoi, mais en l’occurrence ce n'est pas grave vu que mon Me.Value = Null fonctionne.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Citation Envoyé par Itriel Voir le message
    Merci encore une fois :p

    Ca ne vide toujours pas les combo box chez moi désolé

    Ca doit être un problème au niveau de mes sources ou je ne sais quoi, mais en l’occurrence ce n'est pas grave vu que mon Me.Value = Null fonctionne.
    il serait bien que tu fasses les tests que je t'ai suggéré (mode pas à pas) ne serait-ce que pour résoudre le souci pour ceux qui auraient aussi ce problème ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    J'aimerais bien, mais mon niveau d'access n'étant pas très élevé je ne vois même pas de quoi tu parle

    J'ai des infos dessus, je test quand j'ai le temps

    EDIT : alors le pas à pas m'a donné une erreur sur le
    Me
    de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Ctrl In Me.Controls

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Peux-tu poster le code complet ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Hello, voila :

    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
    37
    38
    39
    40
    Option Compare Database
     
     
    Private Sub Commande160_Click()
     
    Dim Ctrl As Control
    For Each Ctrl In Me.Controls
         If TypeOf Ctrl Is TextBox Then
               Ctrl.Value = ""
         End If
         If TypeOf Ctrl Is ComboBox Then
               Me!Marché.Value = Null
               Me!Mission.Value = Null
               Me!Rejet.Value = Null
               Me!Unité.Value = Null
               Me!Département.Value = Null
               Me!Filière.Value = Null
               Me!Effluent.Value = Null
               Me!Date.Value = Null
         End If
     
    Next Ctrl
     
    End Sub
     
    Private Sub Commande163_Click()
     
    Me.Undo
    DoCmd.Close
     
    End Sub
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
        If MsgBox("Sauvegarder l'enregistrement ?", vbExclamation + vbYesNo, "CONFIRMATION") = vbNo Then
          Me.Undo
          Cancel = False
        End If
     
    End Sub

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    ce n'est pas le code que je t'ai fourni ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Ah oui oups pardon...

    J'ai pris littéralement ce que tu m'avais donné, sans modifications (ou alors j'en ai vraiment pas vu l'utilité)

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    J'ai pris littéralement ce que tu m'avais donné, sans modifications (ou alors j'en ai vraiment pas vu l'utilité)
    il est sensé remplacer le code du bouton Commande160 mais il faut enlever la première instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub btClear_Click()
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Points : 34
    Points
    34
    Par défaut
    Hello,

    Alors oui j'avais juste remplacer l'instruction avec mon bouton en effet, donc mon code est :

    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
    Private Sub Commande160_Click()
     
    Dim Ctrl As Control
    Dim i As Integer
     
    For Each Ctrl In Me.Controls
    Debug.Print Ctrl.Name & " - " & TypeName(Ctrl)  ' Espion 006
    ' Vidage des zones de Texte
         If TypeOf Ctrl Is TextBox Then
               Ctrl.Value = ""
         End If
    ' Vidage des zones de listes et listes déroulantes
         If (TypeOf Ctrl Is ComboBox) Or (TypeOf Ctrl Is ListBox) Then
            Debug.Print "*** traité ***: " & Ctrl.Name & "-" & TypeName(Ctrl)    ' Espion 007
            If Ctrl.RowSourceType = "Value List" Then
                If Ctrl.ListCount > 0 Then
                    For i = Ctrl.ListCount - 1 To 0 Step -1
                        Ctrl.RemoveItem Index:=i
                    Next i
                End If
            ElseIf Ctrl.RowSourceType = "Table/query" Or Ctrl.RowSourceType = "Field List" Then
                Ctrl.RowSource = ""
            End If
     
         End If
     
    Next Ctrl
     
    End Sub

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    EDIT : alors le pas à pas m'a donné une erreur sur le
    Me
    ... et quel est le message d'erreur à l'instruction 6 ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Vider le contenu des composants d'édition de ma form
    Par adelneo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/09/2011, 18h54
  2. Vider contenu des tables à partir d'un schéma
    Par mizuka dans le forum Administration
    Réponses: 0
    Dernier message: 06/01/2010, 19h48
  3. Effacer le contenu des champs edit et listbox
    Par slayer21 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/05/2009, 11h06
  4. [VB.NET] Vider le contenu des Variables
    Par linutx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/07/2006, 21h31
  5. Perte du contenu des blobs
    Par macakou99 dans le forum Débuter
    Réponses: 10
    Dernier message: 22/05/2003, 15h17

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