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 :

gestion evenement sur combobox!


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut gestion evenement sur combobox!
    bonjour
    Decidement , j'ai un probleme avec la gestion des evenements sur les combobox.

    à partir du USF2 j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub CommandButton2_Click() 'bouton recherche fiche
    Unload UserForm1
    Load UserForm1 'charge le usf1
    UserForm1.Frame2.Visible = True 'montre la frame2
    UserForm1.CommandButton3.Visible = True
    UserForm1.Show 'montre le usf1
    Unload UserForm2
    End Sub
    jusque la ok ca fonctionne
    le USF1 s'ouvre et se charge , leframe 2 est le seul visible.

    le frame contient 3 optionbutton
    dont voici le code pour le premier
    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
     
     
    Private Sub OptionButton3_Click() 'toutes les fiches recopier dans le combobox13
    derniereligne = Range("m4").End(xlDown).Row 'derniere ligne occupee dans colonne m
    'OptionButton5.Enabled = False 'invalide bouton stat cout
    'TextBox7.Enabled = False 'invalide le textbox7 de stat cout
    'TextBox8.Enabled = False 'invalide le textbox7 de stat nb
    'OptionButton6.Enabled = False 'invalide bouton stat nb
    'OptionButton7.Enabled = False 'invalide bouton stat
    ComboBox13.Clear 'initialize le combobox13
    'ComboBox13.Enabled = True 'active le combobx13 N° fiche
    Label18.ForeColor = RGB(255, 1, 1) 'colorie en rouge N°de la fiche
    ComboBox13.BackColor = RGB(200, 1, 1) 'colorie en rouge le combobox13
     
    Dim j As Long
    For j = 4 To derniereligne
     
               ComboBox13 = Sheets("feuil2").Range("m" & j)
               If ComboBox13.ListIndex = -1 Then ComboBox13.AddItem Sheets("feuil2").Range("m" & j)
     
    Next j
     
     
    End Sub

    mais des que je click sur un des options button (dans notre cas le 3ieme)
    pour chaque valeur de J , le combob13 s'active ??????


    voici le code du combobox13

    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
     
    Private Sub ComboBox13_click() 'selection de la fiche ABE n°
    'recupere toutes les infos en fonction du N°de  la fiche ABE
    MsgBox ("je m'active ")'pour la recherhce
    derniereligne = Range("m4").End(xlDown).Row 'derniere ligne occupee dans colonne m
    For ligne = 4 To derniereligne
     
     
        If ComboBox13.Text = Sheets("feuil2").Range("M" & ligne).Value Then
          ' MsgBox (ligne)
           ComboBox6.Value = Sheets("feuil2").Range("A" & ligne).Value 'N°installation
           ComboBox24.Value = Sheets("feuil2").Range("B" & ligne).Value 'type installation
           ComboBox1.Value = Sheets("feuil2").Range("m" & ligne).Value 'n°fiche abe
           ComboBox5.Value = Sheets("feuil2").Range("d" & ligne).Value 'site geo
           ComboBox3.Value = Sheets("feuil2").Range("e" & ligne).Value 'etablissement
           ComboBox4.Value = Sheets("feuil2").Range("F" & ligne).Value 'type batiment
        ComboBox23.Value = Sheets("feuil2").Range("I" & ligne).Value 'n°lot
        ComboBox19.Value = Sheets("feuil2").Range("J" & ligne).Value 'hors contrat
        ComboBox22.Value = Sheets("feuil2").Range("k" & ligne).Value 'entreprise
        ComboBox9.Value = Sheets("feuil2").Range("P" & ligne).Value 'fiche attachemment
        ComboBox8.Value = Sheets("feuil2").Range("Q" & ligne).Value 'autre fiche devis
        ComboBox2.Value = Sheets("feuil2").Range("R" & ligne).Value 'date intezrvention
        TextBox1.Value = Sheets("feuil2").Range("W" & ligne).Value 'motif intervention
     
        ComboBox14.Value = Sheets("feuil2").Range("T" & ligne).Value 'N°LC
        ComboBox15.Value = Sheets("feuil2").Range("u" & ligne).Value 'date lc
        ComboBox17.Value = Sheets("feuil2").Range("s" & ligne).Value 'reglemment effectue
        ComboBox16.Value = Sheets("feuil2").Range("V" & ligne).Value 'montantlc
     
        Exit Sub
        End If
     
    Next ligne
     
    End Sub

    LA C'est PLUS FORT QUE LES PATATES ?????

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox13 = Sheets("feuil2").Range("m" & j)
    N'active certainement pas ta combo !
    Il en change simplement la sélection ...

    Ton problème est donc dans une autre partie de ton code, si l'évènement Click de la combo se lance !!!

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    dans l'aide excel "F1" j'ai trouve CA , on dirait que ?????


    Remarques

    Des deux cas où l'événement Click peut survenir, le premier s'applique aux contrôles CommandButton, Frame, Image, Label, ScrollBar et SpinButton ; le second à CheckBox, ComboBox, ListBox, MultiPage, TabStrip et ToggleButton. Cela s'applique également au contrôle OptionButton quand il prend la valeur True.

    Voici quelques exemples d'actions pouvant provoquer l'événement Click :

    Cliquer sur une zone vierge d'une feuille ou sur un contrôle désactivé (autre qu'une zone de liste) de la feuille.


    Cliquer sur un contrôle CommandButton. Si le bouton de commande n'a pas déjà le focus, l'événement Enter survient avant l'événement Click.


    Appuyer sur la touche ESPACE lorsqu'un contrôle CommandButton a le focus.


    Cliquer sur un contrôle.


    Appuyer sur ENTRÉE dans une feuille qui contient un bouton de commande dont la propriété Default a la valeur True, à condition qu'aucun autre bouton de commande n'ait le focus.


    Appuyer sur ÉCHAP alors que la feuille active contient un bouton de commande dont la valeur de la propriété Cancel est True, à condition qu'aucun autre bouton de commande n'ait le focus.


    Appuyer sur une touche d'accès rapide associée à un contrôle.


    je recherche encore pourquoi,

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comprends pas !
    Si tu mets
    ComboBox13.Clear 'initialize le combobox13
    et ceci sans condition, à quoi te sert le test
    If ComboBox13.ListIndex = -1
    Tu as sans doute une bonne raison mais si tu pouvais la donner, je me sentirais moins idiot...
    Et là, je compte vraiment sur toi
    A+

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Et pour répondre au reste, rien de vaut un petit test (sur un projet à part, hein... pour ne pas confondre tout...) :

    Une combobox nommée combo1 et 2 boutons de commande Commanbd1 et Command2

    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
    Private Sub Command1_Click()
     'on remplit (pour essai)
     For i = 1 To 10
       Combo1.AddItem i
     Next
    End Sub
     
    Private Sub Command2_Click()
      Combo1 = "2" 'n'affichera pas "oui", pardi (le "oui du click)
    End Sub
     
    Private Sub Combo1_Click()
      'ce "oui" ne sera affiché qu'en cliquant sur un élément de la combo
     MsgBox "oui"
    End Sub
    Lance, clique sur Command1 puis sur Command2 ===>> pas de message "oui" ...
    Pour avoir le message "oui" il faudrait soit réellement cliquer sur un élément, soit créer ailleurs un code lançant cet évènement, bien évidemment ...

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour


    Citation:
    ComboBox13.Clear 'initialize le combobox13
    je vide mon combobox car dans mon programme celui-ci se remplir plusieurs foismais pas avec les memes valeurs.
    Il est vrai que .clear est deja par ailleurs . peut etre à supprimer lors du debogage de l'applic!!!!!

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, ce serait plutôt ton test à effacer. Quand tu fais un clear, ListIndex est forcément = -1
    Mais si tu as déjà une sélection dans ton combo, un clear entraîne l'événement Change, pas l'événement click. Donc, comme te dit ucfoutu, ton pb est ailleurs. Qu'as-tu dans l'événement change ?
    A+

    Edit
    Chais pas pourquoi mais je t'ai mis une c...rie car bien sûr, quand tu fais un clear, ListIndex est forcément = -1 pas 0

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour

    Je n'utilise pas l'evenement change sur ce combobox.
    mais sur d'autre dans le meme formlulaire !
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub ComboBox22_Change()
    filtrestatistiquecout
    End Sub

  9. #9
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut


    Bon la franchement AU SECOURS

    le probleme est global
    si j'utilise pas un test lors des evenement sur change ou click alors l'evenement est active mais je sais pas ou ??????

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Dur dur de t'aider...

    Sans la totalité de ton code, il faudrait être devin ...!!

    Commence par ceci :

    Rechercher partout dans ton code si tu n'as pas :

    - écrit combob13_click en dehors, bien sur, le la procédure elle-même

    - utilisé des Sendkeys malencontreux, parmi lesquesls (les plus dangereux avec une Combo) SendKeys "{DOWN}" et SendKeys "{UP}", mais regarde tous tes sendkeys éventuels. Un exemple : ti tu utilises des déplacements par tabulation (par code ou physiquement) et qu'ensuite, une fois sur la combo, tu utilises (par code ou physiquement) la flêche basse ou haute, celà correspond à un click sur ta combo ... Kif Kif en cas d'utilisation de ces flêches si ta Combo a le focus (par code ou autrement) à ce moment là ...

    Commence par tout çà !!!

  11. #11
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour
    la ou ,c'est toujours sur l'evenement "CHANGE" mes cbx .
    j'avais choisi cet evenement pour eviter à l'utilisateur de cliquer sur un bouton pour valider une action .
    Via un autre poste j'ai variable globale que je teste avant l'execution de ces fameuse CBX.


    le mer...ier à commencer en fait , à la creation de mon 2 usf2.

    je continue mes recherches apres qu'une version 1.0 de mon application soit sortie.


    merci pour votre aide

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour récupérer les données d'un contrôle, tu peux aussi utiliser Exit.
    Pour une liste comme pour un textebox, tu peux vérifier la saisie et rester sur le contrôle en cas d'erreur en plaçant le boolean Cancel à True
    If erreur then cancel = True
    Change survient chaque fois que la donnée est modifiée.
    Exit ne survient qu'en quittant le contrôle
    A toutes fins utiles

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

Discussions similaires

  1. Evenement sur combobox PropertyChanged
    Par Rock01 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 05/04/2011, 20h25
  2. recuperer evenement sur un combobox
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2008, 10h01
  3. Réponses: 2
    Dernier message: 09/07/2007, 13h37
  4. gestion de 2 evenements sur un seul boutton
    Par o-live dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/01/2007, 16h05
  5. Script gestion évenement sur fichier.
    Par beloc dans le forum Linux
    Réponses: 4
    Dernier message: 02/06/2006, 13h57

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