Format de date incompatible Excel et Listbox

Bonjour a tous,

le format que j'ai dans la colonne Excel ne correspond pas a celui que j'ai dans ma Listbox.

image

Je n'arrive pas a comprendre la raison, je suis sur un Excel anglais.

Pouvez vous m'aider ?

a+

Bonjour,

Fournir le code d'initialisation de la ListBox

Fournir le classeur car celui de ton précédent fil est inexploitable. (il produit une erreur)

A+

Bonjour galopin01,

En fait j'ai trouve, j'ai change mes paramètres régionaux, j'ai tout mis en Français.

Maintenant les dates Listbox correspondent aux dates Excel.

image

Cependant j'ai un autre probleme, quand je souhaite modifier une ligne, le formulaire m'indique qu'il ne trouve pas la date

image

As tu une idee ?

en te remerciant,

a+

Re,

classeur ci joint

En fait, pour la date, j'ai refait un test et la encore la date ne correspond pas a celles du fichier Excel .... je deviens zinzin

a+

11test-2.xlsm (81.20 Ko)

En fait dans la situation initiale, le problème réside dans le fait qu'une date n'est pas du texte. Dans Excel elle est stockée sous forme d'un entier Long.

Donc il faudrait la rentrer dans ton Array avec la propriété Value2

TblBD = Range(NomTableau).Resize(, NbCol + 1).Value2

...pour que une fois réinjecté avec tes paramètres d'origine Excel y retrouve on compte.

Le problème est que comme tu as une collection de combo et ListBox, un code plus efficace serait pertinent.
Pour nourrir tes Listes, je te conseille de regarder et d'adopter la méthode de Jean Paul dans ce fil :

https://forum.excel-pratique.com/excel/manipulation-chaines-de-caracteres-mid-replace-188546#p117027...

A+

... C'est un peu chaud mais très efficace et bien expliqué dans les réponses suivantes. L'avantage est que tu as bien démarré le travail avec ton Tableau Structuré !

Bon courage...

Quand je mets

TblBD = Range(NomTableau).Resize(, NbCol + 1).Value2

il me renvoi dans la listbox le format text en valeurs 4379 ...

image

Faut il que j'applique au niveau de initialize le format date dans un module ?

a+

La valeur Long c'est pour l'Array et le Dico. Sorti du Dico trié ton Long est du String pour l'affichage il faut (dans une boucle le reconvertit en Date avec CDate() et Format()

Format(CDate("45238"),"dd/mm/yyyy")

Ici j'ai utilisé "45238" car je n'ai pas remis le nez dans ton code je ne sais pas comment sort ta liste triée, je suppose qu'elle sort en String donc tu n'auras surement pas besoin de guillemets.

Si tu veux que je plonge mon nez dedans donne moi un classeur opérationnel. (Qui ne bug pas)

A+

Quel bug as tu sur mon classeur ?

A+

Celui d'aujourd'hui à 7:33 : L'indice ne correspond pas à la sélection.

De toute façon je ne repartirai pas la dessus, j'ai d'autres chat à fouetter...

Je veux le classeur ou tu utilises .Value2 et ou tu produis ta dernière image.

Si nécessaire utilise la MP.

A+

As-tu épluché le lien que t'ai donné à 7:55 par que ta routine d'initialisation me semble un peu simpliste ?

En espérant que celui ci te convienne

17fichier-test.xlsm (77.08 Ko)

Oui j'ai lu, mais je ne comprends pas !

je suis leger en VBA .... il faudrait que je fasse des boucles for

Comment tu as fait pour produire cette image puisque ton bouton démarre d'emblée par un bug ?

developper -> insert button form control -> assigner macro -> edit -> module ->

Sub Button2_Click()
Userform1.show
End Sub

Désolé moi ce usf m'envoie directement dans le décor. Je passe la main sur ce coup.

Je ne suis pas assez disponible en ce moment et selon moi ça demande plus qu'un débogage : Il faut repenser la procédure d'initialisation.

A+

Re,

je l'ai refait mon Excel et USF.

Dis moi si celui ci fonctionne ou pas ?

Merci encore

a+

7test.xlsm (60.55 Ko)

Non pas mieux... Est-ce que tu arrives à l'afficher seulement chez toi ?

Bon de toute façon c'est pas grave je n'arriverai pas à l'afficher sur mon portable. Je l'ai réduit drastiquement à 1200 x 650 ce qui est largement suffisant pour tester.

Ce qui me gêne un peu c'est que c'est le foutoir. Je suis obligé de tout renommer pour avoir quelque chose qui tient debout...

Pourquoi y a-t-il 7 combos pour les colonnes 1 à 7 et 7 ListBox pour les mêmes colonnes 1 à 7,

C'est normal ou c'est juste un peu le bordel ? Parce que là je ne crois pas que je vais y arriver !

Bon je m'attaque au code maintenant. Mais tu es prié de t'expliquer pour la question précédente parce que je ne suis pas certain de décoder la devinette.

Tu es prié de faire tes retouches sur le fichier que je te joins : J'ai inhibé la macro initialise pour qu'il puisse afficher provisoirement mais je voudrais que tu affecte Combo et ListBox aux bonnes colonnes : Utilise pour cela les Label et retourne moi ça corrigé. Ne cherche pas à aller plus loin sur ce classeur car je vais renommer les Combo et ListBox pour m'y retrouver plus facilement.

Je vais reprendre tout le code.

A+

Ne t'occupe pas du 2ème usf que j'y ai rajouté il n'a aucun intéret pour toi.

Bon je t'ai fait les 3 premiers combo : A toi de jouer pour la suite...

A+

Bonsoir,

juste par défi je me suis lancé dans une simplification du code des 10 combobox, en jouant sur le fait que ces boucles sont identiques mise à par pour les dates...
Voici le code qui en ressort :

Private Sub InitCombo()
    Dim Arr, TblBD, Dico, i, j, vide
    ' on crée un dictionnaire
    Set Dico = CreateObject("scripting.dictionary")
    ' si le tableau comporte au moins une ligne de données
    If TData.ListRows.Count > 0 Then
        ' on boucle sur les 10 premières colonnes
        For j = 1 To 10
            ' avec le combobox "cbo" & j en format sur deux digits
            With Me.Controls("cbo" & Format(j, "00"))
                ' on récupère les données de la colonne j
                Arr = TData.ListColumns(j).DataBodyRange.Value2
                ' on boucle sur la colonne afin d'en extraire les données uniques
                For i = LBound(Arr) To UBound(Arr)
                    Dico(Arr(i, 1)) = ""
                Next i
                ' on bascules ces données unique dans une variable "tablo"
                Arr = Dico.keys
                ' on tri ce tableau
                Call Tri(Arr, LBound(Arr), UBound(Arr))
                ' si on est en colonne 1 alors ce sont des dates
                If j = 1 Then
                    ' on boucle sur les valeurs et on les transforme en date et on remplie la liste de la combobox
                    For i = LBound(Arr) To UBound(Arr)
                        .AddItem Format(CDate(Arr(i)), "dd/mm/yyyy")
                    Next
                Else
                    ' sinon la liste du combobox correspond aux données du tablo
                    .List = Arr
                End If
                ' on affiche la première valeur de la liste
                .ListIndex = 0
            End With
            ' on vide le dictionnaire
            vide = Dico.RemoveAll
        ' on passe à la colonne suivante
        Next j
    End If
End Sub

@ bientôt

LouReeD

Rechercher des sujets similaires à "format date incompatible listbox"