Remplacer une phrase par une autre avec une macro ???

cephalotus

XLDnaute Occasionnel
Bonjour le forum,

J'ai tenté de remplacer une "petite" phrase dans la colonne "W" de mon fichier à l'aide de l'outil rechercher/remplacer, mais Excel m'indique que cela n'est pas possible...

J'ai trouvé sur le forum la macro suivante, mais je pense qu'il y a des actions en trop, et que le traitement se fait sur l'ensemble du fichier, alors que j'ai besoin d'effectuer le remplacement seulement sur la colonne "W".

Pourriez-vous m'indiquer si cette macro va fonction et ce qu'il faut éventuellement ajouter et supprimer.

-----------------------------------
Macro trouvée:
----------------------------------->
Sub test()
Dim tableauClasseurs, texteCherche As String, texteRemplace As String, i As Integer, curSheet As Worksheet, tmpWbk As Workbook

' récupérer les classeurs concernés
tableauClasseurs = Application.GetOpenFilename(filefilter:="Fichiers Excel, *.xls; *.xlsx", MultiSelect:=True)
' récupérer le texte à remplacer
texteCherche = CStr(Application.InputBox("texte cherché"))
' récupérer le nouveau texte
texteRemplace = CStr(Application.InputBox("nouveau texte"))

' boucler sur chaque classeur
For i = LBound(tableauClasseurs) To UBound(tableauClasseurs)
' ouvrir le classeur
Set tmpWbk = Application.Workbooks.Open(tableauClasseurs(i))
' boucler sur chaque feuille du classeur
For Each curSheet In tmpWbk.Worksheets
' remplacer les deux textes
curSheet.Cells.Replace what:=texteCherche, replacement:=texteRemplace, lookat:=xlPart
Next curSheet
' sauver et fermer le classeur
tmpWbk.Close True
Next i
End Sub
<-----------------------------------

Je vous remercie par avance pour votre aide, pour vos réponses.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour Cephalotus, bonjour le forum,

Pas assez clair tes explications...
La macro que tu as récupérée commence par te demander d'ouvrir le ou les classeurs qui vont subir le changement.
• As-tu vraiment besoin d'ouvrir plusieurs classseur ?
ensuite elle parcourt tous les onglets de chaque classeur.
• As-tu besoin de parcourir tous les onglets ?
• Le texte à trouver/remplacer est-il toujours le même ?
Donne-nous ces indications et on te proposera une adaptation de la macro.
 

jp14

XLDnaute Barbatruc
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour
Salut Robert

Ci joint la macro modifié pour remplacer le texte dans la colonne W, uniquement dans le classeur ouvert. Si on désire tous les classeurs il faut rajouter une boucle.

Code:
Sub test()

Dim texteCherche As String, texteRemplace As String, i As Integer, curSheet As Worksheet
Dim plage As Range
Dim tmpWbk As Workbook
Dim tableauClasseurs As Variant
' récupérer le texte à remplacer
texteCherche = CStr(Application.InputBox("texte cherché")) 
ou texteCherche = "bla bla bla"
' récupérer le nouveau texte
texteRemplace = CStr(Application.InputBox("nouveau texte"))
ou texteRemplace = "je suis débutant, et j'apprends grâce à vous"


' boucler sur chaque feuille du classeur
For Each curSheet In Worksheets 
With curSheet ou With Sheets("Feuil1")
Set plage = .Range("w2:w" & .Range("w" & .Rows.Count).End(xlUp).Row)
plage.Cells.Replace what:=texteCherche, replacement:=texteRemplace, lookat:=xlPart

End With
Next curSheet
End Sub

Pour une feuille, il faut supprimer la boucle "For Each curSheet In Worksheets"," Next curSheet"
et modifier le code "With curSheet" par With Sheets("nom de la feuille")


JP
 
Dernière édition:

cephalotus

XLDnaute Occasionnel
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour Robert, le forum,

As-tu vraiment besoin d'ouvrir plusieurs classeurs ? = Non.
ensuite elle parcourt tous les onglets de chaque classeur. = Non.
As-tu besoin de parcourir tous les onglets ? = Non.

Le texte à trouver/remplacer est-il toujours le même ?

Le traitement doit être fait sur une feuille, soit la "feuil1", dans une colonne, la colonne "W". La macro doit rechercher une phrase "bla bla bla" et doit remplacer celle-ci par "je suis débutant, et j'apprends grâce à vous"

Je vous remercie par avance pour ta, vos réponses.
 

cephalotus

XLDnaute Occasionnel
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour JP14, le forum,

Je "pense avoir..." modifié la formule comme tu l'indiques pour supprimer la boucle et pour l'exécuter sur une feuille.
J'ai aussi modifié le texte recherché soit "bla bla bla" par "je suis débutant, et j'apprends grâce à vous", ce qui donne la macro suivante:

-----------------------------
Sub test()

Dim texteCherche As String, texteRemplace As String, i As Integer, curSheet As Worksheet
Dim plage As Range
Dim tmpWbk As Workbook
Dim tableauClasseurs As Variant
' récupérer le texte à remplacer
texteCherche = CStr(Application.InputBox("texte cherché"))
ou texteCherche = "bla bla bla"
' récupérer le nouveau texte
texteRemplace = CStr(Application.InputBox("nouveau texte"))
ou texteRemplace = "je suis débutant, et j'apprends grâce à vous"
With Sheets("Feuil1")
Set plage = .Range("w2:w" & .Range("w" & .Rows.Count).End(xlUp).Row)
plage.Cells.Replace what:=texteCherche, replacement:=texteRemplace, lookat:=xlPart

End With
End Sub
-----------------------------

Visiblement, ma modif ne fonctionne pas. J'ai le message "erreur de compilation: Sub ou Fonction non définie"
Quelle erreur ai-je faite ?

Merci pour ta, vos réponses.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour le fil, bonjour le forum,

Cette ligne devrait ête suffisante :
Code:
Sub test()
Sheets("Feuil1").Columns("W").Cells.Replace what:="bla bla bla", replacement:="je suis débutant, et j'apprends grâce à vous", lookat:=xlPart
End Sub
 

cephalotus

XLDnaute Occasionnel
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour Robert, le forum,

lors de l'exécution, VB m'indique "Erreur d'exécution '9': L'indice n'appartient pas à la sélection."

Comme je ne sais pas quelle erreur je fais, j'ai inclus dans la colonne "W" le texte "bla bla bla" pour voir si cela vient de moi ou de la macro.
Visiblement, la macro a une erreur, car j'ai le même message.

Merci par avance pour ta, vos réponses.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer une phrase par une autre avec une macro ???

Bonjour le fil, bonjour le forum,

Je pense que ça vient du fait que tu n'as pas d'onglet nommé Feuil1 dans le classeur. Prend l'habitude, quand tu signales une erreur, d'indiquer dans quelle ligne de code elle se produit (je pense à ton post plus haut car mon dernier code ne contient qu'une seule ligne)...
 

Discussions similaires