VBA Remplacer des caractères à gauche d'une cellule

Bonjour,

Je veux remplacer au début des numéros de téléphone des caractères par vide, mais avec le code ci-dessous ça ne fonctionne pas comme je le souhaite, car parfois il me remplace tous les 357 même à droite de la cellule.

Aussi si possible de m'indiquer comment déclarer l'argument Length de Left en Optional

Private Sub Testtt()

LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

Sheets(1).Activate

    For l = 2 To LastRow

    For C = 5 To 6

    Cells(l, C).Select

        With ActiveCell

            If Left(Cells(l, C), 3) = "357" Then
            .Replace What:="357", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "+357" Then .Replace What:="+357", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "00357" Then .Replace What:="00357", Replacement:=""

                ElseIf Left(Cells(l, C), 4) = "0357" Then .Replace What:="0357", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "0+357" Then .Replace What:="0+357", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "+0357" Then .Replace What:="+0357", Replacement:=""

            End If

        End With

    Next

    Next

End Sub

Bonjour,

Le code pourrait être simplifié si entre le premier N° et le deuxième, il y a un espace, ou un point, ou un tiret, etc

mettez un exemple de N° qui simule les N° de la liste

Bonjour Dev007 et M12,

Une proposition en gardant l'esprit du code initial :

Sub Test2()
LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Activate
    For l = 2 To LastRow
    For c = 5 To 6
    Cells(l, c).Select
        If Left(Cells(l, c), 3) = "357" Then
            ActiveCell.Value = Replace(ActiveCell.Value, "357", "", 1, 1, 1)
        ElseIf Left(Cells(l, c), 5) = "+357" Then
            ActiveCell.Value = Replace(ActiveCell.Value, "+357", "", 1, 1, 1)
        ElseIf Left(Cells(l, c), 5) = "00357" Then
            ActiveCell.Value = Replace(ActiveCell.Value, "00357", "", 1, 1, 1)
        ElseIf Left(Cells(l, c), 4) = "0357" Then
            ActiveCell.Value = Replace(ActiveCell.Value, "0357", "", 1, 1, 1)
        ElseIf Left(Cells(l, c), 5) = "0+357" Then
            ActiveCell.Value = Replace(ActiveCell.Value, "0+357", "", 1, 1, 1)
        End If
    Next
    Next
End Sub

ou en plus court :

Sub Test3()
    LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
    Sheets(1).Activate
    For l = 2 To LastRow
        For c = 5 To 6
            Cells(l, c).Select
            Position357 = InStr(1, ActiveCell.Value, "357", vbTextCompare) 'Recherche la position de "357" dans la cellule active
            If Position357 >= 1 And Position357 <= 3 Then
                ActiveCell.Value = Replace(ActiveCell.Value, Left(ActiveCell, Position357 + 2), "", 1, 1, 1)
            End If
        Next
    Next
End Sub

Bonjour, avec un exemple de ce que l'on peut avoir comme données à "tronquer" ce serait plus simple.

Peut-être en concervant les 10 derniers chiffres au lieu des tester ce qu'il y a à retirer ?

Bonjour M12,

Je vous remercie pour votre réponse.

J'ai un peu modifié le code.

Ci-dessous le fichier Excel.

9test-vba-2021.zip (317.60 Ko)
Private Sub Testtt()

LastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

Sheets(1).Activate

    For l = 2 To LastRow ' Dernière ligne 757575

    For C = 3 To 4

    Cells(l, C).Select

        With ActiveCell

            If Left(Cells(l, C), 3) = "212" Then
            .Replace What:="212", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "+212" Then .Replace What:="+212", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "00212" Then .Replace What:="00212", Replacement:=""

                ElseIf Left(Cells(l, C), 4) = "0212" Then .Replace What:="0212", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "0+212" Then .Replace What:="0+212", Replacement:=""

                ElseIf Left(Cells(l, C), 5) = "+0212" Then .Replace What:="+0212", Replacement:=""

            End If

        End With

    Next

    Next

End Sub

Cordialement.

Bonjour AntoineDL,

Je vous remercie pour votre réponse,

J'ai essayé avec votre code détaillé et ça marche , pour le simple je n'ai pas encore essayé (un peu difficile à déchiffrer)

Cordialement.

Rechercher des sujets similaires à "vba remplacer caracteres gauche"