Format date dans une ListBox

Bonjour à tous!

Je n'arrive pas à mettre en format date "yyyy-mm-dd" les colonnes de ma ListBox1 où il se retrouve des dates en format numérique dans le tableau source. Voici les codes que j'ai essayé sans succès :

        With ListBox1
            .RowSource = "TB_Plani"
            .Column(8) = Format(CDate(.Column(8)), "yyyy-mm-dd")
            .Column(9) = Format(CDate(.Column(9)), "yyyy-mm-dd")
            .Column(10) = Format(CDate(.Column(10)), "yyyy-mm-dd")
        End With

        With ListBox1
            .RowSource = "TB_Plani"
            .Column(8) = Format(.Column(8), "yyyy-mm-dd")
            .Column(9) = Format(.Column(9), "yyyy-mm-dd")
            .Column(10) = Format(.Column(10), "yyyy-mm-dd")
        End With

        Dim X As Integer
        With ListBox1
            .RowSource = "TB_Plani"
            For X = 0 To ListBox1.ListCount - 1
                .List(X, 8) = Format(.List(X, 8), "yyyy-mm-dd")
                .List(X, 9) = Format(.List(X, 9), "yyyy-mm-dd")
                .List(X, 10) = Format(.List(X, 10), "yyyy-mm-dd")
            Next X
        End With

Je n'arrive pas du tout à comprendre comment faire, pouvez-vous m'aider?

Bonjour,

Un petit fichier es toujours apprécié

avec juste un bout de ton Tb_Plani et ton listbox...

3listbdates.xlsm (16.68 Ko)

A=

salut

essaye avec ce code

With ListBox1

.RowSource = "TB_Plani"

' Parcourez chaque ligne du ListBox

Dim X As Integer

For X = 0 To .ListCount - 1

If IsDate(.List(X, 8)) Then

.List(X, 8) = Format(CDate(.List(X, 8)), "yyyy-mm-dd")

End If

If IsDate(.List(X, 9)) Then

.List(X, 9) = Format(CDate(.List(X, 9)), "yyyy-mm-dd")

End If

If IsDate(.List(X, 10)) Then

.List(X, 10) = Format(CDate(.List(X, 10)), "yyyy-mm-dd")

End If

Next X

End With

Bonjour à vous deux!

Merci d'avoir pris le temps!

J'ai oublié quand même un élément important de vous dire soit que la valeur à retranscrire est en numérique dans le tableau. Je vous joints le fichier il s'agit en fait de la colonne C9 du tableau qui se retranscrit dans la ListBox1.

Je ne peux pas non plus ajouter des éléments par AddItems ou par une méthode Range, le but de mettre une RowSource est d'avoir en temps réellement les changements sans devoir constamment initialiser le UserForm... Dans le passé, mais dernier projet était fait autrement et je n'aime pas ça, le RowSource qui ce met à jour automatiquement est parfait, je dois donc le conserver avec cette méthode.

5dev-projet.xlsm (172.47 Ko)

Bonjour,

Allez je vais me mouiller : Ça ne me semble pas possible !

Ça te laisse au moins une chance : Celle d'avoir (si elle existe...) une autre réponse contraire dans la journée : Comme on ne peut pas tout savoir, si je me trompe, il y toujours un petit futé pour venir me tacler rapido !

A+

Bonjour!

On est en mesure de le faire sur une TextBox par exemple, mais on ne pourrait sur une ListBox quand les données entrées sont par un RowSource? Sur d'ancien projet j'entrais les données dans une ListBox par un AddItem ou un Range et je pouvais modifier le format des colonnes sans problème. Le hic ici est que si n'entre pas les données par un RowSource, celles-ci ne se mettent pas à jour automatiquement et ça devient vraiment lourds de initialiser le UserForm, de perdre le suivi de où tu es rendu, etc.

J'espère vraiment que quelqu'un aura la solution à mon problème :), je ne lâche pas!

Bonjour CedL,

Dans le TS Tb_plani, pourquoi gérer les dates en numérique ? Si tu les gères en date, le problème d'affichage ne se pose plus et cela n'empêche nullement de faire des calculs puisque les dates sont en fait des numériques de type double.

Cdlt,

Cylfo

Bonjour Cylfo,

Elle se génère elle même en numérique dans le tableau après que la saisie ait été fait dans la TextBox. Le fait qu'après la saisie dans la TextBox je ne force pas le format date voulu dans le tableau par la suite est que je me suis rendu compte dans mes autres projets qu'il pouvait y avoir des problèmes de format date qui se générait quand on passait de l'anglais en français ou juste vis versa. Le format dans la TextBox que je force est yyyy-mm-dd et quand je demande à envoyer l'information de cette même TextBox dans le tableau elle s'inscrit en numérique. Quand j'initialise le UserForm, il prend l'information numérique du tableau pour la transposer en format date dans la TextBox toutefois je n'arrive pas à le faire dans la ListBox...

Bonjour à tous !

@CedL :
Je constate que vous savez répondre aux remarques qui vous sont adressées.
Il est vrai que votre besoin n'est pas encore satisfait.

Re,

En initialisant la date dans le tableau avec <cellule du tableau> = CDate(TextBox.Value) cela devrait résoudre le problème "français <-> anglais".

Sinon, je partage l'avis de galopin01 d'autant que la modification de Listbox1.List(x, 9) = "quoique ce soit" génère une erreur (masquée par le "On Error Resume Next") car dans un contrôle ListBox dont la propriété RowSource est initialisée, on ne peut pas modifier les valeurs de la liste (voir copie d'écran ci-dessous suite à l'exécution de l'instruction dans la fenêtre "Exécution").

image
a tester  
Dim X As Integer
    ' Exemple d'initialisation de X
    For X = 0 To Me.ListBox1.ListCount - 1
        ' Vérifiez que l'index et la colonne sont valides
        If Not IsNull(Me.ListBox1.List(X, 9)) Then
            If IsDate(Me.ListBox1.List(X, 9)) Then
                Me.ListBox1.List(X, 9) = Format(CDate(Me.ListBox1.List(X, 9)), "yyyy-mm-dd")
            End If
        End If
    Next X
Rechercher des sujets similaires à "format date listbox"