La fonction recherche fonction correctement
Par contre la fonction rechercher remplace tous les caracteres de la feuille ; comment lui dire qu'il lui faut une valeur comme 362541-001 avec un message box a la place de 3 par exememple
En plus lorsque je suis sur la fenetre remplace , et que je selectionne annuler ceci me supprime la valeur de la cellule.
Merci de votre retour
Code utilise ci-dessous
Sub Remplace()
'rechercher un mot dans toutes les feuilles du classeur et le remplacer par un autre
Dim feuil As Worksheet
Dim Mot As Variant
Dim Replace As Variant
Mot = InputBox("Quel mot recherchez-vous ?", Title:="Recherche un mot")
Replace = InputBox("Par quel mot voulez vous remplacer ?", Title:="Remplacer le mot trouver")
If Mot = "" Then Exit Sub
For Each feuil In ThisWorkbook.Worksheets
feuil.Cells.Replace What:=Mot, Replacement:=Replace
Next
Double clique en Feuil1 pour afficher le formulaire. Une fois écrit le mot dans la 1ère textbox, tappe sur Enter (mais pas trop fort! ), écrit le mot, clique sur ok. Si erreur de frappe ou mot inexistant, un message s'affichera.
Sub Macro1()
Dim vMot, vReplace
vMot = InputBox("Quel mot recherchez-vous ?", Title:="Recherche un mot")
vReplace = InputBox("Par quel mot voulez vous remplacer ?", Title:="Remplacer le mot trouver")
Cells.Replace What:=CStr(vMot), Replacement:=CStr(vReplace), LookAt:=xlPart, SearchOrder:=xlByRows
End Sub
La même mais avec édulcorant
VB:
Sub Macro_version_Light()
Dim vMot, vReplace
vMot = InputBox("Quel mot recherchez-vous ?", "Recherche un mot")
vReplace = InputBox("Par quel mot voulez vous remplacer ?", "Remplacer le mot trouver")
Cells.Replace CStr(vMot), CStr(vReplace), 2, 1
End Sub
@Lone-wolf
Je ne sais pas
J'ai pas pris le temps de télécharger ta PJ, tout absorbé que je suis par Terminator Genysys
(Y'aurait t-y pas une tite boucle dans ta Pj ?)
Sub Macro_version_Light()
Dim Sh As Worksheet, vMot, vReplace
vMot = InputBox("Quel mot recherchez-vous ?", "Recherche un mot")
vReplace = InputBox("Par quel mot voulez vous remplacer ?", "Remplacer le mot trouvé")
For Each Sh In ThisWorkbook.Worksheets
Sh.Cells.Replace CStr(vMot), CStr(vReplace), 2, 1
Next Sh
End Sub
Il y a un pré-requis pour expliquer pourquoi elle fonctionne chez moi.
Pour avoir le code rapidement au départ, j'ai fait CTRL+H et j'ai choisi Dans:Classeur.
(et j'ai laissé tourner l'enregistreur de macros)
Ensuite j'ai modifié le code VBA obtenu puis j'ai testé.
Et le changement se faisait bien sur toutes les feuilles.
Donc j'en ai déduis que cela fonctionne bien.
Or je cherche Excel, et je teste ma macro (sans faire un CTRL+H manuel au préalable) effectivement la macro ne fonctionne que sur la feuille active.
Subséquement, je propose à la place cette option
VB:
Sub Lycoos_Tribute()
Application.CommandBars.FindControl(ID:=1849).Execute
End Sub
Par contre, j'ai chez moi un petit bug avec celle-ci (et vous ?)
VB:
Sub Bug()
Application.Dialogs(xlDialogFormulaReplace).Show
End Sub
EDITION: J'ai bien vu ton EDIT de 23h23
Mais justement, je voulais éviter la boucle.
NB:Personnellement dans un cas similaire (remplacer une valeur dans un classeur), je préfère passer par un CTRL+H manuel qui affiche la boite de dialogue Remplacer
(et qui donc permets d'avoir facilement accès aux différents paramètres de Recherche)
avec l'option:
Dans:Classeur (pas de boucle)
(quand on fait le remplacement manuellement
Étrangement cela ne fonctionne pas en VBA sans faire de boucle ???)
OK. Mais dans ce cas, imputbox et mon formulaire sont inutiles (c'est ta pensée). Tout comme envoyer un mail avec Outlook par exemple. Staple dit: tu ouvre Outlook et tu envois l'email.
@Lone-wolf
Je dis simplement que la boite de dialogue Remplacer offre nativement plus de fonctionnalités pour faire une recherche
(et ne nécessite pas d'avoir recours à VBA ou de créér un userform)
Et je ne fais par là que confirmer ce que disait le demadeur en début de post
[aparté]
Plus le temps passe plus, je suis d'accord avec ces régles
9. Don't Assume Code is Needed. Often a Worksheet Function is FAR better and More Efficient.
10. Avoid Using Custom Functions When a Built-in Worksheet Function can be Used.
Even Deeply Nested Worksheet Function are Often a Lot More Effiecient Than Custom Function Written in VBA.
Pour ce qui est des boucles, voici l'explication
7. Avoid Loops. Make Good use of Much Faster Alternatives Like Find (Find Method), AutoFilter, AdvancedFilter, SpecialCells etc.
Si cela t'intéresse, faire une recherche sur le web : VBA GOLDEN RULES pour découvrir les 21 règles.
[/aparté]
[avis personnel]
Maintenant pourquoi faisons-nous du VBA?
Parce que peut-être cela nous permets de nous penser programmeurs...
(à peu de frais puisque VBA est fourni avec Excel)
Mais les logiciels ou applis les plus célèbres ne sont pas développés sous Excel.
(heureusement )
[/avis personnel]