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

VBA Discussion :

Remplir listbox avec décimaux


Sujet :

VBA

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Points : 41
    Points
    41
    Par défaut Remplir listbox avec décimaux
    Bonjour,

    J'ai besoin de votre aide car je rencontre un problème pour remplir une listbox. Il faudrait que celle-ci puisse contenir des décimaux (les données que j'y importent sont décimales et j'aimerais conserver ce format ; càd éviter de multiplier par 1000 pour avoir des entiers).
    J'arrive à insérer des points sous la forme "12.054" mais il faudrait "12,054" car par la suite j'utilise les valeurs de la listbox dans différents calculs.

    Mon code est le suivant :

    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
    CommonDialog1.ShowOpen
    If CommonDialog1.FileName = "" Then MsgBox "Vous n'avez rien sélectionné": Exit Sub
    Open CommonDialog1.FileName For Input As #1
     
    Dim ligne As String
    Dim i As Integer
    Dim w As String
    Dim valeurs As Variant
    Dim sd As Variant
    Input #1, ligne
    w = InputBox("Quel est le séparateur des cordonnées ?" & VBA.Chr(13) & VBA.Chr(10) & "1ère coordonnées trouvées dans votre fichier :  " & VBA.Chr(10) & ligne)
    valeurs = Split(ligne, w)                                              'on sépare selon le séparateur entré plus haut
    Liste.Lstb_pts.AddItem (valeurs(0))
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 1) = valeurs(1)
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 2) = valeurs(2)
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 3) = valeurs(3)
     
    While Not EOF(1)                                                      
    Input #1, ligne
     
    valeurs = Split(ligne, w)
    Liste.Lstb_pts.AddItem (valeurs(0))
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 1) = valeurs(1)
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 2) = valeurs(2)
    Liste.Lstb_pts.List(Liste.Lstb_pts.ListCount - 1, 3) = valeurs(3)
     
    Wend
     
    Close #1
    Si je suis obligé de séparer les données par un " " et supprimer la inputbox ça ne me dérange pas.
    Il me semble que le problème est que dès qu'il rencontre une virgule le programme croit qu'il faut aller à la ligne.

    J'espère que c'est possible est que vous allez pouvoir m'aider !
    Merci par avance.

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    la listbox n'accorde aucune importance au séparateur décimal vu qu'elle ne gère que des strings.

    une possibilité :
    Une fois obtenu tes "nombres", tu peux employer la fonction Replace (cf aide vba) pour remplacer les points par des virgules sans problème.

    cordialement,

    Didier

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    j'ai utilisé "Line input" et plus aucun problème d'insertion.

    Cependant maintenant encore un petit problème. Le fichier de *.txt que j'importe dans ma listbox vient de calculs Matlab, et les séparateurs décimaux sont des points.
    J'aimerais alors lors de l'import dans ma listbox convertir ces points en virgule.
    Deux questions se posent alors :
    - à quel moment de mon code faire cette conversion : avant l'écriture dans la listbox ou après. Peut-être mieux, si c'est réalisable, de le faire avant, pour éviter de remplir 2 fois la listbox.
    - quel code écrire ? j'ai regarder dans l'aide la fonction replace mais pas évident encore une fois de m'en sortir seul ^^
    J'ai écris après l'insertion dans la listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i = 0 To Liste.Lstb_pts.ListCount - 1
    Replace(Liste.Lstb_pts.List(i, 0), ".", ",")
    Mais erreur : "attendu : ="
    Merci de votre aide !!

  4. #4
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Points : 41
    Points
    41
    Par défaut
    En utilisant ce qui suit ça roule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i = 0 To Liste.Lstb_pts.ListCount - 1
    Liste.Lstb_pts.List(i, 0) = Replace(Liste.Lstb_pts.List(i, 0), ".", ",")
    Merci

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

Discussions similaires

  1. [XL-2010] Remplir listbox avec données filtrés d'une feuille
    Par bibbip35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/10/2014, 14h36
  2. [XL-2010]Remplir listbox avec contenu oulook
    Par mayekeul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/12/2010, 11h25
  3. [VB6] Remplir une listbox avec access.
    Par Poustik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/06/2006, 11h43
  4. Réponses: 6
    Dernier message: 22/05/2006, 16h16
  5. Réponses: 3
    Dernier message: 19/01/2005, 15h50

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