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
 

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
 

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
 

Pièces jointes

  • Fichier_Exemple_Chiffres.xlsx
    22.3 KB · Affichages: 102
  • Fichier_Exemple_Chiffres.xlsx
    22.3 KB · Affichages: 160
  • Fichier_Exemple_Chiffres.xlsx
    22.3 KB · Affichages: 141
Dernière édition:

neal

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

Voilà le fichier exemple
 

Pièces jointes

  • Fichier_Exemple_Chiffres.xlsx
    15.1 KB · Affichages: 121
  • Fichier_Exemple_Chiffres.xlsx
    15.1 KB · Affichages: 117
  • Fichier_Exemple_Chiffres.xlsx
    15.1 KB · Affichages: 118

JHA

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

Re,

Cette formule done de meilleur résultat

Code:
=T(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;" ";"");".";"");"/";"");"-";"");"(";"");")";""))

JHA
 

Pièces jointes

  • Fichier_Exemple_Chiffres.xlsx
    26.2 KB · Affichages: 118
  • Fichier_Exemple_Chiffres.xlsx
    26.2 KB · Affichages: 179
  • Fichier_Exemple_Chiffres.xlsx
    26.2 KB · Affichages: 134

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 :)
 

Statistiques des forums

Discussions
314 626
Messages
2 111 299
Membres
111 094
dernier inscrit
MFrequence