Formater des numéros de téléphone, Excel VBA

Formater des numéros de téléphone, Excel VBA

Voici une explication détaillée et un code VBA pour formater des numéros de téléphone dans Excel, avec une explication complète.
Objectif :
Nous souhaitons écrire un code VBA qui prend des numéros de téléphone saisis dans divers formats et les convertit en un format uniforme, par exemple, (XXX) XXX-XXXX (format couramment utilisé aux États-Unis).
Exemples de formats d’entrée :

  • 1234567890
  • 123-456-7890
  • 123.456.7890
  • (123) 456-7890
  • +1 123 456 7890

Format de sortie souhaité :

  • (XXX) XXX-XXXX

Étapes et approche :
1. Comprendre les formats des numéros de téléphone : Les numéros de téléphone peuvent être saisis dans différents formats. L’objectif est de supprimer tous les caractères non numériques, tout en garantissant que le format de sortie soit toujours composé de 10 chiffres sous la forme (XXX) XXX-XXXX.
2. Aperçu du code VBA :

  • Nous utiliserons une fonction qui vérifie chaque cellule contenant un numéro de téléphone, supprime les caractères non numériques, puis formate le numéro selon le format désiré.
  • La fonction validera que le numéro de téléphone comporte bien 10 chiffres avant d’appliquer le format.

Code VBA détaillé :

Sub FormaterNumérosDeTéléphone()
    Dim cell As Range
    Dim numero As String
    Dim numeroFormaté As String
    ' Boucle à travers chaque cellule dans la plage sélectionnée
    For Each cell In Selection
        If Not IsEmpty(cell.Value) Then
            numero = cell.Value
            ' Supprimer tous les caractères non numériques
            numero = NettoyerNuméroDeTéléphone(numero)
            ' Vérifier si le numéro a exactement 10 chiffres
            If Len(numero) = 10 Then
                ' Formater le numéro sous le format (XXX) XXX-XXXX
                numeroFormaté = "(" & Mid(numero, 1, 3) & ") " & Mid(numero, 4, 3) & "-" & Mid(numero, 7, 4)
                cell.Value = numeroFormaté
            Else
                ' Si le numéro n'a pas 10 chiffres, afficher un message d'erreur
                MsgBox "Le numéro de téléphone dans la cellule " & cell.Address & " n'est pas valide. Il doit contenir 10 chiffres.", vbExclamation
            End If
        End If
    Next cell
End Sub
' Fonction auxiliaire pour nettoyer le numéro de téléphone en supprimant les caractères non numériques
Function NettoyerNuméroDeTéléphone(ByVal numero As String) As String
    Dim i As Integer
    Dim numeroNettoyé As String
    numeroNettoyé = ""
    ' Boucle à travers chaque caractère de la chaîne
    For i = 1 To Len(numero)
        ' Si le caractère est un chiffre, l'ajouter à la chaîne numeroNettoyé
        If Mid(numero, i, 1) Like "#" Then
            numeroNettoyé = numeroNettoyé & Mid(numero, i, 1)
        End If
    Next i
    ' Retourner le numéro nettoyé
    NettoyerNuméroDeTéléphone = numeroNettoyé
End Function

Explication du code :
1. Sub FormaterNumérosDeTéléphone :

  • C’est la procédure principale qui traite la plage de cellules sélectionnée (où se trouvent les numéros de téléphone).
  • Le code parcourt chaque cellule de la sélection et vérifie si la cellule n’est pas vide (If Not IsEmpty(cell.Value)).
  • Pour chaque cellule non vide, la fonction auxiliaire NettoyerNuméroDeTéléphone est appelée pour supprimer les caractères non numériques.

2. Fonction NettoyerNuméroDeTéléphone :

  • Cette fonction prend en entrée le numéro de téléphone sous forme de chaîne de caractères et supprime tous les caractères non numériques (comme les tirets, espaces, parenthèses, etc.).
  • Elle parcourt chaque caractère du numéro et vérifie s’il est numérique (If Mid(numero, i, 1) Like « # » Then).
  • Si le caractère est un chiffre, il est ajouté à la chaîne numeroNettoyé.
  • Enfin, la fonction retourne le numéro nettoyé, ne contenant que des chiffres.

3. Formatage du numéro de téléphone :

  • Une fois que le numéro est nettoyé (c’est-à-dire que les caractères non numériques ont été supprimés), le code vérifie si le numéro contient exactement 10 chiffres.
  • Si le numéro contient 10 chiffres, il est formaté sous la forme (XXX) XXX-XXXX en utilisant la fonction Mid. La fonction Mid extrait des parties de la chaîne, par exemple, Mid(numero, 1, 3) extrait les trois premiers chiffres.
  • Si le numéro ne contient pas 10 chiffres, un message d’alerte est affiché pour signaler que le numéro est invalide.

4. Interaction avec l’utilisateur :

  • L’utilisateur sélectionne la plage de cellules contenant les numéros de téléphone.
  • Ensuite, il peut exécuter la macro en appuyant sur Alt + F8, en sélectionnant FormaterNumérosDeTéléphone et en cliquant sur Exécuter.

Comment l’utiliser :
1. Ouvrez votre fichier Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
2. Dans l’éditeur, cliquez sur Insertion > Module pour créer un nouveau module.
3. Collez le code fourni dans ce module.
4. Fermez l’éditeur et revenez à votre feuille Excel.
5. Sélectionnez la plage de cellules contenant les numéros de téléphone.
6. Appuyez sur Alt + F8, sélectionnez FormaterNumérosDeTéléphone, puis cliquez sur Exécuter.
Les numéros de téléphone seront formatés sous la forme (XXX) XXX-XXXX, et tous les caractères non numériques seront supprimés.
Exemple :
1. Entrée : 1234567890

  • Sortie : (123) 456-7890

2. Entrée : 123-456-7890

  • Sortie : (123) 456-7890

3. Entrée : +1 123 456 7890

  • Sortie : (123) 456-7890

4. Entrée : (123) 456-7890

  • Sortie : (123) 456-7890

Remarques :

  • Le code suppose que les numéros de téléphone valides doivent comporter exactement 10 chiffres. Si un numéro ne répond pas à cette condition, un message d’erreur est affiché.
  • Vous pouvez adapter le format du numéro de téléphone dans le code si vous avez besoin d’un autre format.
  • Ce code est conçu pour les numéros de téléphone au format américain, mais il peut être ajusté pour d’autres régions si nécessaire (par exemple, en prenant en compte les indicatifs internationaux).
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x