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 :

VBA - Valeur "0" dans un format personnalisé [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Débutant en VBA et VB
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant en VBA et VB
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut VBA - Valeur "0" dans un format personnalisé
    bonjour,

    Je tente désespérément de créer une macro pour avoir un "format date" dans une colonne (oui je sais c'est ridicule de ne pas y parvenir...)
    Le fichier source est un fichier txt. Et la première colonne correspond à des dates. Cependant dans le fichier txt, les dates qui commencent par un zéro (tous les 9 premiers jours des mois) sont en format 10113.
    Afin de résoudre ce problème j'ai réalisé une macro pour ajouter le zéro (mais c'est possible qu'en format TEXTE)
    et là quand je tente de passer une macro pour avoir un format ##/##/####
    il ne "récupère" pas le zéro
    voici les codes que j'ai mis en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Pilotage_DateenCetD()
    ' rajout zéro pour création "date"
    Sheets("Feuil2").Select
    Dim Nc, Cel As Range
    Columns(1).Select
    For Each Cel In Selection
    Nc = Len(Cel)
    If Nc = 5 Then Cel = "0" & Cel
    Next Cel
    End Sub
    Donc après ça j'ai un format en 010113, sur lequel je veux rajouter les "/" et le siècle.

    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 FormatDATE()
     
    Sheets("Feuil2").Select
     
     
    ActiveSheet.Columns(1).NumberFormat = "##""/""##""/20""##" 'je modifie le format
    Dim Nc, Cel As Range
     
    For Each Cel In Range("a2:a65000") 'j'ai rajouté ceci en espérant que ça allait rajouter le 0 devant
    Nc = Len(Cel)
    If Nc = 9 Then Cel = "0" & Cel
    Next Cel
     
    End Sub

    Mais hélas ça passe en 1/01/2013

    J'ai aussi tenté avec une concaténation.

    Désolé si je ne suis pas explicite (c'est mon premier post, et je suis débutant)

    Merci d'avance pour vos conseils, remarques ou autres

    Mat

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible

    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
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Pilotage_DateEnCetD()
     
    Dim DerniereLigne As Long
    Dim Cellule As Range
    Dim AireDate As Range
    Dim ValeurDate As Date
     
     
       Sheets("Feuil2").Activate
       DerniereLigne = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
     
       Set AireDate = Sheets("Feuil2").Range(Cells(1, 1), Cells(DerniereLigne, 1))
     
       For Each Cellule In AireDate
     
             Select Case Len(Cellule)
                Case 5
                   ValeurDate = DateSerial(Mid(Cellule, 4, 2), Mid(Cellule, 2, 2), Mid(Cellule, 1, 1))
                Case 6
                    ValeurDate = DateSerial(Mid(Cellule, 5, 2), Mid(Cellule, 3, 2), Mid(Cellule, 1, 2))
             End Select
     
             Cellule = ValeurDate
     
       Next Cellule
     
       Set AireDate = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Débutant en VBA et VB
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant en VBA et VB
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut
    Merci Erik pour cette proposition
    Cependant ça me pose 2 problèmes :
    - Le mois est inversé : c'est à dire que 10213 devient 2/1/2013
    je pense que c'est au niveau du position dans le Mid()

    - ça me "supprime" toujours mes zéros
    mon exemple du 10213 (premier février 2013) je souhaiterais que ça devienne
    01/02/2013

    je suppose que le problème vient du format original : format TEXTE

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    essaie ceci dans ton code

    A la place de
    ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cellule = Format(ValeurDate,"dd/mm/yyyy")

  5. #5
    Membre averti
    Homme Profil pro
    Débutant en VBA et VB
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant en VBA et VB
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut
    Eric !!!


    ne cherches plus, tu es un Boss !
    en fait mon format original était du standard, donc ta proposition est LA solution a mon problème
    Car quand je fais tourner ça, sur mon document source (et non sur mon document dans lequel j'ai déjà modifié le format, ajouté des zéros etc... ) ça fonctionne PARFAITEMENT !

    Je te remercie beaucoup

    Matt

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

Discussions similaires

  1. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38

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