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 :

[VBA-E] Sélectionner dynamiquement une ligne d'une ComboBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut [VBA-E] Sélectionner dynamiquement une ligne d'une ComboBox
    Bonjour tout le monde,

    Je souhaite saisir une référence dans une ComboBox et ensuite la sélectionner automatiquement, j'ai donc essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Feuil1.ComboBox1.AddItem reference
    Feuil1.ComboBox1.SelText reference
    reference est un String initialisé avant

    Le problème c'est que SelText ne s'applique qu'à un objet.

    J'ai aussi essayé SetFocus sans succès.

    J'aimerais aussi la trier par ordre alphabétique après un ajout et je n'ai rien trouvé.

    Merci pour vos réponses.

  2. #2
    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
    Tu as essayé Selected ?

    Extrait de l'aide
    Renvoie ou définit l'état de sélection des éléments dans un contrôle ListBox.

    Syntaxe

    object.Selected( index ) [= Boolean]

    La syntaxe de la propriété Selected comprend les éléments suivants :
    ... etc
    Tu dis

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    La fonction Selected n'a pas l'air d'être reconnue par Microsoft Visual Basic, elle ne figure pas non plus dans l'aide (je suis en VBA).

    De plus comme je viens d'ajouter l'item a la ComboBox et comme il n'est pas sélectionné, je ne connais pas encore le numéro d'index.

    Je viens d'essayer la méthode Select mais elle aussi ne s'applique qu'à un objet.

    Y aurait-il une autre solution ? :

    Merci.

  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
    Si tu viens de l'ajouter avec Count, tu ne peux pas retrouver l'index ?

    J'ai VBA 97 et ai trouvé Selected. Par contre, on ne parle que de ListBox dans l'extrait de l'aide que je t'ai donné, pas de combo.
    Désolé. Je regarde mais je pense qu'un bbil, silkyRoad ou autre leroissejp vont passer par là
    Je sais que j'en oublie plein mais j'espère qu'igloobel me pardonnera...

    A+

  5. #5
    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
    Tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         NbreEnregistrements = UBound(ComboBox1.List)
    Vérifie s'il ne faut pas faire +/- 1, apparemment il manque l'index 0

    A+

  6. #6
    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
    Encore moi, pour une question :
    Où renseignes-tu ton combo ? Dans quelle procédure ?

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    Les items de ma ComboBox sont initialisés au démarrage depuis les noms de chaque feuilles d'un autre classeur.

    Sinon, quand le programme et en cours, je renseigne ma ComboBox depuis une TextBox qui est dans une userform.
    Il est donc renseigné depuis le module de mon userform dans la procédure Ajouter_ComboBox_Click().

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    Je peut avoir le numéro d'index avec ListCount qui donne le nombre d'item de la Combo et donc le numéro du dernier ajouté mais je ne trouve toujours pas la fonction Selected, je suis pourtant sous MVB 6.3 de Excel 2000 ?????????????

    Ah, le UBound marche aussi, autant pour moi, c'est même mieux (il faut faire +1).

  9. #9
    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
    Bon, voilà ce que j'ai fait et vérifié avec un listbox

    Dans le bouton qui demande la mise à jour du listbox, je fixe le focus suivant avec TabIndex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        IndexCourant = 3 'ActiveControl.TabIndex 'à vérifier/adapter
        Liste2.TabIndex = IndexCourant + 1
        Liste2.SetFocus
    Dans Liste2_Enter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Liste2_Enter()
        NbreLignes = UBound(Liste2.List)
        UserForm2.Liste2.Selected(NbreLignes) = True
    End Sub
    Juste pour l'idée, comme j'initialise ma liste dans UserformInitialise, tu auras à adapter ActiveControl.TabIndex qui ne fonctionne pas

    Tu iras aussi vite que moi, j'ai fait mes essais dans une procédure qui me sert et je ne tiens pas à tout modifier

    Tu dis

    A+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    Citation Envoyé par ouskel'n'or
    Bon, voilà ce que j'ai fait et vérifié avec un listbox

    Dans le bouton qui demande la mise à jour du listbox, je fixe le focus suivant avec TabIndex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        IndexCourant = 3 'ActiveControl.TabIndex 'à vérifier/adapter
        Liste2.TabIndex = IndexCourant + 1
        Liste2.SetFocus
    Je ne comprends pas pourquoi on doit fixer le focus.
    De plus, comme ma ComboBox n'est pas un objet, je n'ai accès ni à TabIndex ni à SetFocus.

    Dois-je obligatoirement déclarer la Combo comme un objet?

  11. #11
    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
    Je ne comprends pas pourquoi on doit fixer le focus.
    Si tu veux aller sur la dernière ligne du combo, faut bien qu'il ait le focus juste après sa mise à jour, non ? Si !

    De plus, comme ma ComboBox n'est pas un objet, je n'ai accès ni à TabIndex ni à SetFocus
    Non, effectivement, c'est un contrôle et un contrôle a tabindex et il est possible de fixer sur lui le focus. Mon code fonctionne sur un userform...
    D'où la question : Où est placé ton combo ? Dans une feuille de calcul ? Auquel cas, je comprendrais mieux, mais il aurait été intéressant que tu le précises au départ...

    Tu dis

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    Ah oui désolé, mon controle ComboBox est effectivement dans une feuille de calcul, je l'avais pas précisé croyant que cela importait peu.

    Est-ce que ça change tout?
    Comment puis faire pour avoir les SetFocus et TabIndex?

    Merci.

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour Skual , bonjour Ouskeln'or

    pour afficher dans le combobox le dernier item de la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.ComboBox1.ListIndex = Feuil1.ComboBox1.ListCount - 1


    pour trier la combobox par ordre aphabetique

    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
    'Hervé
    Dim i As Byte, j As Byte 
    Dim temp As String 
     
    With Feuil1.ComboBox1 
    For i = 0 To .ListCount - 1 
    For j = 0 To .ListCount - 1 
    If .List(i) < .List(j) Then 
    temp = .List(i) 
    .List(i) = .List(j) 
    .List(j) = temp 
    End If 
    Next j 
    Next i 
    End With


    bon apres midi
    michel

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    OK, ça fonctionne parfaitement, merci beaucoup à vous deux d'avoir résolu mon problème.



    Bonne fin de journée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. copier une ligne d'une table vers une autre
    Par Adren dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2006, 11h54
  5. [VB6]créer une copie d'une ligne d'une table
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/02/2006, 16h08

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