Re,
Il serait plus simple pour toi de définir des zones nommées ou mieux des tableaux structurés, tu n'aurais pas besoin de te préoccuper de savoir où cela se trouve.
Sinon, le principe est partir de la fin du numéro de téléphone et de ne sélectionner que les chiffres. Au bout du dixième, tu regardes si c'est un 3, le cas échéant tu remplaces par 0.
Regarde l'exemple que j'ai modifié dans le fichier ci-joint :
Deux tableaux structurés nommés : TableAvant, TableApres. Dans ton événement, tu modifies ta ligne comme dans le code ci-dessous.
Private Sub CommandButton1_Click()
' RemplacerNumero Range("C2:C19"), Range("D2:D19")
RemplacerNumero Range("TableAvant[Avant macro]"), Range("TableApres[Après macro]")
End Sub
Au cas où tu ne souhaiterais pas t'encombrer d'une table provisoire :
Sub RemplacerNumeroV2(ByVal AireSource As Range)
Dim I As Integer, J As Integer
Dim Numero As String
For I = 1 To AireSource.Count
Numero = ""
For J = Len(AireSource(I)) To 1 Step -1
Select Case Mid(AireSource(I), J, 1)
Case 0 To 9
Numero = Mid(AireSource(I), J, 1) & Numero
End Select
If Len(Numero) = 10 Then
If Mid(Numero, 1, 1) = "3" Then Numero = "0" & Mid(Numero, 2)
Exit For
End If
Next J
AireSource(I) = Format(Numero, "00 00 00 00 00")
Next I
End Sub
Dans ce cas, tu modifies ton événement :
Private Sub CommandButton1_Click()
' RemplacerNumero Range("C2:C19"), Range("D2:D19")
' RemplacerNumero Range("TableAvant[Avant macro]"), Range("TableApres[Après macro]")
RemplacerNumeroV2 Range("TableAvant[Avant macro]")
End Sub