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 :

Combobox ne disparait pas


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
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut Combobox ne disparait pas
    Bonjour tout le monde!

    J'ai un tout petit problème sur lequel je me casse la tête depuis le début de la matinée:
    Lorsque je clique sur une cellule, une combobox cachée apparait. Une fois la valeur voulue sélectionnée, la combobox se masque (".Visible = False").

    Jusque là, tout va bien.

    Seulement j'ai voulu mettre une petite touche supplémentaire:
    A la sélection de la cellule la combobox apparait ET sa liste d'item se déroule (.DropDown).
    Mais maintenant, une fois la valeur voulue sélectionnée, la combobox ne se masque plus toute seule!

    Elle est affichée mais il suffit que je fasse un changement "manuel" de la feuille et elle se masque. J'insiste sur le "manuel" car toute action via macro ne fait rien (ex: rafraichir la feuille/classeur, effacer une cellule x, sélectionner une autre feuille et revenir...).

    Ce n'est qu'un petit truc mais maintenant j'aimerais avoir le fin mot de l'histoire, alors un coup de main serait le bienvenu!

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Ce serait plus simple de t'aider si mettais ton code mais à tout hasard essaie avec un 'Do Events' apres le '.visible = false'
    A+

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    J'ai bien essayé le DoEvents mais c'est sans résultat.

    Voici le code:

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 14 Then
        Select Case Target.Row
        Case 32 To 63
            If Target.Offset(0, -13).Value = "Vrai" Then
                With TypeEntrée
                    .Visible = True
                    .Top = Target.Top
                    .Left = Target.Left
                    .DropDown
                End With
            Else
                TypeEntrée.Visible = False
            End If
        Case Else
            Exit Sub
        End Select
    Else
    End If
     
    End Sub


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TypeEntrée_Click()
     
    ActiveCell.Value = TypeEntrée.Value
    TypeEntrée.Visible = False
     
    End Sub
    Pour être franc, ça ressemble plus à un bug d'Excel qu'à une erreur de programmation...

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Tu as l'air sur de toi, pourtant...ta construction de If fait en sorte que lorsque tu vas sur ta Private...click, quand tu en reviens, tu ne passe plus par une ligne qui contient le "hide" de ton objet !
    De plus ton Select case n'a aucun intéret puisqu'un seul cas, voici ton code un peu ramanié, j'ai pas testé, donc dis moi si c'est OK
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column <> 14 Then Exit Sub
        If Target.Offset(0, -13).Value = "Vrai" Then 'Ici aussi c'est discutable car soit c'est du Boolean et tu traite en tant que tel soit tu dois prévoir les problèmes de casses car vrai est <> de Vrai
            With TypeEntrée
                .Visible = True
                .Top = Target.Top
                .Left = Target.Left
            End With
            'C'est normalement ici que tu reviens après ton Private...click donc pas de mise en .visible = false !
         Else
            TypeEntrée.Visible = False
        End If
    End If
     
    TypeEntrée.Visible = False 'devrait solutionner ton problème :-)
     
    End Sub
    A+

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    En fait quand je disais que je ne pensais pas à une erreur de programmation, ça n'avais rien à voir avec le fait d'être sûr de moi (d'autant plus que je débute en programmation).
    Je pense que pour mieux comprendre ce propos il faut faire le test soi-même de la macro parce que ça vaut le détour:

    une combobox visible mais inutilisable (comme une tâche sur l'écran!) qui disparait dès qu'on fait une action.

    Pour le reste, c'est dès que j'insère ".DropDown" que ça bugge.
    Donc la macro revue fonctionne sans problème, tout comme la mienne (bien qu'archaïque...).

    A suivre donc.


    Sinon c'est effectivement du Booléen donc j'ai retraité tout ça.

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Ne le prend pas mal je disais ça car de véritable bug qu'on ne peut contourné il y en peu...

    Pour le reste, je suis désolé mais je vois toujours pas le résultat attendu.

    Tu veux qu'après le click sur une cellule, ta liste aparaisse déroulée pour que l'utilisateur n'ai plus qu'à choisir la ligne, c'est bien ça?
    Si oui, j'utiliserais plutôt une ListBox quitte à jouer avec se dimension en fonction du nombre d'Item (si c'est variable)

    En espérant avoir été clair.

    A+

Discussions similaires

  1. [FAQ?][FLASH MX2004] [UI Compononent] Combobox ne marche pas
    Par Julien.alkaza dans le forum ActionScript 1 & ActionScript 2
    Réponses: 10
    Dernier message: 24/04/2006, 11h11
  2. Réponses: 23
    Dernier message: 07/02/2006, 08h43
  3. [MFC] Menu flottant qui ne disparait pas
    Par EuZah dans le forum MFC
    Réponses: 4
    Dernier message: 23/01/2006, 16h59
  4. Scroll comboBox ne fait pas défiler les ItemData !
    Par Tchupacabra dans le forum IHM
    Réponses: 4
    Dernier message: 09/12/2005, 09h13
  5. Réponses: 14
    Dernier message: 25/11/2005, 14h22

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