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 ComboBox / TextBox recherche dans une autre feuille [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut vba ComboBox / TextBox recherche dans une autre feuille
    Bonjour,
    Dans une userform comportant une combobox (données sont dans la 1ère colonne d'un tableau de la feuille2 (propriété rowsource = feuille2)
    et une textbox dans laquelle sera écrit le résultat (dans la 2è colonne du tableau) de la recherche liée à la combobox

    Je suis dans la feuille1 lors de l'appel du formulaire
    je voudrais éviter la ligne 2 du code ci-dessous pour ne pas visualiser la feuille2 derrière mon userform

    ce code fonctionne à l'aide de la fonction qui recherche le numéro de ligne correspondant à la donnée de la combobox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub ()
     
    1. Dim Ligne As Integer
    2. Sheets("feuille2").Activate
    3. Ligne = Recherche(ComboBox1.Text, 1)
    4. If Ligne = 0 Then Exit Sub
    5. TextBox1 = Range("B" & Ligne)
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Recherche(Valeur, Colonne As Integer) As Long
        Dim Trouve As Range
           Set Trouve = Columns(Colonne).Find(Valeur, , xlValues, xlWhole)
        If Not Trouve Is Nothing Then
            Recherche = Trouve.Row
        End If
    End Function

    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 559
    Points
    6 559
    Par défaut
    Salut
    Une piste et à adapter selon votre IHM
    Par contre je ne vois pas trop l'intérêt de votre function pour déterminer le n°ligne
    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
    23
    Private Sub UserForm_Initialize()
    Dim Wks As Worksheet
    Dim Rng As Range
    Dim i As Long
     
    Set Wks = Worksheets("Feuil2")
    With ComboBox1
        For i = 2 To Wks.Range("A" & Rows.Count).End(xlUp).Row
            .AddItem Wks.Range("A" & i)
        Next i
    End With
    TextBox1.Visible = True
    End Sub
    Private Sub ComboBox1_Click()
    Dim CurrentRecord As Long
        CurrentRecord = ComboBox1.ListIndex
    End Sub
    Private Sub ComboBox1_Change()
    Dim Ligne As Long
        If ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = ComboBox1.ListIndex + 2
        TextBox1.Value = Worksheets("Feuil2").Cells(Ligne, 2)
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    C'est parfait!
    Merci beaucoup.
    Fredym

  4. #4
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut limiter la plage à la dimension du tableau de données au lieu de la colonne entière
    Bonjour,
    C'est parfait votre code fonctionne après adaptation mais je voudrais le parfaire:

    Au lieu de déterminer la colonne entière de la feuille2 pour lister la combobox je voudrais paramétrer une plage nommée qui adapte et limite au nombre de ligne du tableau.

    et utiliser
    Dim rng As Range pour dimensionner la plage.
    merci de votre aide.
    Fredym

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/12/2019, 08h03
  2. Recherche dans une autre feuille
    Par Doomro dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/07/2016, 08h41
  3. [XL-2010] Fonction de recherche dans une autre feuille
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/07/2011, 20h19
  4. Recherche dans une autre feuille de Excel même classeur
    Par kourria dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2007, 22h29

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