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 de format Date


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut Problème de format Date
    Bonjour à tous,
    J'ai une liste de date copiées collées avec la formule Cdate.

    Cette liste de date est ensuite mise dans une listview et ensuite copier dans un nouveau classeur via ce code.
    Le format du classeur est un format date de type 12-March-17.


    Lorsque je mets les valeurs dans la listview, je fais fonctionner ce code.


    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
    Set Plage1 = Worksheets(Active).Range("A12:A" & LastLig).SpecialCells(xlCellTypeVisible)
           If Plage1.Count > 1 Then
                For Each c In Plage1
                   If c.Row > Plage1.Row Then
                       With Me.AffichageSelection.ListItems.Add(, , c.Value)
                            .SubItems(1) = c
                            .SubItems(2) = c.Offset(, 1)
                            .SubItems(3) = c.Offset(, 2)
                            .SubItems(4) = c.Offset(, 3)
                            .SubItems(5) = c.Offset(, 4)
                            .SubItems(6) = c.Offset(, 5)
                            .SubItems(7) = c.Offset(, 6)
                            .SubItems(8) = c.Offset(, 7)
                            .SubItems(9) = c.Offset(, 8)
                    End With
                   End If
                Next c
            End If
    Les valeurs sont considérées comme du texte.

    Est ce que quelqu'un connait la modification à apporter ? SVP



    En vous remerciant beaucoup

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,


    utilises la fonction Format(MaDate, LeFormat)

    Ici, je formate la date pour afficher uniquement l'année sur deux chiffres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        Me.ListView1.ListItems.Add , , Format("11/01/2016", "dd/mm/yy")
    End Sub

    Voici une excellente publication sur la fonction Format()
    http://jpcheck.developpez.com/tutori...rmat-dans-vba/

    Et un rappel sur la gestion des dates et des problématiques qu'on peut rencontrer quand on n'est pas au fait du fonctionnement
    http://didier-gonard.developpez.com/...-excel-et-vba/

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Merci Joe.levrai

    J'ai tenté ton code et ça ne fonctionne pas...
    Il me fait change le formalisme jusqu'à supprimer toute la ligne...


    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
    Set Plage1 = Worksheets(Active).Range("A12:A" & LastLig).SpecialCells(xlCellTypeVisible)
           If Plage1.Count > 1 Then
                For Each c In Plage1
                   If c.Row > Plage1.Row Then
              Me.AffichageSelection.SubitemsItems (6), , Format("11/01/2016", "dd/mm/yy")
     
                       With Me.AffichageSelection.ListItems.Add(, , c.Value)
     
     
                           .SubItems(1) = c
                            .SubItems(2) = c.Offset(, 1)
                           .SubItems(3) = c.Offset(, 2)
                           .SubItems(4) = c.Offset(, 3)
                           .SubItems(5) = c.Offset(, 4)
                            .SubItems(8) = c.Offset(, 7)
                            .SubItems(9) = c.Offset(, 8)
                           ' Me.ListView1.ListItems.Add , , Format("11/01/2016", "dd/mm/yy")
                           '.ListSubItems.Add , , FormatNumber("[$-409]d-mmm-yy;@")
                            '.SubItems(6) = NumberFormat = "[$-409]d-mmm-yy;@"
                            '.SubItems(7) = NumberFormat = "[$-409]d-mmm-yy;@"
                            .SubItems(6) = c.Offset(, 5)
                            .SubItems(7) = c.Offset(, 6)
     
                    End With
                   End If
                Next c
            End If

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Quel est la partie de ton code où tu effectues la copie vers un nouveau classeur ?

    C'est lors de cette copie qu'il faudrait plutôt utiliser Format()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListView1_Click()
        ' au clic dans ListView1
        ' on copie le premier élément dans la cellule active
        ActiveCell.Value = Format(Me.ListView1.ListItems(1), "dd-mmmm-yy")
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Je pense que si je respecte le bon formalisme pour le code suivant, j'aurai résolu mes problèmes.


    Est ce que quelqu'un peut m'aider ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Me.AffichageSelection.ListItems.Add(, , c.Value)
                           .SubItems(1) = c
     
     
                            .SubItems(6).Add , , Format(c.Offset(, 5), "[$-409]d-mmm-yy;@")

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Le format que j'ai utilisé dans mon dernier message n'était pas celui que tu avais spécifié dans ton premier message ?

    01/02/2017 devient 01-Février-17

  7. #7
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Oui bien sur que ca doit etre le bon format... Mon souci c'est que je n'arrive pas à insérer ce formalisme dans mon code. Mon code crash à chaque fois...

    Si je l'insère au niveau du collage il interprète la valeur comme du texte et ca ne fonctionne pas.

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Je ne vois toujours pas le code de ton "collage vers une feuille" comme je l'ai abordé au message #4

  9. #9
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 69
    Par défaut
    Je colle ainsi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      For i = 1 To AffichageSelection.ListItems.Count
     Cells(i + 3, 1).Value = AffichageSelection.ListItems(i) '-->> la valeur en première colonne
      For j = 1 To AffichageSelection.ColumnHeaders.Count - 1
      Cells(i + 3, j).Value = AffichageSelection.ListItems(i).SubItems(j)  ' -->> les valeurs en colonnes suivantes
        Next

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Je maintiens, il y a donc le code qu'il te faut (tout du moins sa mécanique) dans le message #4

  11. #11
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Joe.

    C'est pas certain que VBA reconnaisse une date americaine dans "10-janvier-17" avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Value = Format(Me.ListView1.ListItems(1), "dd-mmmm-yy")
    Par contre, avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Value = Format(Me.ListView1.ListItems(1), "yyyy-mm-dd")
    VBA reconnaitra une date americaine dans "2017-01-10" (Salut Robert) et pourra la convertir en valeur numerique de type Date.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.AffichageSelection.ColumnCount=Plage1.Columns.Count
    Me.AffichageSelection.liste =Plage1
    Dernière modification par Invité ; 18/04/2017 à 09h00.

  13. #13
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je n'interviens que pour signaler que la seconde ligne de ces deux lignes de code (message n° 3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If c.Row > Plage1.Row Then
              Me.AffichageSelection.SubitemsItems (6), , Format("11/01/2016", "dd/mm/yy")
    ne correspond à rien. Format est une fonction et non une méthode.

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

Discussions similaires

  1. [XL-2007] Problème de format date
    Par Martialino dans le forum Excel
    Réponses: 5
    Dernier message: 01/08/2010, 09h03
  2. Problème de format date de naissance
    Par philippeshoto dans le forum Sécurité
    Réponses: 4
    Dernier message: 14/01/2009, 06h47
  3. Problème de format date automatique
    Par moilou2 dans le forum IHM
    Réponses: 13
    Dernier message: 30/06/2008, 11h24
  4. Problème de format DATE
    Par sajodia dans le forum Toad
    Réponses: 11
    Dernier message: 09/06/2008, 12h05
  5. [SSAS][2K5] Problème de format date
    Par geof dans le forum SSAS
    Réponses: 6
    Dernier message: 11/04/2008, 18h52

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