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 :

Extraire la valeur d'une dropdwons pour la comparer [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Par défaut Extraire la valeur d'une dropdwons pour la comparer
    Bonjour,

    J'essaie d'extraire le texte sélectionné d'une dropdown afin de le comparer ultérieurement. A priori ce que j'appelle dropdown serait une combobox ou une listobx. Elle est intégrée directement à me feuille de calcul et ne fait pas partie d'un userform (ce qui me ferme environ 99% des infos sur les combobox/listbox dispo sur le net). Le souci est que je ne sis absoluement pas comment faire, j'ai déjà essayé plusieurs méthodes, et aucune ne semble fonctionner.

    Voici où j'en suis (bout de code ciblé) Ligne 74, module 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set champ = ActiveSheet.DropDowns("Zone combinée 45")
    num = champ.Value
    Choix = champ.ListEntries(num).Name
     
    For Each c In Feuil3.Range("e1:e" & nligne)
        If Cells(i, 2).Value = Choix Then
    Je vous joint la feuille entière si vous voulez voir le contexte global, je bute sur le module 3, qui fonctionne dans la feuille 3.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    pour les composants formulaire et non activX
    un exemple pour ta zone combinée(nom que exel donne au combobox qui ne sont pas des activX

    met dans un module standard ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub click()
    nom = Application.Caller
    MsgBox Feuil1.Shapes(nom).ControlFormat.Value 'pour la valeur
    MsgBox Feuil1.Shapes(nom).ControlFormat.ListIndex 'pour l'index de ligne
    End Sub
    ensuite clic droit sur ta combo et affecter une macro puis choisi la sub click
    adapte ton sheet bien sur
    c'est presque pareil que les activX sauf que pour les propriété tu ajoute".controlformat"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Tu peux définir une cellule liée au controle (dans les propriétés), puis récupérer la valeur de la cellule liée.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Par défaut
    Premièrement, merci pour ta réponse Patrick.

    Toutefois, elle ne m'aide pas beaucoup en effet, bien que je puisse obtenir maintenant (grâce à toi) mes index de ma zone combinée, mes deux message box me donnent la même chose : l'indice sous forme numérique. Hors j'aimerai pouvoir extraire le texte, afin de le comparer. Le but est de choisir un fournisseur, et à partir d'une liste de l'ensemble des livraisons compter les retards de ce fournisseur. Ma macro analyse la liste des livraisons, en extrait les différents fournisseurs (et les stocks via un array) et remplie la zone combinée avec. On choisi ensuite le fournisseur dans la liste, et le compte des retards se fait,via une boucle for avec un test if comparant le fournisseur choisi et le fournisseur de la commande. C'est sur cette partie que je butte.

    Maintenant que j'ai expliqué plus en détail, espérons que tu aperçoive mon erreur (de conception peut être).

    Merci d'avance

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Bonjour,
    Tu peux définir une cellule liée au controle (dans les propriétés), puis récupérer la valeur de la cellule liée.
    Bonjour riaolle,

    Comment accède-t-on aux propriétés ? (Je suis TRES débutant sur excel )
    Je précise qu'il ne s'agit pas de contrôle activX

    Merci d'avance

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    C'est quoi comme type de controle ?
    Nom : controle.png
Affichages : 114
Taille : 22,9 Ko

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    riaolle c'est une zone combinée pas une combobox

    comme je l'ai dis précédemment c'est controlformat.propriétévoulu

    tu a
    1. .value (valeur (text))
    2. .listindex (l'index)
    3. .list(donne un tableau)
    4. .list(X) ( donne la valeur (texte) de l'index (x)


    mais perso j'aurais utiliser des combobox activX c'est tellement plus simple a manipuler par VBA

    par contre si vous savez comment la remplir autrement qu'avec une plage de cellule(listfillrange) je prends !!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    je suppose que tu veux comparer ta colonne "e" dans feuille 3 si ca correspond a ce que tu a choisi dans la zone combinée c'est bien ca ?
    dans ce cas la c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set champ = ActiveSheet.Shapes("Zone combinée 45")
    With champ.ControlFormat: Choix = .List(.ListIndex): End With
     
    For Each c In Feuil3.Range("e1:e" & nligne)
        If Cells(i, 2).Value = Choix Then
    MsgBox "youpi!!!"
    '....
    'reste du code
    End If

    sauf que visiblement tu ne metrise pas non plus les boucle et leur type
    ceci: n'a ni queue ni tete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each c In Feuil3.Range("e1:e" & nligne)
        If Cells(i, 2).Value = Choix Then
    ce serait plutôt cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each c In Feuil3.Range("e1:e" & nligne)
        If c.Value = Choix Then
    cours accéléré:
    boucle for each= boucle sur des object (l'argument de l'enoncé en l'occurrence ici "c" est l'object
    boucle avec iteration numerique
    la l'argument d'iteration n'est pas l'object mais un indice qui va nous servir a déterminer l'index de la ligne de cellule qui est elle l'object (cells(i,X))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'facon 1 
    if cells(i,"e")=choix then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'facon 2
    if cells(i,5)=choix then
    conclusion pour toi et ta boucle for each
    ce sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set champ = ActiveSheet.Shapes("Zone combinée 45")
    With champ.ControlFormat: Choix = .List(.ListIndex): End With
     
    For Each c In Feuil3.Range("e1:e" & nligne)
        If c.Value = Choix Then
    MsgBox "youpi!!!"
    '....
    'reste du code
    End If


    bonne route
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Par défaut Merci !
    Merci beaucoup ! ça marche niquel.

    Pour ce qui est de remplir ma zone combinée moi j'ai utilisé un array avec simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AddItem fourn()
    Avec fourn() comme array.

    Problème résolu !

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    et c'est la encore une erreur additem visiblement ne fonctionne pas avec ce composant

    tout du mois si je fait un add item avec un array ca ajoute seulement le premier et ca efface ce qu'il y avait dedans avant dans la zone combinée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2007] Extraire toutes les valeurs d'une Listbox pour les afficher dans un commentaire
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2013, 18h12
  2. [Toutes versions] Extraire une valeur d'une ListBox pour l'afficher dans une cellule
    Par stid59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2009, 22h05
  3. Réponses: 8
    Dernier message: 21/07/2006, 10h12
  4. recuperer la valeur d'une combobox pour la comparer dans une requête
    Par Rukawa dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/06/2006, 11h22
  5. Réponses: 8
    Dernier message: 06/12/2005, 11h33

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