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 :

Problème Format Affichage Textbox "0# ## ## ## ##"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut Problème Format Affichage Textbox "0# ## ## ## ##"
    Bonjour,

    Dans mon je souhaite afficher un N° de tél à renvoyer dans mon tableau je lui dis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TxtTel1_Change()
        TxtTel1.Value = Format(TxtTel1.Value, "## ## ## ## ##")
    End Sub
    Il Affiche n'affiche pas le "0" devant ce que je comprends:
    Nom : Format 1.jpg
Affichages : 1379
Taille : 5,9 Ko

    Quand je dis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TxtTel1_Change()
        TxtTel1.Value = Format(TxtTel1.Value, "0# ## ## ## ##")
    End Sub
    Il saisie de droite à gauche et complète avec des "0" sur la gauche, ca me dérange:
    Nom : Format 1.5.jpg
Affichages : 1385
Taille : 6,2 Ko

    une fois la saisie finie, j'ai ce que je veux:
    Nom : Format 2.jpg
Affichages : 1793
Taille : 6,4 Ko

    J'ai alors essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TxtTel1_Change()
      If Len(TxtTel1) = 10 Then
        TxtTel1.Value = Format(TxtTel1.Value, "0# ## ## ## ##")
      End If
    End Sub
    Le résultat est parfait.
    Nom : Format 2.jpg
Affichages : 1793
Taille : 6,4 Ko
    Le problème, qui est aussi valable pour les autres solutions au dessus, est que si je me trompe et veux effacer avec "backspace", à partir du moment ou je supprime le 4ème caractère, il me replace de "0" à gauche
    Nom : Format 3.jpg
Affichages : 1384
Taille : 6,2 Ko
    pour finir comme ça quand je vais au bout:
    Nom : Format 4.jpg
Affichages : 1382
Taille : 6,2 Ko

    Une idée peut être?
    Merci

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    BOnjour

    Les # représentent des chiffres facultatifs donc normal

    Il faut "00 00 00 00 00"

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Il faut "00 00 00 00 00"
    Ca change pas malheureusement, J'ai toujours le même problème quand je reviens en arrière, il me complète à gauche avec des "0"
    Nom : Format 3.jpg
Affichages : 1380
Taille : 6,2 Ko

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    le formatage commence toujours a droite si chiffre manquant les zero se place forcement devant
    il faut les ajouter les zeros a la chaine du textbox avant de formater
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test1()
    chaine = "03034"
    MsgBox "formatage sans les zero en plus apres  " & Format(chaine, " @@ @@ @@ @@ @@ ")
    MsgBox "formatage avec les zero apres " & Format(Mid(chaine & "0000000000", 1, 10), " @@ @@ @@ @@ @@ ")
    End Sub
    c'est du string alors les zero eventuellement devant restent




    [/CODE]maintenant si le contexte est dynamique (au taper de touche)alors la c'est une autre histoire format ne suffit pas il faut intercepter dans le change ou keypress,ou keydown etc.....
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Merci Patrick mais ca ne marche pas...!
    si je mets " @@ @@ @@ @@ @@ ", Je peux effacer mais je reviens pas en début de txtbox. Puis quand je resaisi, je n'ai plus les espaces
    si je mets "@@ @@ @@ @@ @@", je ne peux pas tout effacer.

    Je comprends pas, pourtant Excel a un format spécial N° de Tel, on devrait y avoir accès non?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    je crois que tu parle de traitement dynamique
    pour ce resuktat et pouvoir revenir en arriere ou modifier c'est un peu plus complexe que ca


    sinon oui le format telephone fonctionne avec une chainne il faut separer les tranches en double guillemet
    et pour les zero apres tu n'a cas travailler a l'envers de l'envers c'est rigolo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
        Dim chaine$
        chaine = StrReverse(Format(StrReverse(23561), "0#"" ""##"" ""##"" ""##"" ""##"))
        Debug.Print chaine
    End Sub
    mais pour du dynamique entierement controlé du 1er au dernier chiffre tapé ,c'est une autre paire de manchene crois pas que c'est si facile
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Floyd-44 Voir le message
    Merci[...]
    Je comprends pas, pourtant Excel a un format spécial N° de Tel, on devrait y avoir accès non?
    Attention aux formats régionaux d'Excel... C'est une vraie mer*** (je pense notamment, mais pas que, aux codes postaux français...)

    A ne jamais utiliser!

    De plus, ce dont tu parles est un format (foireux) de cellule, mais ne joue absolument pas côté VBA.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Le plus simple serait de laisser la personne saisir le numéro sans gérer les évènements ni la saisie en temps réel, et de vérifier a posteriori si la saisie est cohérente par rapport à ce qu'on attend (sur l'Exit ou autre).

    Les codes donnés ici ne prévoient pas tous les cas de figure et vont créer des crises de nerf chez tes utilisateurs en cas d'erreur de saisie et de tentatives de correction

    Il est à mon avis préférable, et de loin, de vérifier après coup que de foutre l'utilisateur dans la panade avec du code qui est censé l'aider mais qui en fait le fout dedans.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Les codes donnés ici ne prévoient pas tous les cas de figure et vont créer des crises de nerf chez tes utilisateurs
    Oui bien sûr mais les codes donnés ici sont des pistes, c'est à Floyd-44 de vérifier la cohérence des valeurs entrées ! La question porte sur le formatage dans le TextBox pas de savoir si ce ne sont que des chiffres et non des lettres, si ce sont exclusivement des n° Français donc, à 5 groupes de 2 chiffres ou des n° d'autres pays ! Le formatage est là principalement pour faciliter la saisie je pense ?

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Theze

    Citation Envoyé par Theze Voir le message
    [...]Le formatage est là principalement pour faciliter la saisie je pense ?
    Ben... Justement


    Avec le code que tu donnes, voici ce que j'obtiens dans le textbox en y saisissant 0123456789

    Nom : 20180824_4.png
Affichages : 1403
Taille : 11,9 Ko


    Quant à celui de Patrick, si j'efface un chiffre saisi, par exemple 3 dans 0123 45... pour le saisir à nouveau, j'obtiens ceci et après le 8, je ne sais plus saisir...

    Nom : 2018-08-24_210538.png
Affichages : 1350
Taille : 2,5 Ko

    C'est vrai que ça facilite la saisie...

    Bor***. Testez un minimum vos codes avant de les poster svp. (et ce n'est pas une attaque personnelle, mais y a un minimum, quand même )


    Je n'ai même pas parlé ici du fait que, sauf à être franco-français, ca va poser un sérieux problème pour la saisie d'un numéro étranger. Dans une économie de plus en plus mondialisée, je pense qu'imaginer un n° de tél uniquement au format français est un peu étroit comme angle de vue
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2002] probléme format import textbox
    Par mickisa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/08/2009, 12h30

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