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

Excel Discussion :

Création d'un bouton recherche sur une page et/ou un classeur Excel


Sujet :

Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut Création d'un bouton recherche sur une page et/ou un classeur Excel
    Bonjour,

    Je suis débutante en macro et à fortiori en VBA.

    Dans mon fichier Excel reprenant plusieurs feuilles je voudrais introduire un bouton "Search" sur une image, afin que lorsque l'utilisateur cliquera dessus il pourra introduire un mot clé et le système s'arrêtera sur la première occurrence rencontrée sur la page en cours (par ex la fonction "Rechercher" de MS-Office) ou un deuxième bouton sur l'entièreté du classeur.

    J'ai bien trouvé certains modules sur le site, mais n'arrive pas à les inclure sur l'objet, VBA s'arrête déjà sur la première ligne et j'ai un message d'erreur : Erreur de compilation End Sub attendu.

    Même si ce n'est pas encore celui que je voulais exactement, j'ai essayé avec le script suivant :

    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
    Sub BoutonSearch()
    Function ConcatVLookUp(ByVal ValRecherche, _
                           ByVal TabMatrice As Range, _
                           ByVal IndexCol, _
                  Optional ByVal blnConcat As Boolean = False, _
                  Optional ByVal Separateur = ";") As Variant
     
    ' Permet une recherchev sur des caractères génériques
    '
    Dim c As Range
     
    application.Volatile
     
    For Each c In TabMatrice.Cells
        If c.Value Like ValRecherche Then
            ConcatVLookUp = ConcatVLookUp & Separateur & c.Offset(0, IndexCol - 1).Value
            If Not blnConcat Then Exit For
        End If
    Next c
    ConcatVLookUp = Mid(ConcatVLookUp, Len(Separateur) + 1)
     
    Set c = Nothing
    End Function
    End Sub
    Il y a plusieurs macro dans le fichier, dont certaines déjà existantes.

    Un tout grand merci pour votre aide, vos précieux conseils.

    P.S. Si vous avez un script reprenant directement ma demande ce sera avec plaisir ,-)

    Marie-France

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    teste et adaptes ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub cherche()
    Dim mess As String, ch As Range
    mess = InputBox("choisir", "gnagnagna")
    'si recherche dans A
    Set ch = Range("a:a").Find(mess)
    If Not ch Is Nothing Then
    Range("a" & ch.Row).Select
    End If
     
    End Sub

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Déjà un tout grand merci pour la rapidité de la réponse.

    Cela fonctionne... super ;-)

    Cependant, peux-tu encore m'aider pour que lorsqu'il passe à la première occurrence et que celle-ci ne s'avère pas la bonne, que l'on puisse rechercher l'occurrence suivante, etc....

    Est-il également possible qu'au lieu que le curseur se mette dans la première cellule de la rangée, qu'il sélectionne soit la rangée entière ou du moins qu'il se mette dans la cellule où il a rencontré le mot ad hoc...

    Bonne fin d'après-midi
    Marie-France

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    ...celle-ci ne s'avère pas la bonne...
    pourquoi ? plusieurs occurence correspondent au critère recherché ?

    Est-il également possible qu'au lieu que le curseur se mette dans la première cellule de la rangée, qu'il sélectionne soit la rangée entière ou du moins qu'il se mette dans la cellule où il a rencontré le mot ad hoc...
    ça doit etre possible avec plus d'explications

    à +

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    oui il y a plusieurs occurrences et le même mot peut parfois se retrouver dans plusieurs colonnes

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    En fait, c'est un répertoire téléphonique. L'encodage n'a pas été fait via une base de données, mais encoder tout simplement : première colonne nom, suivi de prénom, téléphone (service), téléphone (privé), GSM, ......... Il y a 13 colonnes en tout.

    Dans le fichier, j'ai déjà pu mettre une macro : à côté de chaque numéro de téléphone un bouton permet de former directement le numéro via Excel.

    Le but maintenant c'est de mettre un bouton de recherche pour rechercher un élément dans la liste. C'est pourquoi un même mot peut se retrouver dans plusieurs rangs ou dans plusieurs colonnes.

    Je ne sais pas si ce que j'explique est clair...

    Encore merci pour tout

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Comme je ne peux pas deviner d'avance si l'occurence choisie est la bonne, pour l'instant je vais te proposer autre chose
    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
    Sub cherche()
    Dim mess As String, mess2 As String, ch As Range, dl As Integer, x As Integer
    dl = Range("a" & Rows.Count).End(xlUp).Row
    mess = InputBox("choisir", "gnagnagna")
    'si recherche dans A
    For x = 1 To dl
    Set ch = Range("a" & x, "a" & dl).Find(mess)
    If Not ch Is Nothing Then
        Range("a" & ch.Row).Select
        mess2 = MsgBox(ActiveCell.Offset(0, 1), vbYesNo, "la recherche est'elle bonne")
        If mess2 = 7 Then
            x = ch.Row
            Else
            Exit For
        End If
    End If
    Next x
    End Sub
    j'ai fait figurer dans mess2, le prenom mais tu pourras choisir quelle cellule faire figurer avec l'offset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 3), ...
    je n'ai pas essayé, il subsiste peut-etre des erreurs

    Bonne soirée

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour cette nouvelle version. Le script fonctionne

    Cependant, par rapport à mes besoins, il faudrait que la recherche s'effectue aussi bien dans les colonnes A, B et M.

    Très bonne journée. Encore merciiiiii pour ta gentillesse, ta disponibilité

    Marie-France

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Marie-France, re le forum
    la recherche s'effectue aussi bien dans les colonnes A, B et M.
    c'est possible mais quand la recherche s'effectue exemple dans A, le message va te renvoyer la cellule en B ou l'offset que tu auras choisi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mess2 = MsgBox(ActiveCell.Offset(0, 1), vbYesNo, "la recherche est'elle bonne")
    si la recherche s'arrete en B, le message va te renvoyer la cellule en C ou l'offset que tu auras choisi, idem pour M qui renvoie N ou....

    N'y a t'il pas une col fixe qui t'indique si le résultat est bon ?

    j'espère me faire comprendre

    Bonne journée

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    La recherche ne se fait pas dans la colonne M. De plus, la fonction ne marche pas tout le temps... Je ne sais vraiment pas ce que je fais comme erreur.
    Ce serait peut-être plus facile si je t'envoie un extrait du fichier... Je suppose que pour te l'envoyer (si tu es d'accord bien sûr), je dois te le faire en MP.

    Merci

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Voilà le fichier en attach

    L'index renvoie vers les différents onglets, un par catégorie, via des liens.

    Le but final est que les utilisateurs via l'intranet aient accès à ce fichier, qu'il sélectionne une catégorie et via la fonction Search (qui se retrouvera à chaque onglet), il puisse trouver rapidement l'information recherchée soit via le nom (col A), le prénom/service (col B), ou via l'info (col M). Tout comme la fonction recherche de Windows, si la première occurrence rencontrée n'est pas la bonne, elle passe à l'occurrence suivante.

    Bonne journée.
    Fichiers attachés Fichiers attachés
    • Type de fichier : xls DBG.xls (115,0 Ko, 88 affichages)

  12. #12
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bien Mariefrance,
    je trouve déjà que ton fichier est bien parti, mais vu ta demande, je vais réorganiser en ne passant plus par un inputbox mais par un nouvel userform si tu es d'accord, qu'on pourra affiner en fonction de tes besoins
    j'attends ta réponse avant de m'y attaquer car, tu l'imagines, je fais aussi autre chose

    a +

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Je suis entièrement d'accord. C'est toi le chef lollll ;-)

    Pour moi du moment que ca fonctionne tout est bon... Si tu as d'autres suggestions ou trouve que certaines choses ne sont pas "user friendly"... j'accepterai tes remarques avec un grand plaisir. Ceux qui vont l'utiliser chez moi ne se priveront pas d'en m'en faire, mais celles-là ne seront cependant pas toujours constructives, vu que c'est une demande imposée par la direction...

    Merci à toi

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Tu n'as vraiment pas à t'excuser... C'est déjà super que tu prennes la peine de m'apporter plus qu'une aide et au combien précieuse.

    J'attendrai bien évidemment le temps qu'il faut.

    Bien à toi

    Bonne après-midi

  15. #15
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Mariefrance, le forum,

    Hier durdur (pot de depart salarié)
    mais ce matin, j'ai bossé un peu, veux-tu essayer ce fichier joint

    On devra encore l'améliorer (evenement click sur litbox, selection de la ligne à la fermeture de l'USF.....) plus toutes tes idées

    Bonne journée

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    Un tout grand merci pour ton travail. C'est génial !

    Le fait qu'il sélectionne toutes les occurrences dans la boîte de dialogue, je trouve cela excellent.

    Cela demanderait beaucoup de changements si l'on peut ajouter le colonne commune dans la recherche ? Je n'y ai malheureusement pas pensé au départ.

    C'est tout ce que trouve "à dire" pour l'instant... je l'analyserai plus en début de semaine, avec plus de données.

    Encore mille fois merci.

    Marie-France

  17. #17
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Mariefrance, le forum,

    Il n'y a pas de problèm e pour ajouter une listbox commune sur le meme principe.

    - Fait attention si tu recopies le code et l'USF sur un autre fichier, il y a des variables déclarées "Public" en tete de module2

    - Pour que mon code soit efficace sur toutes tes feuilles de recherche, il faut que la feuille concernée soit active, c'est pour ça que je me suis contenté de commencer mes codes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a3:m" & Range("m"....
    plutot que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("aeroport").Range("a3:m" & sheets("aeroport").Range("m"...
    - il faut aussi que toutes les feuilles aient la meme structure

    Enfin, il restera à prévoir, quand les listbox se rempliront, qu'avec un click sur la ligne choisie, les autres lisbox se mettrons à jour en fonction et au moment de la fermeture de l'USF, la ligne sélectionnée sera atteinte

    Bonne journée

  18. #18
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je viens de retravailler dessus en ajoutant une listbox pour la commune et un code pour l'évenement click des listbox, voir fichier joint

    bon weed-end

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je viens d'essayer la nouvelle version. L'ajout de la commune impeccable ;-)

    Lorsque l'on tape un mot clé et que l'on sélectionne la mauvaise colonne (ex : je cherche le mot "essai" et je fais la recherche sur la colonne "prénom", la macro donne un message d'erreur et renvoie vers la programmation puisque le mot "essai" est dans la colonne "nom".
    Dans ce cas n'y aurait-il pas moyen que si le mot ne se trouve pas dans la colonne sélectionnée (soit par erreur, soit parce que l'on ne sait pas si le mot se trouve dans nom prénom ou info), l'on puisse directement faire une recherche dans une autre colonne ?

    Très bonne journée et encore mercciiiiiiiiiiiiiiiiiiiiiiiiiiiiii

    Marie-France

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Toutes les sheets auront la même structure. Pour une recherche plus rapide, je voudrais recopier le bouton Search sur chaque d'elle (recherche limitée à la page courante et non au fichier entier).
    Lorsque je fais une copie simple du bouton, la boîte de dialogue s'ouvre bien, mais quand je lance la recherche je reçois un message d'erreur.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Faire une recherche sur une page web d'élément texte sans passer par le code source
    Par Phifou dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/09/2014, 11h19
  2. [CKEditor] ck Finder rajouter un bouton renvoyant sur une page
    Par pmoury06 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 03/10/2010, 21h16
  3. [PHP 5.0] Barre de recherche sur une page html
    Par johnson95 dans le forum Langage
    Réponses: 3
    Dernier message: 19/03/2009, 00h43
  4. Recherche sur une page web
    Par sebbb59 dans le forum Web
    Réponses: 7
    Dernier message: 30/09/2008, 20h20
  5. Recherche sur une page web
    Par Itori dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 13h32

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