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 SubBonjour,
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 Subou 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 SubBonjour, 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.
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 SubCordialement.
Bonjour AntoineDL,
Je vous remercie pour votre réponse,
J'ai essayé avec votre code détaillé et ça marche
Cordialement.