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

Macros et VBA Excel Discussion :

Mise en forme "Numéro de téléphone"


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Points : 19
    Points
    19
    Par défaut Mise en forme "Numéro de téléphone"
    Bonjour,

    Voilà mon problème :
    J'ai un classeur avec une feuille ==> 4 colonne
    La quatrième colonne contient des numéro de téléphone
    exemple "33 (0) xxx xxx xxx" "0x xx xx xx xx" "+33 xxx xxx xxx"

    je voudrais les mettre en forme dans une macro, pour qu'ils soient tous de format "0xxxxxxxxx" .

    Merci de vos conseils

    Bonne journée

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    as-tu vraiment besoin de VBA pour faire ça ???

    tu fais Ctrl+H ( Rechercher/Remplacer )

    rechercher : " " remplacer : ""
    rechercher : 33(0) remplacer : 0
    rechercher : +33 remplacer : 0

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Bonjour "canichon"

    Oui, je fais tout dans une macro car l'utilisateur doit pouvoir ouvrir ce classeur sans à faire de modifications ...

    Merci quand même de ta solution ! Je continue de chercher...

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Jour Bon
    Solution bestiale sans expressions régulières, sans doute à adapter
    un échantillon de fichier aurait été le bienvenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Option Explicit
     
    Sub Tst()
    Dim iLastRow As Long
    Dim i As Long
    Dim sStr As String
     
        iLastRow = Range("D65536").End(xlUp).Row
        For i = 1 To iLastRow
            sStr = Trim(Cells(i, 4))
            sStr = Replace(sStr, " ", "")
            sStr = Replace(sStr, "+", "")
            sStr = Replace(sStr, "(0)", "")
            sStr = Replace(sStr, "33", "")
            If Len(sStr) < 10 Then sStr = "'" & "0" & sStr
            Cells(i, 4) = sStr
        Next i
    End Sub

  5. #5
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Jour Bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Option Explicit
     
    Sub Tst()
    Dim iLastRow As Long
    Dim i As Long
    Dim sStr As String
     
        iLastRow = Range("D65536").End(xlUp).Row
        For i = 1 To iLastRow
            sStr = Trim(Cells(i, 4))
            sStr = Replace(sStr, " ", "")
            sStr = Replace(sStr, "+", "")
            sStr = Replace(sStr, "(0)", "")
            sStr = Replace(sStr, "33", "")
            If Len(sStr) < 10 Then sStr = "'" & "0" & sStr
            Cells(i, 4) = sStr
        Next i
    End Sub
    heuuuu.... quite a faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            sStr = Replace(sStr, " ", "")
            sStr = Replace(sStr, "+", "")
            sStr = Replace(sStr, "(0)", "")
            sStr = Replace(sStr, "33", "")
            If Len(sStr) < 10 Then sStr = "'" & "0" & sStr
    autant faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            sStr = Replace(sStr, "33 (0) ", "0")
            sStr = Replace(sStr, "+33 ", "0")

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Bonjour et merci kiki29

    Ton code m'a beaucoup aidé parcontre il y a encore des petits problèmes :

    Exemple : ancien numéro ==> 33 (0) xxx xxx x33
    nouveau numéro ==> 0xxxxxxx

    En faite dés qu'il trouve "33" il me l'enlève alors que moi je ne veux l'enlever qu'au début et non pas dans le numéro de téléphone

    Autre remarque : les numéro qui étaient en format +33 xxx xxx xxx sont devenu xxxxxxxx ==> il manque le 0 du début !! sinon les espaces sont bien partis...

    Merci !!!

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Les solutions sont nombreuses...

    Je propose de passer ici par un tableau de bytes, ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Command1_Click()
      dim toto as string
      toto = "33 (0) 123 456 733"
      Dim titi() As Byte
      titi() = StrConv(toto, vbFromUnicode)
      toto = ""
      For i = 0 To UBound(titi)
        If IsNumeric(Chr(titi(i))) Then toto = toto & Chr(titi(i))
      Next
      MsgBox toto
    End Sub
    ce qui traduit ainsi l'exemple de kiki, donc ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To iLastRow
            sStr = Trim(Cells(i, 4))
            Dim titi() As Byte
            titi() = StrConv(sStr, vbFromUnicode)
            sStr = ""
           For i = 0 To UBound(titi)
             If IsNumeric(Chr(titi(i))) Then sStr = sStr & Chr(titi(i))
           Next
           Cells(i, 4) = sStr
    Next i

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    et si tu veux te débarrasser de ton "superflu", voilà comment tu peux ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Command1_Click()
      toto = "33 (0) 123 456 733"
      Dim titi() As Byte, pos as boolean
      titi() = StrConv(toto, vbFromUnicode)
      toto = ""
      For i = 0 To UBound(titi)
        If Chr(titi(i)) = "(" Then pos = True
        If IsNumeric(Chr(titi(i))) And pos = True Then toto = toto & Chr(titi(i))
      Next
      pos = false
      MsgBox toto
     
    End Sub

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Merci de toutes ces solutions mais celle de "kiki29" et "Many31" me sont satisfaisante ...

    sauf le problème que je rencontre : mes numéros du style 0x xx xx xx xx deviennent xxxxxxxxx il manque le 0 au début !!

    Ci joint un exemple de mon classeur !

    Autre probléme : dans une cellule de numéro de téléphone : il y en a deux séparer par un <BR> je voudrais pouvoir mettre le deuxième numéro dans la colonne d'à côté...

    merci de m'aider avec vos conseils !!

    bonne journée
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, l'ultime (?) à la graisse de cheval

  11. #11
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Test()
     
    Dim iLastRow As Long
    Dim ligne As Long
    Dim sStr As String
    ligne = 1
    Do While Cells(ligne, 1) <> ""
        sStr = Cells(ligne, 4)
        sStr = Replace(sStr, "33 (0) ", "0")
        sStr = Replace(sStr, "+33 ", "0")
        sStr = Replace(sStr, " ", "")
        If Len(sStr) <= 9 Then sStr = "0" & sStr
        Cells(ligne, 4) = "'" & sStr
        ligne = ligne + 1
     
     
     
    Loop
        Columns("D:D").Select
        Selection.NumberFormat = "General"
    End Sub

    j'aéi essayé avec ton fichier ca a lair de marcher chez moi
    tes 0 partez car quand Excel voit 01 ben pour lui c'est un chiffre donc ca fait 1 et au final il te suffisait de rajouter le '
    01 = 1
    '01 = 01


    ou plus simplement il te suffit de rajouter "'" & quand tu rempli ta cellule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(ligne, 4) = "'" & sStr

  12. #12
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Merci Merci Merci !!!!

    Sa marche !!!!!!!! Je vous remercie trés sincérement de vos solutions !!
    Vous m'avez énormément aidé !

    !!!!!!

    Bonne journée !! Vous êtes les meilleurs

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

Discussions similaires

  1. [XSL]Mise en forme numéro de Téléphone
    Par wave95 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/12/2009, 14h59
  2. Mise en forme de Numéro
    Par clonjon dans le forum iReport
    Réponses: 1
    Dernier message: 24/03/2009, 18h22
  3. Mettre en forme un numéro de téléphone
    Par moilou2 dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/10/2008, 16h02
  4. [PAO]mise en forme des numéros de bas de page
    Par mehdi1968 dans le forum Word
    Réponses: 5
    Dernier message: 11/05/2008, 02h42

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