Listbox multicolonne et convertion en nombre d'une colonne

Bonsoir à tous

En réalité j'ai deux question

1*Je ne sais pas où placer "format( , "0.00")" pour que mes 3 dernières colonnes se convertisse en nombre sur ma feuille!?

Les 3 dernières col de ma "listbox" le sont déjà!

    ListBox1.List(ListBox1.ListCount - 1, 2) = Format(TBPu.Value, "0.00€")
    ListBox1.List(ListBox1.ListCount - 1, 3) = Format(TBQty.Value, "0")
    ListBox1.List(ListBox1.ListCount - 1, 4) = Format(TBRes.Value, "0.00€")

2* Y a-t-il plus simple pour l'insertion des lignes?

Pour ajouter mes données de ma listbox vers ma feuille entre d'autres données

1

j'utilise ceci:

1- je compte, récupère et insère le nombre de ligne(s) de ma listbox, entre mes données existantes de ma feuille.

(ce code est appelé avant l'insertion de ma listbox dans le bouton)

Private Sub InsNbrLigLstBox()
n = ListBox1.ListCount
For i = 1 To n
        Rows("17:17").Insert Shift:=xlDown
    Next i
End Sub

2- Je récupère ma liste box et insère les données dans les lignes crées précédemment.

(et ici je ne sais pas où placer le "format...)

 
 Private Sub CommandButton_valider_Click()
    Dim Tbl, n%, k%

        If OptBoutCommande.Value = True Then
            InsNbrLigLstBox

 With ListBox1
               n = .ListCount: k = .ColumnCount: Tbl = .List
               End With
                Sheets("commande").Range("C17").Resize(n, k).Value = Tbl
                Sheets("commande").Range("G4").Value = Label31
        End If

Je pensais changer ma façon d'insérer mes données sur la feuil, ligne par ligne par ex.?

Mais il faut absolument insérer une ligne à chaque fois, aussi non il écrase le reste de mes données existantes..

Le fichier est en court d'amélioration et de néttoyage, soyez indulgent sur certains codes qui vous paressent

40projet.xlsm (199.16 Ko)

Bonsoir,

Ce qu'il faut que tu voies bien :

1) La fonction Format produit du texte, ce qui ira très bien avec les TextBox (qui ne contiennent que du texte) : des valeurs affectées aux TextBox, tu les mets en forme avec Format et elles s'affichent comme tu le souhaites...

2) En basculant les valeurs de tes TextBox dans la ListBox, tu n'as plus besoin d'utiliser Format, tu ne fais que transférer des valeurs texte, elles seront reprises dansla ListBox telles qu'elles sont.

3) Pour une valeur texte convertible en nombre, Excel fera généralement la conversion en nombre de façon automatique (s'il apparaît des cas particuliers, il faudra s'y pencher, mais tu peux considérer au départ que tu n'as plus besoin de t'en préoccuper). Par contre, de façon générale également, la présence du symbole monétaire bloquera la conversion en nombre et tu te retouveras avec du texte formaté dans la cellule (mais pas un nombre).

Il faudrait donc que tu élimines le symbole monétaire lors de l'affectation (y compris l'espace s'il y en a une).

Recueillant les valeurs de la ListBox dans un tableau, tu devrais pouvoir le faire au niveau du tableau : l'utilisation de la fonction Replace pour remplacer "€" ou " €" par rien ("") devrait tout à fait convenir.

Le format monétaire sera rétabli par le format de cellule.

Cordialement.

Bonjour Mferrand, et le forum

Merci pour ton éclaircissement , effectivement , rien que d'utiliser "format..." transforme en texte!

Juste le faite de retirer "l'espace" ou le "€" ne suffis pas! j'ai retiré la propriété de mes textbox et à l'insertion dans la listbox et le problème est résolus.

J'avais pourtant lu pas mal de sujet sur cette propriété, j'ai du zapper cette info

Comme quoi, quand on reste braqué sur quelque chose, on fini par ne plus voir l'essentiel de la solution.

..par contre une idée pour ma deuxième question?

2* Y a-t-il plus simple pour l'insertion des lignes?

Bonjour,

Dans le contexte, je ne pense pas. La méthode Add ajoute bien une ligne dans la ListBox mais n'affecte qu'un élément... (et tous les exemples de Microsoft procèdent ainsi, je n'ai pas encore vu qu'on puisse ajouter une ligne entière). La seule amélioration que tu puisses faire à mon avis est de trouver moyen de faire une boucle pour alimenter les colonnes... Mais globalement, la méthode me paraît excellente ! Récupérer le contenu de ta ListBox en tableau pour l'affecter globalement à ta plage cible, là tu as un gain indéniable...

Je ne suis peut-être pas tout à fait objectif ! Coincidence, je suis en train d'utiliser une ListBox de la même façon et j'en étais à la récupération en tableau quand je me suis penché sur ton post !

Si je trouve des moyens d'améliorer en poursuivant, je le ferai savoir...

J'ai d'ailleurs une interrogation que je veux creuser : en testant les indices du tableau prélevé, si en lignes j'ai bien les indices correspondant aux lignes de la ListBox, en colonnes ça m'affiche 9 comme indice maximal, soit 10 colonnes alors que je n'en ai que 5 (?).

Bonne journée.

Bonjour

j'ais fait un projet de Listbox Userform1 a toi de voir

et voir aussi le format des cellules

A+

Maurice

130projet.xlsm (191.29 Ko)

Re MFerrand et bonjour archer,

@MFerrand

  • Pour l'insertion de lignes sur ma feuille, je laisse comme ça pour le moment.
  • Une piste, peut-être, pour ton interrogation:

en testant les indices du tableau prélevé, si en lignes j'ai bien les indices correspondant aux lignes de la ListBox, en colonnes ça m'affiche 9 comme indice maximal, soit 10 colonnes alors que je n'en ai que 5 (?)

Ne serais-ce pas au fait q'une listbox ne peut contenir que 10 colonnes max (sans être l'alimentée par rowsource)!

Donc il t'afficherais le nbr max (10) et non celle remplie (5)?

@archer

Merci pour ta lecture et le travail que tu as fournis en codant le projet "Userform1", mais je ne voie pas où tu veux en venir.

Car ça ne répond pas à mon problème! qui, entre temps, est résolus.

Si tu pouvais me donnée ton idée et où tu voulais en venir, ça serait pas mal

Ne serais-ce pas au fait q'une listbox ne peut contenir que 10 colonnes max (sans être l'alimentée par rowsource)!

Donc il t'afficherais le nbr max (10) et non celle remplie (5)?

J'ai eu la même pensée, mais je trouve tout de même ça bizarre...

Cordialement.

Rechercher des sujets similaires à "listbox multicolonne convertion nombre colonne"