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 :

Récupérer la cellule active d'une selection ComboBox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Février 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Février 2019
    Messages : 9
    Par défaut Récupérer la cellule active d'une selection ComboBox
    Bonjour,

    J'ai créé un ComboBox "famille", je le remplit à l'aide de cette ligne de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    famille.RowSource = "i4:i37"
    Lorsque je selectionnes quelquechose dans cette combox, je voudrais
    pouvoir savoir à quelle cellule correspond cette sélection

    Quelle est la solution ?

    Merci par avance.
      2  0

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quelle est la solution ?
    1)
    est l'index N de l'article sélectionné
    2) le premier article de ta combobox est d'index 0
    3) le premier article de ta listbox correspond à la cellule I4
    Question : à quelle cellule correspond donc l'index N ?
    Je préfère te laisser faire ce petit calcul arithmétique
      3  3

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Février 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Février 2019
    Messages : 9
    Par défaut
    Merci pour votre réponse. Mais ce n'est pas l'index de liste box que je cherche cela est facile ce que je veux récupérer c'est la référence de la cellule dont j'ai sélectionné l'intitulé dans la list box. Donc je sélectionne une donné dans la liste et la réponse est par exemple cellule A5
      2  0

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Mais ce n'est pas l'index de liste bix que je cherche cela est facile ce que je veux récupérer c'est la référence de la cellule dont j'ai sélectionné l'intitulé dans la list box.
    ah !
    Veux-tu bien, s'il te plait relire calmement mon message précédent ?
    Il te la donne, cette solution, qui passe nécessairement par l'index N sélectionné et un tout petit (vraiment petit) calcul arithmétique.
    Je vais te laisser là.
      3  3

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par tituxxx Voir le message
    ...J'ai créé un ComboBox "famille", je le remplit à l'aide de cette ligne de
    code :
    famille.RowSource = "i4:i37"
    T'es sur de toi ? ne serait-ce pas plutôt :
    famille.ListFillRange = "i4:i37"
      1  0

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Patrice740

    Sa combo est apparemment sur un userform, d'où la propriété RowSource !

    EDIT :
    Allez. On va lui décomposer la chose, y compris sans calcul arithmétique (en utilisant Offset).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Set Source = Range(famille.RowSource)
      MsgBox "voilà la plage à laquelle esty liée ma combobox ==>> " & Source.Address
      MsgBox "sa première cellule est " & Source(1).Address
      MsgBox "j'ai sélectionné l'index " & famille.ListIndex & " de ma combobox"
      MsgBox "il correspond donc à la cellule " & Source(1).Offset(famille.ListIndex).Address
    Il s'agit là d'une décomposition très volontaire (pour qu'il comprenne) . Il est évident que l'on aurait le même résultat avec une seule ligne de code et un petit calcul de différence
      3  3

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir

    Sans inforations supplémentaires, sans passer par le .ListIndex, il suffit de trouver l'adresse de l'item dans la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub famille_Click()
      MsgBox [I4:I37].Find(famille).Address
    End Sub
      1  1

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Salut Ordonc
    Non. Et pour deux raisons : l'une éthique et l'autre de risque à ne jamais courir.

    EDIT : et si anasecu (que je salue au passage) passe par là, il t'en donnera une troisième.
      1  1

  9. #9
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme clairement expliqué par Unparia
    Lorsque l'on utilise la propriété RowSource pour alimenter un contrôle ComboBox ou ListBox, la propriété ListIndex de ceux-ci indique clairement le numéro de ligne de la plage référencée et ensuite un simple calcul arithmétique suffit pour se positionner sur une des cellules de cette ligne.
    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
      1  1

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    La question initiale étant de trouver la cellule correspondant à la sélection, il serait utile de renvoyer une cellule... Ca permettrait par exemple de partir vers la droite avec un offset pour trouver rapidement les données liées à la ligne du combobox (par exemple pour remplir le userform avec ces données).

    Dans l'exemple suivant* où le rowsource du combo est =feuil1!c13:c18, l'objet c pointe vers cette cellule choisie. Le +1 correspond au fait que la première ligne d'un combobox possède l'indice 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
      Dim c As Range
     
      Set c = Range(ComboBox1.RowSource)(ComboBox1.ListIndex + 1)
      MsgBox "la cellule choisie est la cellule " & c.Parent.Name & "!" & c.Address
    End Sub

    Nom : 2019-02-21_211115.png
Affichages : 2646
Taille : 18,3 Ko

    * L'événement Change n'est utilisé ici que pour illustrer la méthode permettant de retrouver l'objet cellule correspondant à la sélection
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      2  0

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tu parles de l'auteur de la discussion à la troisième personne avec quelqu'un d'autre
    Et c'est précisément la vocation du pronom personnel, lorsque l'on parle à un interlocuteur de quelqu'un qu'il a évoqué.
    La seule chose dont je me "rends compte" est que je ne suis pas à votre mode.
    Et demain, lorsque la "mode" sera encore différente, il va également falloir la suivre ? Vous également ?

    EDIT : au fait (je suis curieux) par quoi est-il à la mode de remplacer le pronom "ils" pour se référer à plusieurs personnes ayant été évoquées ? Toute une énumération, alors ?
      1  1

  12. #12
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par unparia Voir le message
    Et c'est précisément la vocation du pronom personnel, lorsque l'on parle à un interlocuteur de quelqu'un qu'il a évoqué.
    La seule chose dont je me "rends compte" est que je ne suis pas à votre mode.
    Et demain, lorsque la "mode" sera encore différente, il va également falloir la suivre ? Vous également ?
    Merci Monsieur pour la leçon de grammaire.
    Maintenant tout est clair.
      3  0

  13. #13
    Membre habitué
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Février 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel

    Informations forums :
    Inscription : Février 2019
    Messages : 9
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    La question initiale étant de trouver la cellule correspondant à la sélection, il serait utile de renvoyer une cellule... Ca permettrait par exemple de partir vers la droite avec un offset pour trouver rapidement les données liées à la ligne du combobox (par exemple pour remplir le userform avec ces données).

    Dans l'exemple suivant* où le rowsource du combo est =feuil1!c13:c18, l'objet c pointe vers cette cellule choisie. Le +1 correspond au fait que la première ligne d'un combobox possède l'indice 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
      Dim c As Range
     
      Set c = Range(ComboBox1.RowSource)(ComboBox1.ListIndex + 1)
      MsgBox "la cellule choisie est la cellule " & c.Parent.Name & "!" & c.Address
    End Sub

    Nom : 2019-02-21_211115.png
Affichages : 2646
Taille : 18,3 Ko

    * L'événement Change n'est utilisé ici que pour illustrer la méthode permettant de retrouver l'objet cellule correspondant à la sélection
    Merci bcp c'est exactement ce je cherchais et bien expliquer. Merci pour ton retour
      3  0

  14. #14
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 272
    Par défaut
    Mais je veux bien apprendre --->> montre-moi ce que toi, tu aurais répondu pour aider le demandeur à comprendre. Cela m'intéresse.
    Voir la réponse #20 de Pierre.

    1 seule réponse au lieu d'une dizaine, allant droit au but, et répondant parfaitement à la question demandée.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation
      3  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la valeur active d'une cellule d'une autre feuille
    Par misterjuicelink dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/10/2018, 14h51
  2. [XL-2007] Récupérer la valeur de la dernière cellule active d'une colonne
    Par Coucou17 dans le forum Excel
    Réponses: 4
    Dernier message: 11/12/2016, 21h33
  3. définir la cellule active d'une feuille inactive
    Par Fanfan2A dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/11/2009, 15h56
  4. [HTML]comment fixer la taille d'une select (combobox) ?
    Par VerrNum dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/07/2008, 11h42
  5. Test de cellule activée dans une colonne permanent
    Par pisistrate dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/08/2007, 13h47

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