Modifier des valeurs das le classeur (REMPLACER)

Bonjour,

Une nouvelle fois, je me tourne vers vous pour une macro qui ne fonctionne pas.

je cherche à créer une macro qui va venir modifier une valeur dans tous le classeur (idéal de la feuille 1 à 7, pour le moment je n'ai pas paramétrer cette ligne)

pour cela je veux sélectionner l'ancienne valeur et saisir la nouvelle. ça, pas de souci, l'opération fonctionne. le code est 2112

mais après la modification ne se fait pas.

quelqu'un peut-il m'aider ?

je vous joins mon fichier et voici le code

Sub Modifier_salarié()

Call ProtVBA

Dim select_init As Range, salarié As Range
Dim i As Integer
Dim id_salarié As Variant
Dim NvoTxt As String, AncTxt As String
Dim Fe As Worksheet

    If MsgBox("Sélectionner le salarié à modifier", vbOkNo) = vbNo Then Exit Sub

    With Range("Suivi_Dossiers").ListObject
        ActiveSheet.Range("A1").Select: Set select_init = Selection
        While Selection = select_init And ActiveSheet.Name = .Range.Worksheet.Name
            DoEvents
        Wend

        Set salarié = Intersect(Selection, .ListColumns(1).DataBodyRange)
        If salarié Is Nothing Then MsgBox "Aucun salarié sélectionné": Exit Sub

AncTxt = id_salarié
NvoTxt = InputBox("saisir le  nouveau nom du salarié")
    If MsgBox("Confirmez-vous la modification de ce salarié ?", vbYesNo) = vbNo Then Exit Sub

        id_salarié = salarié.Value
        i = salarié.Row - .HeaderRowRange.Row

For Each Fe In Sheets
    Fe.Cells.Replace What:=AncTxt, Replacement:=NvoTxt, LookAt:=xlWhole
Next Fe

      End With

MsgBox "Salarié modifié"

End Sub

Merci par avance.

Bonjour Mayolis,

Voici un essai:

Sub Modifier_salarié()

    Dim salarie$, NvoTxt$
    Dim i&, Plg As Range, Ws As Worksheet
    Dim c As Range, firstAddress As String
    Dim Salarie_range As Range, trv As Boolean

    Set Ws = ActiveSheet
    Set Plg = Ws.Range("A2:A" & Ws.Cells(Rows.Count, 1).End(xlUp).Row)
    Set Salarie_range = ActiveCell

    If Not Application.Intersect(Salarie_range, Plg) Is Nothing Then
        salarie = ActiveCell.Value
        NvoTxt = InputBox("saisir le nouveau nom du salarié: " & Application.Proper(salarie))
        If MsgBox("Confirmez-vous la modification de ce salarié ?", vbYesNo) = vbNo Then Exit Sub

        Application.ScreenUpdating = False

        For i = 1 To Worksheets.Count
            Set Ws = Sheets(i)
            Set Plg = Ws.Cells
            Ws.Unprotect Password:="2112"

            With Plg
                Set c = .Find(salarie, LookIn:=xlValues)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        c.Value = Replace(c.Value, salarie, NvoTxt)
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing
                    trv = True
                End If
            End With
            Call ProtVBA
        Next i
    End If

    Application.ScreenUpdating = True
    Sheets("Suivi Dossiers").Select

    If trv = True Then MsgBox "Salarié: " & salarie & " modifié par: " & NvoTxt

    Set Ws = Nothing: Set Plg = Nothing

End Sub

Bonjour,

Merci Florian pour ton code. il fonctionne hormis cett ligne de code qui me met en débogage. En revanche peux-tu me donner le détail parce que je n'arrive pas à traduire les étapes de la procédure et j'aimerais au besoin l'adapter à d'autre fichier.

c.Value = Replace(c.Value, salarie, NvoTxt)
Rechercher des sujets similaires à "modifier valeurs das classeur remplacer"