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 qui ne garde pas sa valeur affiché


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 109
    Points : 35
    Points
    35
    Par défaut Combobox qui ne garde pas sa valeur affiché
    bonjour à tous, voila , j'ai une combobox qui fonctionne comme je le veux, avec le seul défaut que celle ci ne garde pas affiché sa valeur sélectionné...

    alors que quand je fais du pas à pas pour cibler mon problème et bien elle garde sa valeur affichée...

    pour mon code j'utilise les évènement DropButtonclick pour charger ma liste, et l'événement change, pour effectuer les actions qui m'intéresse...

    forcément dans mon événement Dropbuttonclick il y a ce fameux clear, qui semble poser soucis....

    car au vu de son fonctionnement, quand je sélectionne une valeur dans cette combobox, on dirait que la macro réexecute le code lié à l'évenement DropbuttonClick...
    comment faire pour éviter cela ?

    Merci pour votre aide

  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
    12 955
    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 : 12 955
    Points : 28 964
    Points
    28 964
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Qu'entends-tu par
    ne garde pas affiché sa valeur sélectionné...
    Peut-être que l'affichage de ton code ajouterait un peu de clarté à la discussion.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 109
    Points : 35
    Points
    35
    Par défaut
    comme demandé, voici le code donc :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Private Sub ComboBox1_Change()
     
    temp = Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1)
    If ComboBox1 = "" Then
        Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1) = temp
    Else
    'ici on place la nouvelle valeur dans A4
    Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1).Value = ComboBox1.Value
    ComboBox1.Value = Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1).Value
    End If
     
    With Workbooks("Base CPP Historique.xls")
    For p = 1 To Workbooks("Base CPP Historique.xls").Sheets.Count - 1
        For q = 4 To .Worksheets(p).Range("A65536").End(xlUp).Row
            If .Worksheets(p).Cells(q, 1).Value = .Worksheets("Comparatif").Cells(4, 1).Value Then
                For r = 0 To 9
                    If .Worksheets("Comparatif").Cells(4, 2).Value = .Worksheets(p).Cells(q + r, 2).Value Then
                        .Worksheets(p).Range(.Worksheets(p).Cells(q + r, 3), .Worksheets(p).Cells(q + r, 35)).Copy .Worksheets("Comparatif").Range("C4")
                        Exit Sub
                    Else
                    End If
                Next r
            Else
            End If
        Next q
    Next p
    End With
    End Sub
     
    Private Sub ComboBox1_DropButtonClick()
     
    Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").ComboBox1.Clear
     
     
    For v = 1 To Workbooks("Base CPP Historique.xls").Sheets.Count - 1
        With Workbooks("Base CPP Historique.xls")
            plage = .Worksheets(v).Range(.Worksheets(v).Cells(4, 1), .Worksheets(v).Cells(.Worksheets(v).Range("A65536").End(xlUp).Row, 1))
        End With
        For Each cell In plage
            ComboBox1.AddItem cell
            On Error GoTo gestionerr
        Next
    Next v
    With Workbooks("Base CPP Historique.xls").Worksheets("Comparatif")
    .Rows("4:20").RowHeight = 18
    .Rows("4:20").HorizontalAlignment = 3
    .Rows("4:20").VerticalAlignment = 2
    'ajustement automatique des colonnes
    .Range("C4:AI20").EntireColumn.AutoFit
    End With
    Exit Sub
    gestionerr:
        ComboBox1.AddItem plage
        Resume Next
    End Sub

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 109
    Points : 35
    Points
    35
    Par défaut
    en réalité je pense avoir cerné le problème, en fait quand je clique sur l'ascenseur, l'événement dropbuttonclick se lance, c'est parfait c'est ce qui est voulu. mais lorsque je clique sur une valeur, la une fois de plus l'événement dropbuttonclick à l'air de se lancer, car il assimile sa à un clic sur la combobox.. du coup il clear la combobox qui perds sa valeur.

    alors que si j'exécute la macro en pas à pas et bien la le deuxième lancement du dropbuttonclick ne se fait pas et il garde sa valeur affiché....

    Existe-t-il une solution pour éviter le lancement de ce 2eme événement ?

    sachant que je ne veux pas utiliser de bouton séparé pour charger la liste de la combobox..

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 955
    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 : 12 955
    Points : 28 964
    Points
    28 964
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avec ListBox et ComboBox je travaille avec l'événement Click et je récupère l'information avec la propriété ListIndex
    Je n'ai aucune expérience avec DropButtonClick ne l'utilisant jamais. Je viens de tester et constate effectivement qu'il réagit à la fois lorsque l'on clique sur la flèche et également après sélection dans la liste. Je ne peux donc pas en dire plus.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 109
    Points : 35
    Points
    35
    Par défaut
    ok pour l'évènement clic, mais il ne réagit pas quand on clique sur l'ascenseur, alors que dropbuttonclick oui ....

    et pour ce qui est de listindex? à quoi réagit -il ?

    Merci encore pour votre aide

  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
    12 955
    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 : 12 955
    Points : 28 964
    Points
    28 964
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La propriété ListIndex renvoie le n° d'index sur lequel on a cliqué (commence à 0) et la propriété Text la valeur (comme Value)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Click()
     With ComboBox1
      MsgBox "Index = " & .ListIndex & vbTab & "Valeur = " & .Text
     End With
    End Sub

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 955
    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 : 12 955
    Points : 28 964
    Points
    28 964
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'essayais de comprendre ton code mais dans ton IF il y a des redites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    temp = Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1)
    If ComboBox1 = "" Then
        Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1) = temp
    Else
    'ici on place la nouvelle valeur dans A4
    Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1).Value = ComboBox1.Value
    ComboBox1.Value = Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1).Value
    End If
    Textuellement, tu dis
    1) Temp = Valeur d'une cellule(4,1)
    2) Si ComboBox1 est vide La valeur de la cellule(4,1) = Temp ' ???? Cellule(4,1) reprend la même valeur ???
    Sinon Cellule(4,1) = ComboBox1
    ComBoBox1 = Cellule(4,1) ' ??? Pourquoi puisque il a déjà cette valeur ???
    Il serait plus simple d'écrire
    Si ComboBox n'est pas vide, Cellule(4, 1) = ComboBox
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If len(ComboBox1) Then Workbooks("Base CPP Historique.xls").Worksheets("Comparatif").Cells(4, 1) = Combobox1
    Point. C'est pas plus clair et plus léger ?

Discussions similaires

  1. [XL-2003] Combobox qui ne veut pas afficher la valeur
    Par david_atx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2009, 16h37
  2. Valeur de ComboBox qui ne change pas quand je clique
    Par pools dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/05/2009, 17h16
  3. Réponses: 10
    Dernier message: 07/01/2007, 12h03
  4. [Tableaux] Variable qui ne prend pas sa valeur
    Par stephane78 dans le forum Langage
    Réponses: 11
    Dernier message: 19/08/2006, 20h30
  5. Query Contains dans Full-Text qui ne retourne pas de valeurs
    Par icebe dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/02/2006, 14h04

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