Modifier une "Macro Excel VBA"

Bonjour,

J'ai sous Excel 2000, un petit fichier, avec une Feuille renommée "Accueil", une "Base" (mon tableau avec Nom, Prénoms, adresses, etc,)
Dans la feuille "Accueil" il y a deux boutons, un pour enregistrer de nouveaux contacts et le deuxième pour faire une recherche. J'ai trouvé une "macro" sur ce forum que j'ai modifiée, mais je n'arrive pas à faire ce que je veux.

Je voudrais qu'il n'y ait qu'une seule fenêtre qui s''ouvre c'est à dire celle pour me demander "le mot à rechercher". Et que cette recherche soit faite de la colonne "A à N"

De plus quand je frappe le mot que je veux rechercher, je voudrais que l'exécution soit faite même si le mot n'est pas écrit de la même façon que dans la cellule. C'est à dire pour le prénom "Louis" soit louis ou LOUIS.

Merci de votre aide, voici le code :

Sub cmb_recherche()
Dim Plage As Range
Set Plage = Application.InputBox("Sélectionnez une colonne !", "Us se débrouille pour vous...", Type:=8)
Dim MotRechercher As String
MotRechercher = InputBox("Entrer le mot à rechercher", "Us")
If MotRechercher = vbNullString Then Exit Sub
Dim Cellule As Range
For Each Cellule In Plage
If InStr(1, Cellule.Value, MotRechercher) > 0 Then
Range(Cellule.Address).Select
End If
Next Cellule

End Sub

4 réponses

  1. Bonsoir,

    Il faut que nommes correctement les TextBox du formulaire.

    Actuellement, l(es) erreur(s) provien(nen)t des noms :

    Txt_poids	n'existe pas
    Txt_taille	n'existe pas
    Txt_posteoccupe	n'existe pas
    Txt_abonn	n'existe pas
    Txt_situafamil	n'existe pas


    D'autre part :

    Txt_fax		correspond à Poids
    Txt_email	correspond à Taille
    Txt_prof	correspond à Poste occupé
    TxtBox1		Correspond à Abonné
    TxtBox2		Correspond à Email
    TxtBox3		Correspond à Prof
    TxtBox4		Correspond à Situation 
    1. Bonjour,

      Remplaces :
      If InStr(1, Cellule.Value, MotRechercher) > 0 Then 
      Par:
      If InStr(1, UCase(Cellule.Value), UCase(MotRechercher)) > 0 Then
      1. Bonjour et merci de ta réponse, mais pour moi il n'y a rien de changé en modifiant cette ligne, j'ai toujours la fenêtre "Sélectionnez une colonne qui s'ouvre" et quand je frappe le mot que je recherche dans cette colonne (alors que je veux faire cette recherche depuis la colonne A à la N) celui-ci n'est pas encadré comme avec ligne de commande

        Si tu as une autre idée
      2. Re,

        C'est pas très limpide tout ça :
        « et quand je frappe le mot que je recherche dans cette colonne (alors que je veux faire cette recherche depuis la colonne A à la N) celui-ci n'est pas encadré comme avec ligne de commande »

        C'est normal, la recherche s'effectue uniquement dans la plage sélectionnée !

        Si tu veux rechercher dans les colonnes A à N, il faut sélectionner les colonnes A à N

        Qu'entends-tu par « comme avec ligne de commande »

        Patrice
    2. Re,

      Désolé, cela fonctionne très bien, mais comme d'habitude quand il y a un "petit défaut" c'est celui-là que nous choisissons. Je m'explique je n'avais sélectionné qu'une colonne (pour tester) et j'ai chois un prénoms, manque de chance "le seul" qui avait un "accent" celui de "René", c'est peut-être un paramètre qu'il faudrait incorporer ? dans le cas ou l'utilisateur mettra des accents et que celui qui aura rempli les cellules ne les mettent pas.

      Sinon comme tu le conseils, en sélectionnant toutes les colonnes, "tout fonctionne" très bien. Si tu as une modification à apporter pour les lettres accentuées ou non soient prisent en compte je suis preneur, merci d'avance

      Pour ta question :
      Qu'entends-tu par « comme avec ligne de commande »
      je voulais dire par l'ancien code (pour ma petite tête c'est une commande) que tu m'as fait changé à juste titre

      Bonne journée Patrice33740
      1. Bonsoir,
        Je viens de recevoir dans ma boite une réponse de "michel_m", mais je ne retrouve pas cette réponse à la suite des vôtres ou des miennes, pourquoi ?

        Il me propose ces codes ci-dessous, mais je rencontre 2 problèmes, si je sélectionne de la colonne A:N, et que je frappe un prénom qui est dans le tableau, j'ai le message "inconnu". Si j'écris "René" sans accent il ne trouve pas nom plus.

        De plus j'ai fait un petit changement, j'ai mis le bouton "Recherche" sur la feuille "Accueil", mais mon tableau est sur la feuille "Base", donc je ne peux pas sélectionner les colonnes, il faudrait qu'après avoir appuyé sur le bouton recherche la feuille "Base" s'ouvre.

        Sub cmb_recherche()
        Dim Plage As Range
        Dim MotRechercher As String
        Dim col As Byte, ligne As Long

        Set Plage = Application.InputBox("Sélectionnez une colonne !", "Us se débrouille pour vous...", Type:=8)
        col = Plage.Column
        MotRechercher = InputBox("Entrer le mot à rechercher", "Us")
        If MotRechercher = vbNullString Then Exit Sub

        On Error GoTo inconnu
        ligne = Columns(col).Find(MotRechercher, Cells(1, col), xlValues, xlWhole).Row
        Cells(ligne, col).Select
        Exit Sub

        inconnu:
        MsgBox MotRechercher & " inconnu ", vbCritical
        End Sub
      2. Contributeur
        Bonjour,

        J'ai supprimé mon message car il se basait sur 1 seule colonne et tu as changé ta demande avec plusieurs colonnes:
        j'ai donc perdu mon temps à essayer de t'aider
        d'autant plus que dans ce dernier message , il y a ENCORE des changements....
        donc....
      3. Bonjour michel_m

        Tu n'as pas perdu ton temps, je suis désolé si tu le penses ainsi.
        Mais si tu relis mon message du début depuis la sixième et septième ligne je dis :
        Je voudrais qu'il n'y ait qu'une seule fenêtre qui s''ouvre c'est à dire celle pour me demander "le mot à rechercher". Et que cette recherche soit faite de la colonne "A à N"

        En effet j'ai apporté un petit changement, (si celui-ci est possible) car en attendant des réponses je fais d'autres essais pour améliorer la présentation. Si les codes sur lesquels tu as travaillé fonctionnent comme je le voudrais, je souhaite faire une amélioration comme dit dans mon message plus haut

        J'ai 72 ans je début dans ces codes que je ne connais "absolument pas" et j'ai besoin de beaucoup d'aide pour rendre service à un jeune de 30 ans qui pourrait utiliser ce fichier "bénévolement" dans un club local de remise en forme. Alors j'ai encore "beaucoup de choses à ajouter qui me viennent au coup par coup.

        Merci de ta participation, je te souhaite une très bonne journée
    3. Bonjour,

      En lisant ton dernier message, je m'aperçoit que la réponse que je t'ai donné ne donne pas entière satisfaction : « Je voudrais qu'il n'y ait qu'une seule fenêtre qui s''ouvre c'est à dire celle pour me demander "le mot à rechercher" »

      Je pensais que, puisque tu l'avait écrite, la demande de choix de la colonne avait une certaine importance.

      Pour supprimer ce choix, tu peux remplacer ligne :
      Set Plage = Application.InputBox("Sélectionnez une colonne !", "Us se débrouille pour vous...", Type:=8)
      par :
      Set Plage = ActiveSheet.UsedRange
      1. Bonsoir Patrice,

        Désolé pour ce retard à te répondre, mais je suis plongé dans mes recherches pour mieux comprendre les "macros", et pendant cette période je n'ouvre pas souvent ma boite.

        Ta modification est super, je n'ai plus qu'une fenêtre qui s'ouvre.

        Maintenant il ne me reste plus qu'à trouver un code pour que les textes "accentués" ou non soient reconnus, si tu sais faire je suis preneur. J'ai également recherché toute l'après midi des codes pour "sauter" à la ligne suivante. Par exemple je me trouve sur la ligne 3 comment écrire les codes pour aller à la suivant ou à la précédente.

        Merci encore de ta participation
      2. Pour les textes accentués, tu peux trouver des fonctionsmais le temps d'exécution de la macro risque de devenir prohibitif !

        pour passer la sélection à la ligne suivante :
        Selection.Offset(1).Select

        à la précédente :
        Selection.Offset(-1).Select

        Mais en VBA il est rarement nécessaire de sélectionner une plage,
        Autrement dit : le ".Select" est à éviter.

        Patrice
      3. Merci Patrice,
        Tout fonctionne très bien, super, avec des codes simples. J'aurais un autre besoin qui me ferais un grand plaisir, mais je ne sais pas comment le régler. Je vais essayer de m'expliquer dans un prochain message, car je n'ai tout fini. Est-ce qu'il y a possibilité de joindre mon fichier de joindre une capture d'image de ce que je voudrais de ma demande ci-dessous ?

        J'aimerais que ce masque (qui serait le fichier adhérents, fiche par fiche) soit constamment visible avec dans chaque « zone d'édition » les informations de chaque adhérent, avec « deux boutons » en plus pour visualiser la fiche « Suivante » ou la fiche « Précédente » sans que j'ai en permanence le tableau Excel sous les yeux.

        Je ne sais si je suis clair, en attendant "bonne journée à toi"
        .
      4. Tu peux déposer le(s) fichier(s) non confidentiel(s) sur https://www.cjoint.com/ et mettre le(s) lien(s) dans ton prochaine message
      5. Merci de ta proposition, je suis en train de modifier et d'ajouter quelques cases et bouton, car il me manque encore des précisions de la part du futur "utilisateur" qui me trouve toujours des choses à ajouter.

        Dés que je suis près je te transmets ce fichier

        Bonne soirée