Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Chrige

XLDnaute Occasionnel
Bonjour à tous

J'ai un problème avec mes valeurs décimales dans mon ListView
J'arrive bien à paramétrer mes valeur avec 2 chiffres après le séparateur décimal
Mais du coup je transforme ma valeur décimale d’origine en valeur texte avec une virgule au lieu du point .

Exemple Origine : 5.45 devient dans mon ListView 5,45

Je n'arrive pas à trouver la solution
Un petit coup de main et une explication sur mon erreur ne serait pas de refus

Merci
 

Pièces jointes

  • ListView et Valeurs Décimales.xlsm
    29.9 KB · Affichages: 29
  • ListView et Valeurs Décimales.xlsm
    29.9 KB · Affichages: 32
  • ListView et Valeurs Décimales.xlsm
    29.9 KB · Affichages: 39

Papou-net

XLDnaute Barbatruc
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonsoir Chrige,

Vérifie en modifiant ton code comme ceci:

Code:
Private Sub Lv_ItemClick(ByVal li As MSComctlLib.ListItem)
  With ActiveCell.Resize(1, 2)
    If li = "" Then
      .Interior.ColorIndex = xlNone 'à connaître aussi
      .Value = ""
    Else
      .Interior.Color = Lv.ListItems(li.Index).ForeColor
      ActiveCell = li
      .Interior.Color = Lv.ListItems(li.Index).ForeColor
      If Not Lv.ListItems(li.Index).ListSubItems(2) = "" Then
        ActiveCell(1, 3).NumberFormat = "0.00"
        ActiveCell(1, 3) = CDbl(Lv.ListItems(li.Index).ListSubItems(2))
      End If
    End If
  End With
  ActiveCell(1, 3).Select
  Unload Me
End Sub

Cordialement.
 

ChTi160

XLDnaute Barbatruc
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonjour Chrige
Bonjour le fil
Bonjour le Forum
je ne suis pas sur d'avoir compris ou se trouve le Problème dans la ListView ou lors du transfert dans la feuille ???

ci dessous le code qui met en forme les données dans la ListView: "Un point au lieu d'une Virgule"
Code:
                 Private Sub UserForm_Initialize()
  Dim C As Range
  Dim LstVitem As Object
  Dim LstVSitem As Object
  Dim Ws As Worksheet
  Dim DerLgn As Integer
      With Lv
        With .ColumnHeaders
            .Clear
            .Add , , "Code", 30
            .Add , , "Définition", 130
            .Add , , "Montant", 50, lvwColumnRight
        End With
            .Gridlines = True
            .FullRowSelect = True
            .View = lvwReport
       End With
Set Ws = Worksheets("Tableau")
DerLgn = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row - 1
  For Lgn = 1 To DerLgn
   With Lv
    Set LstVitem = .ListItems.Add(, , Ws.Cells(Lgn, 1).Value)
     With LstVitem
                        .ForeColor = Ws.Cells(Lgn, 1).Interior.Color
        Set LstVSitem = .ListSubItems.Add(, , Ws.Cells(Lgn, 2).Value)
            With LstVSitem
                        .ForeColor = Ws.Cells(Lgn, 1).Interior.Color
            End With
        Set LstVSitem = .ListSubItems.Add(, , Application.Substitute(Format(CDbl(Ws.Cells(Lgn, 3).Value), "0.00"), ",", "."))
            With LstVSitem
                        .ForeColor = Ws.Cells(Lgn, 3).Interior.Color
            End With
            
     End With
     End With
    Next
      Set LstVitem = Nothing
      Set LstVSitem = Nothing
End Sub




Bonne journée
Amicalement
Jean Marie
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

salut

avec la fonction "Replace"
Code:
'ici........
Lv.ListItems(Lv.ListItems.Count).ListSubItems.Add , , Replace(Format(C(1, 3), "0.00"), ",", ".")

 'et là ....
ActiveCell(1, 3) = Replace(Lv.ListItems(li.Index).ListSubItems(2), ".", ",")
pour l'aller et le retour.
 

Chrige

XLDnaute Occasionnel
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonjour à tous

Je vois que j'ai reçu plusieurs solutions
Je commence par la 1ère

Bonjour Papou-Net

Ta méthode est très bien, mais comme je souhaitais aussi avoir un point au lieu de la virgule dans mon ListView
J'ai rajouté dans mon initialisation

Code:
Lv.ListItems(Lv.ListItems.Count).ListSubItems.Add , , Replace(Format(C(1, 3), "0.00"), ",", ".")

Puis j'ai repris ton code en supprimant la fonction "CDbl"

Code:
      If Not Lv.ListItems(li.Index).ListSubItems(2) = "" Then
        ActiveCell(1, 3).NumberFormat = "0.00"
        ActiveCell(1, 3) = (Lv.ListItems(li.Index).ListSubItems(2))
      End If

Comme cela c'est parfait
Merci beaucoup



------------------------

Bonjour ChTi160

Je vois que c'est une technique différente, mais peut être un peu plus compliquée
Elle fonctionne parfaitement
L'avantage c'est que tout se ce passe au niveau de l'initialisation
Cependant du coup il faudrait faire un complément car on se retrouve avec des 0 lorsqu'il n'y a pas de nombre.

Merci aussi pour ton aide

------------------------

Bonjour Si

Je comprends bien la première ligne puisque j'y avais pensé moi-même
Je pensais ma solution tordue, mais puisque tu me la propose aussi
Je vais me faire de l'autosatisfaction d'avoir eu une idée censée :rolleyes:

Par contre , je ne comprends pas le sens de
Code:
ActiveCell(1, 3) = Replace(Lv.ListItems(li.Index).ListSubItems(2), ".", ",")
??

Merci pour ton aide
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonjour Chrige
bonjour le fil
Bonjour le Forum

voila ce que j'ai modifié pour ne plus afficher les Valeurs Nulles(Vides)
Code:
With LstVSitem
                        .ForeColor = Ws.Cells(Lgn, 1).Interior.Color
            End With
        Set LstVSitem = .ListSubItems.Add(, , IIf(Ws.Cells(Lgn, 3).Value <> "", _
                         Application.Substitute(Format(CDbl(Ws.Cells(Lgn, 3).Value), "0.00"), ",", "."), "")) 'Dans cette Ligne un test IIf
            With LstVSitem
                        .ForeColor = Ws.Cells(Lgn, 3).Interior.Color
            End With
Bonne Journée
Amicalement
Jean Marie
 
Dernière édition:

Chrige

XLDnaute Occasionnel
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonjour ChTi160, Bonjour à tous

J'ai un problème avec le code
Pourrais-tu me renvoyer le code complet
Car pour moi cela bloque au niveau de
Code:
Set LstVSitem = .ListSubItems.Add(, , IIf(Ws.Cells(Lgn, 3).Value <> "", _
                         Application.Substitute(Format(CDbl(Ws.Cells(Lgn, 3).Value), "0.00"), ",", "."), "")) 'Dans cette Ligne un test IIf
           With LstVSitem

Erreur de compilation
Membre de méthode ou de données introuvables

Merci
A+
 

Chrige

XLDnaute Occasionnel
Re : Valeur décimale dans un ListView avec 2 chiffres après le séparateur décimal

Bonjour Si, Chti160, Papou.net

Merci pour ta réponse Si
Mais non je ne souhaitais pas garder du tout de ","
La 1ère ligne me suffisait
Mais merci quand même, cela aurait pu être le cas.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 494
Membres
103 234
dernier inscrit
matteo75654548