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 :

Combobox récupérer information [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Combobox récupérer information
    Bonsoir
    j'ai un problème avec les combobox
    J'ai une combobox qui est rempli à partir des informations provenant d'une feuille (je balaye l'ensemble de ma feuille)
    J'aimerais savoir comment récupérer les coordonnées de l'information que je valide dans ma combobox (après le choix).
    Exemple: liste de la combobox: essai1, essai2, essai3
    Je choisis essai2, je voudrais savoir comment recupérer la position de essai2 dans ma feuille de calcul.
    Merci d'avance pour votre aide
    A+
    Bob

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Hello,

    Voici en PJ un petit début...

    Bye, Anton.
    Cdt, Antonio.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Je me suis mal exprimé:
    prenons l'exemple que tu as fourni (cf fichier excel)
    si dans la combobox je selectionne essai 2, je voudrais recuperer les coordonnée de essai2 dans la feuille, c'est à dire les coordonnée de la cellule, ici les coordonnées sont: i=2 (ligne) j=1 (colonne)
    Car en récupérant les coordonnées de mon choix (ici essai 2) je pourrais rajouter une ligne au dessus par exemple ou remplir la case juste à coté.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Salut,

    Simplement avec les méthodes .Row, .Column ou .Address ?

    Au moment où tu balaies ta feuille pour rentrer les trucs dans ta ComboBox, tu utilises ces méthodes pour voir où tu en es (si tu balaies avec deux boucles For i et For j, tu n'en as même pas besoin). Bref, tu stockes ça dans une variable.

    En fait, je ne vois vraiment pas ton problème qui doit pourtant bel et bien exister. Alors pourquoi ne pas poster ton code de remplissage histoire de voir ? Tu aurais sûrement plus d'aide qu'avec une question aussi "théorique" et des informations qui font cruellement défaut.
    DeaD

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Points : 49
    Points
    49
    Par défaut
    ce que tu voudrai faire c'est écrire a coté de la valeur ciblé par ta combobox ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Voici le code quand je clic sur le bouton qui lance la USF
    je balaye l'ensemble de ma feuille (Feuille numero 2).

    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
     
    Private Sub decoupage_Click()
    Dim i As Integer
    Dim j As Integer
        For j = 1 To 8
            For i = 4 To 100
     
     
                If Feuil2.Cells(i, j) <> "" Then
                UserForm8.ComboBox1.AddItem Feuil2.Cells(i, j)
                End If
     
            Next i
        Next j
    UserForm8.Show
    End Sub
    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
     
    Private Sub OK_Click()
    UserForm8.Hide
    Dim s As String
    Dim a As Integer
    Dim b As Integer
    s = UserForm8.Combobox1.Value
        For i = 4 To 100 'balayage ligne
            For j = 1 To 8 'balayage colonne
     
                If Feuil2.Cells(i, j) = s Then 'recherche de la position de s dans ma 'feuille de calcul
     
                    Feuil2.Rows(i + 1).Select
                    Selection.Insert
                    Feuil2.Cells(i + 1, j + 1) = "trucmuche"
     
     
                End If
     
            Next j
        Next i
    End Sub

    ma solution est de rebalayer toute la feuille et de chercher la case qui correspond à la valeur de la ComboBox, mais si il y a une deuxième case avec la même valeur je l'oublie.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Ta solution ne m'a pas l'air mauvaise du tout.

    Où se trouve la deuxième case avec la même valeur que tu "oublies" ?

    Je pense qu'il faudrait que tu fasses, à la fin de ton If, un j = 0 et i = i +1.

    Teste et dis-moi.
    DeaD

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Les codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm8.Combobox1.Feuil2.Row
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm8.Combobox1.Feuil2.Column
    ne fonctionnent pas?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A toutes fins utiles, vous pourriez avoir 2 colonnes dans votre Combobox, dont la 1ère avec une largeur = 0 (donc non visible) et renseigner celle-ci avec l'adresse de la cellule, donc plus besoin de balayer la plage de cellule.

    PS : pensez à indiquer votre version d'Excel. Vous cliquer sur le bouton "Editer" dans votre 1er message puis vous choisissez la version en cliquant sur "Intitulé" à gauche du titre.

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour votre aide.
    Je viens d'essayer la méthode en rajoutant 2 colonnes, une pour le numéro de la ligne, et une pour le numéro de la colonne

    Voici ce que je viens d'écrire:
    Initialisation de l'USF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Dim i As Byte, j As Byte
    parent.ColumnCount = 3
    parent.ColumnWidths = "80;10;10"
    End Sub
    Balayage de ma feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim i As Integer
        Dim j As Integer
        For j = 1 To 8
            For i = 4 To 100
     
                If Feuil2.Cells(i, j) <> "" Then
     
                UserForm8.parent.AddItem Feuil2.Cells(i, j)
                UserForm8.parent.List(UserForm8.parent.ListCount - 1, 2) = i
                UserForm8.parent.List(UserForm8.parent.ListCount - 1, 3) = j
                End If
     
            Next i
        Next j
    Le numéro de la ligne apparait bien mais pas le numéro de la colonne. Quelqu'un a une idée?
    Sinon à quoi sert le "-1" après liscount?


    Merci d'avance

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Je crois que j'ai résolu mon problème:
    les colonnes sont numérotées à partir de 0
    additem rajoute à la colonne 0
    pour accéder à la valeur de la première colonne j'ai ça: UserForm8.parent.Value
    Mais comment fait-on pour accéder aux valeurs des deux autres colonnes?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Regardez ici :
    http://silkyroad.developpez.com/VBA/...serForm/#LII-F
    et particulièrement :

    Extraire la valeur de la 3eme colonne d'une Listbox, dans la ligne sélectionnée.
    il s'agit ici d'une ListBox mais le principe est le même pour une ComboBox.

    Vous pouvez en profiter pour trouver bien d'autres enseignements sur l'utilisation des contrôles d'un UserForm.

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    C'est bon j'avais trouvé la réponse entre temps en lisant ce tutorial. Merci beaucoup

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

Discussions similaires

  1. Récupérer informations systèmes
    Par PP(Team) dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 11/07/2007, 15h39
  2. Réponses: 1
    Dernier message: 24/03/2007, 08h55
  3. Récupérer information de sécurité d'un fichier
    Par cyrilc dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/01/2007, 19h07
  4. [vb.net][combobox] récupérer la valeur avant changement
    Par graphicsxp dans le forum Windows Forms
    Réponses: 36
    Dernier message: 19/10/2005, 10h59
  5. Récupérer informations IP, ...
    Par jpdelx dans le forum ASP
    Réponses: 6
    Dernier message: 16/11/2003, 05h56

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