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 le numéro de ligne ou est situé la valeur d'une combobox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut Récupérer le numéro de ligne ou est situé la valeur d'une combobox
    Bonjour, je reviens vers vous car là, je ne sais pas du tout comment faire je pense que c'est tres simple mais je n'est pas la commande...

    Je souhaite récupérer le numéro de ligne ou est située la valeur de ma combobox...

    Mais attention je ne peux pas utilisé le numéro d'item car la liste à l'intérieur de ma combobox varie suivant une autre combobox...

    Merci à tous...

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Je ne suis pas sur de ce que tu veux:
    Il faut trouver dans une des feuilles excel le numéro de ligne ou se trouve l'info qui est dans la combobox?

    Si c'est ça:

    defini une plage et ensuite utilise Find:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Maplage
    Set Trouve = .Find(combobox.value, LookIn:=xlValues, SearchOrder:=xlByRows)
    end with
    If not trouve is Nothing then Index_ligne=Trouve.row
    Si ce n'est pas ce que tu cherches soit un peu plus précis.

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour mentat diude54 le forum
    un autre exemple ta liste commence en a2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
    MsgBox "ligne  " & Cells(ComboBox1.ListIndex + 2, 1).Row
    End Sub

  4. #4
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Oki merci c'est bien ce que je cherche...
    je voudrait ensuite coller cette valeur dans un label, mais ça n'as pas l'aire de fonctionner...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With listemap
    Set trouve = .Find(comboboxmaps.Value, LookIn:=xlValues, SearchOrder:=xlByRows)
    End With
    Label18.Caption = trouve
    If Not trouve Is Nothing Then Index_ligne = trouve.Row

  5. #5
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Bonjour et merci Laetitia

    Seulement je ne veut pas afficher le numéro dans un message box mais dans un label de mon useforme...

    Ensuite je ne peut pas utilisé la fonction item car les valeur de ma combobox change en fonction d'une autre combobox...

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Trouve est un variable de type range
    Pour avoir la valeur de la cellule il faut utiliser value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label18.Caption = trouve.Value
    Bon courage

    EDIT : Excuse, pour la ligne c'est Row

  7. #7
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    ça ne fonctionne pas... sniff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Ajout du numéro de maps
    With listemap
    Set trouve = .Find(comboboxmaps.Value, LookIn:=xlValues, SearchOrder:=xlByRows)
    End With
    If Not trouve Is Nothing Then Index_ligne = trouve.Row
    Label18.Caption = trouve.Value
    j'ai aussi un problème avec ce code c'est que lorsque qu'il y as une valeur sur ma combobox1 et que je change la liste de ma combobox1 avec l'aide de ma combobox2. il me met une erreur 424 en surlignant la ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set trouve = .Find(comboboxmaps.Value, LookIn:=xlValues,

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sur quel évènement tu as mis ton code?
    Par ce que sur comboboxmaps_Change() ça fonctionne et peut être par précaution faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set listemap = Range("A1:A347")  ' à dapter
     
    Set trouve = listemap.Find(comboboxmaps.Value, LookIn:=xlValues, SearchOrder:=xlByRows)
     
    If Not trouve Is Nothing Then
        Label18.Caption = trouve
        Index_ligne = trouve.Row
    End If

    EDIT: et même dans comboboxmaps_AfterUpdate()

  9. #9
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    IL te faut faire une gestion des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    On Error GoTo fin
     
    Dim PTrouve As Range
     
    Set PTrouve = Feuil1.Range("A2:A13").Find(ComboBox1.Value, , xlValues)
     
    Label1.Caption = PTrouve.Row
     
    fin:

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    As tu déclare listemap et trouve As Range?
    As tu convenablement instancié listemap?
    est ce que ta listemap indique la plage ou la recherche devra se faire?
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set listemap=Sheets(X).Range(Y)

  11. #11
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Oki merci avec ce code ça fonctionne au poile lol aucune erreur entre la combobox1 et combobox2...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set listemap = Range("B1:B347")  ' à dapter
    Set trouve = listemap.Find(comboboxmaps.Value, LookIn:=xlValues, SearchOrder:=xlByRows)
    If Not trouve Is Nothing Then
        Label18.Caption = trouve.Row - 2
    End If
    Comment faire pour ne rien afficher dans le label18 si il n'y a rien dan la combobox...?

    J'ai fais ce code... mais avec le code du dessue et bien il m'affiche dans le label18 le numéro de ligne 154 ou il n'y a rien....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Si comboboxmaps = ""
     If comboboxmaps.Value = "" Then
     Label9.Caption = ""
     Label11.Caption = ""
     commentaire.Caption = ""
     Label18.Caption = ""
     End If
    En tout cas merci beaucoup pour votre aide...

  12. #12
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    edit: je ss à côté de la plaque. je supprime ma bêtise

  13. #13
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Oki merci à tous j'ais trouver pas trop compliqué mais bon à la fin je ne sais plus ou j'en suis mdr alors voila mon code final :

    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
     
    'si ma combobo est vide alors label18 = rien
    If comboboxmaps = "" Then
    Label18.Caption = ""
    'autrement
    Else
    'j'attribut le nom listemap à ma colonne B
     Set listemap = Columns("B")
    'trouve = le numéro de la ligne correspondant à la valeur de ma comboboxmaps
     Set trouve = listemap.Find(comboboxmaps.Value, LookIn:=xlValues, SearchOrder:=xlByRows)
     If Not trouve Is Nothing Then
    'label18 = au numéro de ligne -2 car ma liste comence à la ligne 3
         Label18.Caption = trouve.Row - 2
     End If
    End If
    Merci à tous pour votre aide j'ai encore un petit soucis mais ça ne concerne plus cette discussion donc je vais voir si je n'y arrive pas je risque de recrée une discussion...lol

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

Discussions similaires

  1. récupérer le numéro de ligne d'une plage en fonc
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/12/2007, 13h33
  2. Récupérer le numéro de ligne d'une feuille excel dans un listbox
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/06/2007, 09h16
  3. Tableau : récupérer le numéro de ligne
    Par Christophe P. dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/05/2007, 16h15
  4. récupérer le numéro de ligne d'un tableau
    Par seve998 dans le forum Struts 1
    Réponses: 1
    Dernier message: 26/02/2007, 17h52

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