IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Formatage numéro de téléphone [XL-2013]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut Formatage numéro de téléphone
    Bonjour,

    Je dispose d'un très grand nombre de numéro de téléphone à formater.
    Je dois TOUS les formater dans le format suivant : +22-1234-567899

    Le problème est qu'ils n'ont pas tous le même format de base.

    Je peux rencontrer par exemple les cas suivants :

    7622829999 ( à formater donc en +22-7622-829999 ) (Ici je dois simplement ajouter le +22).
    0022-01607 388888 ( à formater donc en +22-1607-388888 ) (Ici je dois donc enlever un 0 après le premier tiret)
    2207622827777 (à formater donc en +22-7622-827777) (Ici je dois donc enlever un 0 après le 22)


    Mon problème est qu'ils n'ont pas tous la même taille, et que je dois vérifier s'ils commencent bien par 22, ou bien 0022 avant d'ajouter les tirets ....
    Certains numéros comportent des tirets, et d'autres des espaces.

    Je suppose que je dois passer par une macro particulière ?

    1/Supprimer les tirets.
    2/Supprimer les espaces.
    3/Compter le nombre de caractère.
    • Si = 10 alors formatage simple.
    • Si = 15 alors il doit commencer par "00220".
    • Si = 13 alors il doit commencer par "220". Il faudra supprimer le 0.
    • Si = 12 alors il doit commencer par "22" simplement.


    4/Ajouter les tirets au bon endroit.

    Je ne sais pas s'il n'existe pas un moyen plus simple via Excel 2k13.
    Et je ne maitrise pas bien le VBA même si pour le coup je pense que c'est assez simple.

    Merci beaucoup pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    Bonjour,
    si l'opération est à faire une seule fois, il n'est pas nécessaire de se compliquer avec une macro surtout si vous ne maitrisez pas cet outil.

    Le mieux serait de "réduire" toute la base au format le plus simple, avec les seuls numéros.

    1
    supprimer les tirets partout ("-" remplacé par "")
    2
    supprimer les + ("+" remplacé par "")
    Compter numéros avec nbcar()
    3
    trier les réponses en décroissant par exemple
    4
    prendre que les numéros de droite avec droite(A1;12)
    5
    s'il 1 chiffre est en surnuméraire (et que c'est bien un zéro), prendre gauche(A1;2)&droite(A1;10)
    Une fois la base "réduite" refaire les numéro avec des gauche() et droite() et des &

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="+22"&gauche(A1;2)&" - "&droite(gauche(A1;10);4)&" - "&droite(A1;6)
    A peu de choses près

    Supermichou

  3. #3
    Membre expérimenté Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Bonsoir,

    VBA, pas VBA...
    Pour ma part, j'aurai utilisé une fonction VBA. Ceci permet de centraliser le code à un seul endroit et de le faire évoluer au besoin sans modifier autre chose.

    Exemple à ajouter dans un module VBA (alt+F11)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function FormatTel(s As String) As String
      If IsNumeric(Mid(s, Len(s) - 6, 1)) Then
        FormatTel = "+22-" & Mid(s, Len(s) - 9, 4) & "-" & Right(s, 6)
      Else
        FormatTel = "+22-" & Mid(s, Len(s) - 10, 4) & "-" & Right(s, 6)
      End If
    End Function
    Pour l'utiliser, il suffit de l'appeler dans une cellule Excel: avec A1 qui contient le N° d'origine.

    Cdlt,

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Mais ta technique SuperMichou demande quand même qu'on soit attentif au nombre de carac non ?
    Car j'ai plus de 10.000 numéros à contrôler...

    Quant à arosec, ton code m'a l'air simple, par contre je dois enlever les espaces, les tirets et les + avant non ?
    De plus il ne permet pas de contrôler si mon numéro commence déjà par 22 ou 220 non ?

    Edit : Je retire ce que j'ai dit, ta macro semble fonctionner Arosec.
    Je vais la tester sur un gros échantillon histoire d'être sur !

    Merci à tous les deux !

  5. #5
    Membre expérimenté Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Bonsoir,

    Quant à arosec, ton code m'a l'air simple, par contre je dois enlever les espaces, les tirets et les + avant non ?
    De plus il ne permet pas de contrôler si mon numéro commence déjà par 22 ou 220 non ?
    Non et non... (si j'ai correctement compris ton besoin)

    -Les 6 derniers chiffres
    Les 6 dernier caractères qui sont a priori bon.

    -Les 4 chiffres du milieu
    Si le Le 7eme caractères en partant de la fin est un nombre, alors, les 4 chiffres sont les caractères 4,5,6 et 7
    sinon les caractères 3,4,5 et 6

    et enfin, on ajout le +22 en dure devant et le "-" entre les groupes de chiffre...

    Cdlt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le numéro de téléphone entrant
    Par louisss dans le forum Access
    Réponses: 23
    Dernier message: 26/07/2023, 18h21
  2. Réponses: 16
    Dernier message: 20/07/2012, 19h35
  3. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 09h25
  4. [ODBC] Formatage d'un numéro de téléphone
    Par loganblack dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 01/08/2006, 14h12
  5. Insérer un numéro de téléphone
    Par Fleep dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/10/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo