Garder uniquement les chiffres d'une cellule excel

neal

XLDnaute Junior
Bonjour,
dans un fichier de plus de 10000 lignes, j'ai une colonne avec des numéros de téléphone, français et internationaux. Ils ont tous des formats différents. Exemples :

0123456789
01 23 45 67 89
01/23/45/67/89
01.23.45.67.89
0123456789
(01234)567899
0123/456/789
Etc.

Existe-t'il un moyen pour supprimer tous les caractères SAUF les chiffres afin obtenir des numéros dont la construction suit la même logique (soit 0123456789)?

Merci d'avance
 

dionys0s

XLDnaute Impliqué
Re : Garder uniquement les chiffres d'une cellule excel

Bonjour Clement, bonjour le forum

C'est possible avec un petit code dans ce style

VB:
Sub Garder_les_chiffres()

    Dim Caractere As Integer, i As Integer, Cara As String, Chaine As String

    For i = 1 To 10000
        Chaine = ""
        For Caractere = 1 To Len(Cells(i, 1))
            If IsNumeric(Mid(Cells(i, 1), Caractere, 1)) Then Chaine = Chaine & Mid(Cells(i, 1), Caractere, 1)
        Next Caractere
        Cells(i, 2) = Chaine
    Next i

End Sub
A+
 

JHA

XLDnaute Barbatruc
Re : Garder uniquement les chiffres d'une cellule excel

Bonjour à tous,

Par formule, avec les données en colonne "A"

Code:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;" ";"");".";"");"/";"");"-";"");"(";"");")";"")
copier vers le bas

JHA
 

neal

XLDnaute Junior
Re : Garder uniquement les chiffres d'une cellule excel

Merci beaucoup pour vos réponses, j'ai ainsi les 2 solutions qui marchent parfaitement.
 

Jack2

XLDnaute Occasionnel
Re : Garder uniquement les chiffres d'une cellule excel

Bonjour,

Un bout de code à essayer
Code:
Sub Reste_Chiffres()
Dim St As String
Dim i As Integer

'on considère que la colonne de chifre commence en A1 de la fuille n°1
'A adapter
St = Sheets("Feuil1").Range("A1").Value
j = 1
While St <> ""
For i = 1 To Len(St)
    Tmp = Mid(St, i, 1)
    If Not IsNumeric(Tmp) Then
        St = Replace(St, Tmp, "")
    End If
    Sheets("Feuil1").Range("A" & j).Value = St
Next
j = j + 1
St = Sheets("Feuil1").Range("A" & j).Value
Wend
End Sub
A+


(J'arrive un peu tard pour voir qu'il vaut mieux tester ce qui est numérique que le contraire. Je continu d'apprendre).
 
Dernière édition:

neal

XLDnaute Junior
Re : Garder uniquement les chiffres d'une cellule excel

Petite précision pour Dionys0s:
Ta macro supprime les 0 en début de numéro de téléphone parce que mes nombres sont stockés sous forme de texte.
Exemple:
Pour 01.234-56/7(89)
j'obtiens 123456789
 

dionys0s

XLDnaute Impliqué
Re : Garder uniquement les chiffres d'une cellule excel

C'est normal, puisque le 0 affiché n'est pas présent dans le texte de la cellule, mais n'est là qu'à l'affichage puisqu'il dépend du formatage de la cellule.
 

neal

XLDnaute Junior
Re : Garder uniquement les chiffres d'une cellule excel

Dans ce cas comment conserver ce 0 quand il est "affiché" ?
 

dionys0s

XLDnaute Impliqué
Re : Garder uniquement les chiffres d'une cellule excel

En fait il faudrait que tu postes un fichier exemple.
 

JHA

XLDnaute Barbatruc
Re : Garder uniquement les chiffres d'une cellule excel

Re,

en formule pour afficher les 10 caractères

Code:
=TEXTE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;" ";"");".";"");"/";"");"-";"");"(";"");")";"");"0000000000")
JHA
 

Fichiers joints

Dernière édition:

neal

XLDnaute Junior
Re : Garder uniquement les chiffres d'une cellule excel

Merci JHA, effectivement la formule fonctionne.
Je posais la question juste par curiosité, pour voir si la macro pourrait donner le même résultat (je m'autoforme en VBA).
 

dionys0s

XLDnaute Impliqué
Re : Garder uniquement les chiffres d'une cellule excel

Si tu veux récupérer tes nombre et les traiter comme tu texte, tu peux faire ça :

VB:
Sub Garder_les_chiffres()

    Dim Caractere As Integer, i As Integer, Chaine As String

    For i = 1 To 470
        Chaine = ""
        For Caractere = 1 To Len(Cells(i, 1))
            If IsNumeric(Mid(Cells(i, 1), Caractere, 1)) Then Chaine = Chaine & Mid(Cells(i, 1), Caractere, 1)
        Next Caractere
        Cells(i, 2).Formula = "'" & Chaine
    Next i

End Sub
Si ça ne te convient pas, dis-moi ce que tu dois faire avec ces numéros.
 

neal

XLDnaute Junior
Re : Garder uniquement les chiffres d'une cellule excel

Super merci beaucoup.
Je dois transférer les données d'une base à une autre base en modifiant leurs formats pour obtenir des formats standards partout.
Je vais pouvoir bidouiller la macro (et apprendre par la même occasion) pour qu'elle fonctionne sur d'autres types de données.
Merci beaucoup à tous les deux pour vos réponses très rapides, et pour la leçon VBA du jour :)
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas