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 :

Recherche dans tableau via critère dans textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut Recherche dans tableau via critère dans textbox
    Bonjour,

    Comment faire une recherche à partir d'une feuille 1 ("Rechercher et Modifier") dans une base de données située en feuille 2 ("Base de données", plage A9:K2000) avec un critère de recherche rentré dans une Textbox1 sur la feuille 1. Je souhaiterai ensuite faire afficher toutes les lignes de ma base de données satisfaisant à ce critère (plage A19:K19) et obtenir un nouveau tableau.
    Voici ce que j'ai déjà essayé avec de l'aide mais sans grand succès.

    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
    Private Sub Rechercher_Click()
     
    Dim i As Long
    Dim iDest As Long
     
    iDest = 1
     
    With Sheets("Base de Données")
     
    For i = 1 To Range("A9:K2000").End(xlDown).Row
        If Range("A9" & i) = Sheets("Rechercher & Modifier").TextBox1.Value Then
            Rows(i).Copy
            Sheets("Rechercher & Modifier").Range("A19" & iDest).PasteSpecial
            iDest = iDest + 1
        End If
    Next i
     
    End With
     
    End Sub
    Merci pour votre aide.

  2. #2
    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 : 52
    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,

    Une autre solution avec Find qui recherche la valeur dans toutes les cellules de la plage et non plus sur une seule colonne (Ici On recherche Lundi)

    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
    Dim iDest As Long
     
    iDest = 1
     
    With Range("A1:C34")
     
    Set c = .Find("Lundi", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            Rows(c.Row).Copy
            Sheets("Feuil2").Range("A" & iDest).PasteSpecial
            iDest = iDest + 1
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
     
    End With

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Merci de vos réponses mais cela ne m'aide pas beaucoup plus et je ne sais pas très bien comment l'exploiter. En faite j'ai sur une feuille 1, 3 Textbox et 2 Combobox que l'utilisateur à le choix de remplir ou de ne pas remplir pour effectuer une recherche. Après avoir rempli et sélectionné les champs, il clique sur un commandbutton et là je souhaiterai que s'affiche le ou les résultats correspondant sous la forme d'un nouveau tableau de la même taille que la base de données.
    Mon problème vient du fait que je ne sais pas comment structurer les conditions sur les combobox et textbox et lier les feuilles entres-elles.

    Merci.

  4. #4
    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
    Un exemple pour la compréhension en utilisant un filtre automatique

    En Feuil1 données A1:Exx avec les titres de colonnes en ligne 1
    2 textbox: TexBox1 et TextBox2
    1 Combobox: ComboBox1
    1 CommandButon: CommandButon1

    Le but est, en fonction des données saisies en TextBox1, TextBox2 et ComboBox1, en copie en Feuil2 les lignes répondant à ces 3 critères.
    Si un critère est laissé vide, la colonne correspondante n'est pas prise en compte.

    PS: Pour l'exemple, TextBox1 filtre sur colonne1, TextBox2 sur colonne 3 et ComboBox1 sur colonne 4.

    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 CommandButton1_Click()
    Dim LastLig As Long
    Dim Crit1 As String, Crit2 As String, Crit3 As String
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        Crit1 = Trim(.TextBox1.Value)
        Crit2 = Trim(.TextBox2.Value)
        Crit3 = Trim(.ComboBox1.Value)
     
        Worksheets("Feuil2").UsedRange.ClearContents
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A1:E" & LastLig)
            If Crit1 <> "" Then .AutoFilter Field:=1, Criteria1:=Crit1                                                   'filtre colonne 1 sur valeur de textbox1
            If Crit2 <> "" Then .AutoFilter Field:=3, Criteria1:=Crit2                                                   'filtre colonne 3 sur valeur textbox2
            If Crit3 <> "" Then .AutoFilter Field:=4, Criteria1:=Crit3                                                   'filtre colonne 4 sur valeur de combobob1
            .SpecialCells(xlCellTypeVisible).Copy Sheets("Feuil2").Range("A1")
        End With
        .AutoFilterMode = False
    End With
    End Sub

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

Discussions similaires

  1. [XL-2007] clic droit dans cellule ok mais dans tableau non
    Par a.faurie dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/10/2013, 09h16
  2. Macro de recherche selon critères dans tableau excel
    Par koodbook dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/03/2013, 14h43
  3. Réponses: 2
    Dernier message: 19/06/2008, 10h13
  4. recherche et affichage des enregistrement dans tableau
    Par nabilfaouzi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 27/02/2008, 13h22
  5. Réponses: 10
    Dernier message: 19/01/2006, 06h41

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