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 :

Fonction texte en VBA [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 58
    Points
    58
    Par défaut Fonction texte en VBA
    Bonjour,

    Je suis en train de faire des vérifications sur le nombre de caractères que doit contenir un code postal selon le pays. Je travaille sur la France et j'ai pour habitude d'utiliser la fonction texte pour faire apparaître le zéro devant les communes de l'Ain, l'Aisne... Afin d'avoir bel et bien 5 caractères.

    Pour aller plus vite et automatiser ce traitement, je passe par VBA avec une boucle.

    La boucle recherche les lignes ou le pays est "FR". Pour ces mêmes lignes, on applique le format "00000" en colonne 14 en pointant sur la colonne 10 (code postal "brut"). Tout se passe bien pour les codes ayant déjà 5 caractères. Mais pour les cellules qui n'ont que 4 caractères, ça ne change rien.
    J'ai également essayé avec application.text, le résultats est le même : Excel ne veut pas passer mon code sur 5 caractères.
    A noter qu'avec la formule =texte(), le zéro apparait bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 2 To Derniere_Ligne
    'Code postale sur 5 positions : France, Allemagne, Italie, Espagne
    If Worksheets("CANAL_EXPORT").Cells(i, 13) = "FR" Then
    Worksheets("CANAL_EXPORT").Cells(i, 14) = Format(Worksheets("CANAL_EXPORT").Cells(i, 10), "00000")
    End If
    Next i

    Merci par avance de votre aide !
    Bonne journée !

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut


    Bonjour,

    c'est normal, mieux vaut utiliser directement le formatage au niveau des cellules de la feuille de calculs …

    Sinon ajouter un nombre de caractères "0" via la fonction String par différence avec le nombre de caractères de la cellule (Len).


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Pix_elle, Marc, bonjour le forum,

    peut-être comme ça :

    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
    Sub Macro1()
    With Worksheets("CANAL_EXPORT")
        For i = 2 To Derniere_Ligne
            'Code postale sur 5 positions : France, Allemagne, Italie, Espagne
            Select Case .Cells(i, 13).Value
                Case "FR", "AL", "IT", "ES" 'à adapter
                    With .Cells(i, 14)
                        If Len(.Value) = 4 Then
                        .Value = "'0" & .Value
                        .NumberFormat = "@"
                    End With
            End Select
        Next i
    End With
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Oh un Sétois ! (Salut Robert !)


    Robert a raison, si c'est juste pour les cellules de 4 caractères, juste besoin de la fonction Len !

  5. #5
    Membre du Club
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    Bonjour tous les deux. Et un grand merci pour votre réactivité !

    Effectivement, le contrôle des 4 caractères sera uniquement sur les lignes françaises (parce qu'on connait le terrain et les possibles erreurs lors du formatage de cellules). Pour toutes les autres, si le nombre de caractères du code ne correspond pas aux règles du pays, on les met de côté. pou

    Merci pour vos deux idées ! Elles fonctionnent hyper bien

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

Discussions similaires

  1. [XL-2007] Fonction texte en VBA
    Par nachinmarcellin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/04/2011, 08h00
  2. Réponses: 3
    Dernier message: 01/08/2006, 15h18
  3. Retour à la ligne dans Zone de texte. Via VBA
    Par GuidoBrasletti dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 11h56
  4. Réponses: 1
    Dernier message: 14/10/2005, 15h36

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