Problème lié au formatage de numéros de téléphone reçus en masse par BDD

Bonjour,

Je cherche à réaliser une formule permettant le formatage des numéros de téléphone reçus en n'omettant aucune alternative.

Le format est tel :

XXXXXXXXXX

La formule jusqu'ici permet de neutraliser les . , / ,"" . Il permet aussi de traiter les numéros sous format +33 ou +330.

=CONCATENER("0";SI(GAUCHE(A8;1)="0";SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(DROITE(A8;NBCAR(A8)-1);".";"");" ";"");"/";"");"-";"");SI(GAUCHE(A8;2)="33";(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(DROITE(A8;NBCAR(A8)-2);".";"");" ";"");"/";"");"-";""));(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A8;".";"");" ";"");"/";"");"-";"")))))

La question résiduelle est quid des lettres qui peuvent se retrouver dans le numéro ? Comment puis-je demander à Excel d'analyser si il y a une valeur textuelle lettre dans ma cellule afin qu'il la supprime. Je n'ai pas Kutools Excel.

Je souhaite donc maintenant intégrer une formule permettant d'afficher un message d'erreur après le numéro. A défaut de supprimer le texte, je pourrai voir où se situe les erreurs post-traitement.

=SIERREUR(CNUM(B1);CONCATENER(B1;"Erreur"))

Comment puis-je concilier les deux ?

Je vous remercie.

Bonjour,

je ne sais pas si cela correspond à votre besoin :

si je reformule votre souhait : La formule doit retourner "la formule actuelle" si le résultat est numérique sinon "la formule actuelle" suivi de "erreur"

Ce qui se traduirait en formule (je remplace ici votre grosse formule par <formule actuelle> pour plus de clarté) :

=SIERREUR(CNUM(<formule actuelle>);CONCATENER(<formule actuelle>;"Erreur");<formule actuelle>)

dans votre nouvelle formule remplacer <formule actuelle> par votre formule

Une suggestion, remplacer votre formule par du code vba en activant la macro sur l'événement worksheetchange.

Pour le remplacement des caractères autres que numériques par vide se code facilement en vba (boucle de lecture caractère par caractère de la variable téléphone en éliminant le caractère si son code ascii n'est pas compris entre celui de 0 à 9).

Voici le code VBA qui permet d'éliminer tout ce qui n'est pas numérique (fonction Que_Numerique) et une procédure pour différents tests (TestQue_Numerique).

et d'alerter si du code autre que numérique est présent.

Code à adapter selon le besoin.

Par exemple, si le n° est saisi en A1 et que vous souhaitez afficher le résultat épuré en B1, dans B1 écrire la formule

=Que_Numerique(A1)

si vous souhaitez indiquer une erreur, il faudra bricoler un peu le code comme dans TestQue_Numerique

Sub TestQue_Numerique()
Dim MonNuméro As String
Dim MonNuméroEpuré As String
Dim MonNuméroAlerte As String ' suffixé par Erreur !!! si présence de caractères non numériques
    MonNuméro = "(+33)06.10.15.48.95" 
    MonNuméro = "06*10*15*48*95"
    MonNuméroEpuré = Que_Numerique(MonNuméro)
    If MonNuméro = MonNuméroEpuré Then
        MonNuméroAlerte = MonNuméro
    Else
        MonNuméroAlerte = MonNuméro & " Erreur !!!"
    End If

End Sub
Public Function Que_Numerique(ByVal pChaine As String) As String
Dim i As Integer
Dim Chaine As String
' suppression des caractères autres que numériques (0,1,2,...9)
    Chaine = ""
    For i = 1 To Len(pChaine)
        Select Case True
        Case (Asc(Mid(pChaine, i, 1)) >= Asc("0")) And (Asc(Mid(pChaine, i, 1)) <= Asc("9"))
            Chaine = Chaine & Mid(pChaine, i, 1)
        End Select
    Next i
    Que_Numerique = Chaine
End Function
Rechercher des sujets similaires à "probleme lie formatage numeros telephone recus masse bdd"