Modifier une "Macro Excel VBA"
Rolandin
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Modifier une "Macro Excel VBA"
- Modifier liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Modifier dns - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
4 réponses
Bonsoir,
Il faut que nommes correctement les TextBox du formulaire.
Actuellement, l(es) erreur(s) provien(nen)t des noms :
D'autre part :
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
Bonjour,
Remplaces :
Remplaces :
If InStr(1, Cellule.Value, MotRechercher) > 0 ThenPar:
If InStr(1, UCase(Cellule.Value), UCase(MotRechercher)) > 0 Then
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
Si tu as une autre idée
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
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
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
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
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
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
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
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
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 :
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
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
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
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
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
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"
.
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"
.
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