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 :

Déselectionner une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Par défaut Déselectionner une listbox
    Bonjour à tous,
    J'ai une textbox1 dans laquelle je saisi une année.
    J'ai codé de manière à ce que lorsque la valeur dans la textBox change, la ListBox1 qui se trouve à coté devienne visible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Change()
    ListBox1.Visible = True
    End Sub
    Ma Listbox1 contient les 12 mois de l'année.
    Lorsque je clique dans la listbox1 pour sélectionner un des mois, la listbox passe sur fond bleu et cela lance un contrôle pour savoir si l'année saisie dans la textbox1 est trouvée. Si c'est le cas, le code continu de se dérouler sinon, la listBox redevient invisible, obligeant l'utilisateur à vérifier l'année qu'il a saisie dans la textbox1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub TrouverAnnée1()
    Dim Nom_ok As Range
        Set Nom_ok = Columns("A").Find(InsertionRelevé.TextBox1)
        If Not Nom_ok Is Nothing Then
    Nom_ok.EntireRow.Copy
    Sheets("Feuil3").Select
        Range("A16").Select
        ActiveSheet.Paste
    Else
    InsertionRelevé.ListBox1.Visible = False
    AnnéeInconnue.Show
    End If
    End Sub
    L'utilisateur modifie alors l'année dans la textbox1 et la listBox1 redevient visible mais toujours avec le fond bleu c'est à dire sélectionner, ou active, je ne sais comment appeler ça.
    Je voudrait que lorsque le test est incorrect et que la listbox1 redevient invisible elle soit également déselectionnée (sur fond blanc), obligeant l'utilisateur à cliquer à nouveau dans la listbox1 car je lui ai attribué un code qui rend visible d'autre textbox à remplir par la suite.

    En gros, j'aimerais savoir comment déselectionner une listbox pour que le fond redevienne blanc comme lors de sa premiere apparition.

    Merci par avance à ceux qui se pencheront sur mon probleme.

    Laurent

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Laurent,
    Je me demandais de quel fond bleu, tu parlais mais je crois avoir compris qu'il s'agissait de la visualisation de la sélection.
    Cette sélection, tu peux la gérer avec la propriété ListIndex en lui donnant comme valeur -1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.ListIndex = -1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Par défaut Ca marche pas
    Bonjour Philippe et merci d'avoir pris le temps de me répondre.
    J'ai essayé ce que tu viens de me proposer mais malheureusement cela ne fonctionne pas.
    Voici le code que j'ai écris et qui s'éxécute lorsque je clique sur la listBox1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TrouverAnnée1()
    Dim Nom_ok As Range
        Set Nom_ok = Columns("A").Find(InsertionRelevé.TextBox1)
        If Not Nom_ok Is Nothing Then
    Nom_ok.EntireRow.Copy
    Sheets("Feuil3").Select
        Range("A16").Select
        ActiveSheet.Paste
    Else
    InsertionRelevé.ListBox1.ListIndex = -1InsertionRelevé.Label3.Visible = False
    InsertionRelevé.ListBox1.Visible = False
    AnnéeInconnue.Show
    End If
    End Sub
    Aurais-tu une idée ?

    Merci par avance

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai fait le test et chez moi, cela fonctionne mais j'ai utilisé 2, 3 lignes de code.
    Par contre, tu ne dis pas ce qui ne va pas.
    As-tu un message d'erreur, la sélection reste t'elle au même endroit ?
    En regardant ton code, je vois une ligne bizarre mais peut-être est-ce un problème lié au Copier/Coller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InsertionRelevé.ListBox1.ListIndex = -1 : InsertionRelevé.Label3.Visible = False
    Dans cette ligne, il manque les deux points séparant les deux instructions.
    Et en ligne 11 n'est ce pas Visible = True qu'il faut avoir ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Par défaut
    En effet la ligne bizarre c'est un soucis de copier coller.
    Ce qui se passe c'est que la listBox reste sur fond bleu et donc sélectionnée.
    Tout d'abord je saisi une date dans la textbox1. La listBox1 apparait et lorsque je clique pour sélectionner un mois, le test "TrouverAnnée1" se fait.
    La date n'étant pas trouvée dans la feuille de calcul, la textbox1 (ainsi que le label3 comme tu peux le voir dans le code) sont rendus invisible. Je change donc la date dans la textbox1 et la listBox redevient visible mais toujours avec le mois sélectionné précédement sur fond bleu. Donc, si je change le mois par la liste et que je clique le test redémarre mais si le mois reste le même, lorsque je clique sur la liste box1, il ne se passe rien. Comme si le programme avait gardé la sélection suite à la premiere fois où j'ai cliqué dans la listBox1.

    Je n'avais pas tout vu -))
    En ligne 11 ben non visible = False c'est bon car je veux que la listBox dans laquelle je clique pour lancer le test devienne invisible si le test n'est pas concluant.
    Peut-être que je ne peux pas rendre invisible une listBox qui a servit à lancer le test ?
    Qu'en penses-tu ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Par défaut c'est bon, j'ai trouvé
    C'est bon Philippe, j'ai trouvé.
    En fait je pense que je ne peux pas appliquer le code que tu m'as donné à une listBox qui est à l'origine du lancement du test.
    Donc, j'ai mis ton code dans la textBox où je saisie l'année.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox1_Change()
    Label3.Visible = True
    ListBox1.Visible = True
    InsertionRelevé.ListBox1.ListIndex = -1
    End Sub
    Et du coup ça fonctionne.

    Merci beaucoup pour tes lumières, c'est vraiment sympa.

    Laurent

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu peux rendre un ListBox Visible ou Invisible qu'il ait servi ou pas.
    Tu as aussi la propriété Enabled
    Voici deux procédures associées à deux boutons.
    Visible ou Invisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
     With Me.ListBox1
     .Visible = Not (.Visible)
     .ListIndex = -1
     End With
    End Sub
    Active / désactive le contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton2_Click()
     With Me.ListBox1
     .Enabled = Not (.Enabled)
     .ListIndex = -1
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Déselectionner dans une listbox
    Par Remedy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/05/2007, 13h57
  2. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16
  3. Réponses: 3
    Dernier message: 25/03/2004, 11h35
  4. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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