listbox multicolonne et convertion en nombre d'une colonne Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 2 novembre 2018, 01:10

Bonsoir à tous ;)

En réalité j'ai deux question :oops:

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.png
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 ::o :cry:
projet.xlsm
(199.16 Kio) Téléchargé 24 fois
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 2 novembre 2018, 03:14

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.
1 membre du forum aime ce message.
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 2 novembre 2018, 10:40

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.
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 2 novembre 2018, 10:43

..par contre une idée pour ma deuxième question?
2* Y a-t-il plus simple pour l'insertion des lignes?
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 2 novembre 2018, 12:00

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 ! :wink: 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 ! :lole:
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.
a
archer
Membre impliqué
Membre impliqué
Messages : 1'267
Appréciations reçues : 104
Inscrit le : 8 avril 2017
Version d'Excel : 2010

Message par archer » 2 novembre 2018, 12:38

Bonjour
j'ais fait un projet de Listbox Userform1 a toi de voir
et voir aussi le format des cellules
A+
Maurice
projet.xlsm
(191.29 Kio) Téléchargé 34 fois
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 2 novembre 2018, 16:02

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 ;)
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 2 novembre 2018, 16:59

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.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message