En VBA - recherche un mot et remplace si present

bonjour

dans un dossier excel ( qui contient plusieur page )

je cherche a trouver un mot dans l'exemple ' pierre' et le remplacer par Paul

ca parait assez simple ... mais vba et moi

1 ) il faut etre sur la bonne feuille excel

Sheets("Feuil1").Select

2 ) je recherche le mot en question 'pierre ' et le remplace par le contenu de "a4"

Replace What:="pierre", Replacement:="a4"

28pierre-paul.xlsx (8.58 Ko)

bonsoir,

une proposition, pour remplacer pierre par le contenu de A4 de la feuille active dans toutes les feuilles du classeur.

Sub pierrepaul()
    tor = Range("A4")
    For Each ws In Worksheets
        ws.Cells.Replace what:="pierre", replacement:=tor
    Next
End Sub

parfait merci


ah oui mais non lol

j'ai parler trop vite

je souhaiterai egalement garder le format et le lien de la cellule a4

bonsoir,

tu veux changer pierre en paul dans le lien aussi ?

de quel format parles-tu ?

bonjour

mieux que des mots , j'ai modifier mon fichier excel exemple

par format ( je pense a la couleur du texte , couleur de remplissage , ect .... )

mais surtout je dois conserver le lien hypertexte associer a la case A4 " paul "

en gros si pierre est la , il doit être complètement remplacer par paul (lien hypertexte aussi )

il ne doit rien rester de pierre

pour info >

pierre n'as pas de lien hypertexte

22pierre-paul.xlsm (17.43 Ko)

bonjour,

adaptation de la proposition à la précision de ta demande

Sub pierrepaul()
    Set tor = Range("A4")
    For Each ws In Worksheets
        Set re = ws.Cells.Find(what:="pierre", lookat:=xlWhole)
        If Not re Is Nothing Then
            fa = re.Address
            Do
                tor.Copy re
                Set re = ws.Cells.FindNext(re)
            Loop While fa <> re.Address
        End If
    Next
End Sub

bonsoir

j'ai tester le code

et j'ai le droit a une erreur

erreur d'execution 91

varaible objet ou varaible de bloc with non defini

la ligne la est surligner

Loop While fa <> re.Address

sinon oui ca l'air de focntionnee

Bonsoir,

il me semblait pourtant avoir testé ....

voici une nouvelle version

Sub pierrepaul()
    Set tor = Range("A4")
    For Each ws In Worksheets
        Set re = ws.Cells.Find(what:="pierre", lookat:=xlWhole)
        If Not re Is Nothing Then
            fa = re.Address
            Do
                tor.Copy re
                Set re = ws.Cells.FindNext(re)
                If re Is Nothing Then Exit Do
              Loop Until fa = re.Address
        End If
    Next
End Sub

ca fontionne nickel merci

bonjour a tous

je reviens sur ce sujet ( le code est très bien et il fonctionne ) mais je me pose une question

je souhaite tjs remplacer pierre par paul mais j'aimerai aussi que jerome si il est pressent soit remplace par paul également

une utilisation de Or & AND n'es pas possible ?

J'ai bien la solution de faire copier le code et de remplacer les éléments a changer par le second prénom

mais ca me parait un peu lourd a digérer non ?

Sub pierrepauljerome()
    Set tor = Range("A4")
    For Each ws In Worksheets
        Set re = ws.Cells.Find(what:="pierre", lookat:=xlWhole)
        If Not re Is Nothing Then
            fa = re.Address
            Do
                tor.Copy re
                Set re = ws.Cells.FindNext(re)
            Loop While fa <> re.Address
        End If
    Next

   Set tor2 = Range("A4")
    For Each ws In Worksheets
        Set re = ws.Cells.Find(what:="jerome", lookat:=xlWhole)
        If Not re Is Nothing Then
            fa = re.Address
            Do
                tor2.Copy re
                Set re = ws.Cells.FindNext(re)
            Loop While fa <> re.Address
        End If
    Next
End Sub

Bonjour,

une manière de simplifier le code

Sub pierrepauljerome()
    Set tor = Range("A4")
    For Each nom In Array("pierre", "jerome")
        For Each ws In Worksheets
            Set re = ws.Cells.Find(what:="pierre", lookat:=xlWhole)
            If Not re Is Nothing Then
                fa = re.Address
                Do
                    tor.Copy re
                    Set re = ws.Cells.FindNext(re)
                    If re Is Nothing Then Exit Do
                Loop While fa <> re.Address
            End If
        Next
    Next
End Sub

merci pour ta reponse

ta pas encore vérifier ton code mais merci pour le array

Set re = ws.Cells.Find(what:="pierre", lookat:=xlWhole)

il faut bien entendu remplacer " pierre " par nom

bonjour,

bien entendu...

Rechercher des sujets similaires à "vba recherche mot remplace present"