Modifier une "Macro Excel VBA"

Fermé
Rolandin - 21 mai 2013 à 18:58
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 24 mai 2013 à 23:26
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


A voir également:

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
24 mai 2013 à 23:26
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 
2
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
22 mai 2013 à 00:27
Bonjour,

Remplaces :
If InStr(1, Cellule.Value, MotRechercher) > 0 Then 
Par:
If InStr(1, UCase(Cellule.Value), UCase(MotRechercher)) > 0 Then
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
22 mai 2013 à 10:29
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
22 mai 2013 à 10:44
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
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
22 mai 2013 à 11:21
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
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
22 mai 2013 à 17:19
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 23/05/2013 à 08:34
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....
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
23 mai 2013 à 09:08
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 mai 2013 à 14:36
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
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
23 mai 2013 à 18:42
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 mai 2013 à 23:08
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
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
24 mai 2013 à 11:31
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"
.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
24 mai 2013 à 17:06
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
0
rolandin Messages postés 201 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 18 février 2014
24 mai 2013 à 18:58
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
0