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 :

Fonction recherche excel/vba


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 7
    Points
    7
    Par défaut Fonction recherche excel/vba
    Madames, messieurs les developpeurs
    Je vais essayer de décrire au mieux mon problème
    Premièrement, j'ai un tableau excel qui est mise a jour via un userform.
    Dans ce tableau excel j'ai 9 colonnes, et on va dire un nombre infinie de ligne puisque il est mise a jour constament quand je rempli mon formulaire userform.
    Sûr une autre feuille excel je voudrais y apposer une cellule de recherche. Quand j'écrit une valeur " " dans cette cellule de recherche et je click sûr le bouton rechercher, je voudrais voir apparaître toutes les lignes qui contienne dans la case a de mon tableau de données de la colonne A pour y faire apparaître un graphique qui a pour valeur de x la colonne "d" et y la colonne "e"
    Est ce quelqun pourrais m'aider svp car la je fait le tour du net et je ne trouve rien

    Bisou bisous

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Techniquement je te rassure tu n'as pas un nomre infinie de ligne
    65536 si tu n'as pas office 2007, 1048576 sinon.
    Pour connaitre la dernière regarde
    ici

    Pour effectuer ta recherche regarde l'aide excel sur la fonction Find
    On parmis les différent post de ce forum.
    Fait un début de code, et quand tu auras quelque chose de concret si ca ne marche pas on essayera de regarder ca ensemble

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    salut
    pour la recherche tu peux aussi utiliser la fonction "Filtre elaboré" (voir Menu Données dans Excel). Pour voir comment ca se programme, fais un bout de code en utilisant par exemple l'enregistreur de macros.

    Pour l'architecture générale de la macro je ferais un truc comme ca :
    - effacer le tableau d'extraction des précédentes valeurs
    - exécuter le filtre élaboré avec le critère inscrit dans ta cellule
    - réajuster les noms des plages (noms Excel) selon le nouveau nombre de lignes extraites

    Le graphique doit à mon avis se baser sur des plages nommées dans Excel. il se mettra à jour tout seul.

    à plus

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Merci tout d'abord pour votre réponse. Pour être le plus honnête avec vous safait deux jours que je cherche, j'essaie et je n'arrive a rien. Je suis vraiment depité. Si vous aviez code ou tuto sa serait génial car la ces la déprime..

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Tu as un algorithme, quelque fonction,... On ne peux pas faire beaucoup plus sans avoir plus d'infos.
    Le problème doit venir du fait que tu n'es pas très copain avec le VBA (on écartera l'option j'attends juste un code tout fait parce que j'ai la flemme, puisque tu dis y être depuis deux jour ).

    Du coup le mieux serait que tu nous montre le code que tu as réaliser (utilise les balise code)
    Dit nous ce qui ne vas pas, et ensuite on verra.
    Plus tu sera précis, plus la réponse sera bonne


    après si tu veux un tuto je te conseil les tutos de developpez.com pour le VBA excel
    Le premier est assez exaustif pour un début, les autres sont plus ciblé

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    En faîte tu as un peu tous comprit, le VBA mais pas familié. Pour être franc j'ai essaye tellement de chose prît sur internet que je suis complètement perdu étant donne que j'ai essaye pas mal de chose. En plus de cela pour copier les codes avec le téléphone ce n'est pas très plosible

  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
    Et voilà !

    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
    24
    25
    26
    27
    28
    29
    30
    Sub Test()
     
    Dim FL1 As Worksheet
    Dim Valeur As Variant, c As Range
    Dim NoLigne As Long, DerLig As Long
    Dim i As Long
     
        i = 1
        Set FL1 = Worksheets("BlaBla") ' Tu mets le nom de ta feuille où tu fais la recherche
        NoLigne = 1 ' Si la recherche commence à la ligne 1
        Do
            If Not Cells(1, 10) = "" Then ' La valeur que tu recherches se situe en J1. Modifie pour que ça soit sur une autre feuille
                Valeur = Cells(NoLigne, 1) ' Compare aux valeurs de la colonne A
                Do
                    With FL1.Range("A" & NoLigne + 1, [A65536].End(xlUp))
                        DerLig = 0
                        Set c = .Find(Valeur, LookIn:=xlValues, LookAt:=xlWhole)
                        If Not c Is Nothing Then
                            Cells(i + 1, 10) = Cells(NoLigne, 1) ' Place dans J, en-dessous de J1, les valeurs trouvées dans l'ordre (toujours les mêmes donc)
                            Cells(i + 1, 11) = Cells(NoLigne, 1).Offset(0, 3) ' Valeurs de D correspondantes dans H
                            Cells(i + 1, 12) = Cells(NoLigne, 1).Offset(0, 4) ' Valeurs de E correspondantes dans I
                        End If
                        Set c = Nothing
                    End With
                Loop While DerLig > NoLigne
            End If
            NoLigne = NoLigne + 1
        Loop While NoLigne < FL1.Range("A65536").End(xlUp).Row
     
    End Sub
    Non testé, mais ça devrait marcher

    T'as quelques trucs à changer, mais tout est dans les commentaires que j'ai apposés. Par contre, il faut bien que tu bosses un peu ! Donc, va falloir que tu fasses le graphique seuls sur les données des colonnes H (provennant de D) et I (provenant de E). Pas bien compliqué Il faut que tu fasses de la misse en forme aussi

    Ah oui, dernière chose, si tu veux récupérer les numéros de lignes correspondants dans la colonne J et non les valeurs trouvées (toujours les mêmes donc pas très intéressant), tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i + 1, 10) = Cells(NoLigne, 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i + 1, 10) = NoLigne
    Bonne chance !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 7
    Points
    7
    Par défaut
    Madame, monsieur,
    Bon soit je suis vraiment nul soit on m'a mal comprit, je vais essayer de vous redecrire mon truc en plus simple...
    Dans mon classeur excel, j'ai 2 feuilles, la première nommé "Index", la seconde "Données".
    Dans un premier temps, sur ma page index j'ai une textbox pour ecrire le champ rechercher ainsi qu'un bouton pour valider la recherche.
    Le champ écrit dans le textbox doit être cherché dans la colonne A de mon classeur sur la feuille "Données".
    Une fois le numéro de machine trouvé dans la colonne A de la feuille "Données", je voudrai récupérer toutes les lignes contenant en colonne A le numero de machine rechercher (il y a une ou plusieurs lignes).
    Suite à cela je voudrais en extraire un graphique avec en abscisse les valeurs contenu dans la colonne H et en ordonnée les valeur de la colonne G.Le graphique s'appliquerai bien evidement par rapport a la valeur initiale recherché....
    Sincerement malgr encore des heures à chercher sue le net et un livre de formation VBA pour excel, je m'en sort pas, malgré que j'y croyais via votre aide précédente.
    Cordialement
    Bonne journée à vous.....

  9. #9
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro()
    '
    Dim valcherche As String
    Dim i As long
    valcherche = Worksheets("Index").TextBox1 ' toi d'adpater celà
    For i = 1 To Worksheets("Données").Range("A65536").End(xlUp).Row
        If Worksheets("Données").Cells(i, 1) = valcherche Then
            Worksheets("Données").Rows(i).Copy Worksheets("Resultat").Rows(Worksheets("Resultat").Range("A65536").End(xlUp).Row + 1)
        End If
    Next i
    End Sub
    Avec les infos que j'avais. J'écris les ligne trouvé dans un troisième onglet Resultat . Si ca ne te vas pas tout a fais tu devrais pouvoir l'adapter sans trop de problème.

    Pour le graphique je te laisse chercher personnellement j'ai toujours eu horreur des graph par macro

Discussions similaires

  1. Fonction recherche en VBA - Excel
    Par Pinetti dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/04/2013, 11h47
  2. double fonction recherche excel VBA
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/04/2010, 13h43
  3. Fonction recherche Excel
    Par noemiem dans le forum Excel
    Réponses: 1
    Dernier message: 10/09/2008, 19h44
  4. Aide fonction recherche dans VBA
    Par Koopa55 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2008, 12h02
  5. fonction recherche excel
    Par flunch dans le forum Excel
    Réponses: 5
    Dernier message: 20/01/2008, 19h05

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