Autres Listview et format de nombre

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,
Voilà je me lance dans l'utilisation de LISTVIEW!
J'ai bien avancé mais je butte sur le format des nombres affichés dans la colonne.
Je voudrai qu'ils s'affichent au format monétaire dans la colonne 5 de ma listview mais je n'y arrive pas.
Soit j'ai une erreur
soit je n'ai pas d'erreur mais le résultat n'est pas ce que j'attends. (### ###,## €)

Quelqu'un peut-il me donner une solution ?
Un grand merci par avance.

VB:
k = Worksheets("2020").Range("A65536").End(xlUp).Row

'--- Les données sont dans la 2020.
'--- La première ligne, de la colonne A à J contient les entêtes.
    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , Worksheets("2020").Cells(1, 1), 70
            .Add , , Worksheets("2020").Cells(1, 2), 200
            .Add , , Worksheets("2020").Cells(1, 3), 60
            .Add , , Worksheets("2020").Cells(1, 4), 200
            .Add , , Worksheets("2020").Cells(1, 5), 100, lvwColumnRight    '-- nombre rangé à droite
            .Add , , Worksheets("2020").Cells(1, 6), 30
            .Add , , Worksheets("2020").Cells(1, 7), 100
            .Add , , Worksheets("2020").Cells(1, 8), 100
            .Add , , Worksheets("2020").Cells(1, 9), 80
            .Add , , Worksheets("2020").Cells(1, 10), 300
        End With

'--- Les autres lignes contiennent les données
        For Each Cell In Worksheets("2020").Range("A2:A" & k)
            X = X + 1
            .ListItems.Add , , Cell
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 1)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 2)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 3)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 4)

            '--- c'est cette ligne que je ne trouve pas ----
            .ListItems(X).ListSubItems.Add , , Format(Cell.Offset(0, 5), "# ##0.00 €")  '---nombre au format monétaire
            '-----------------------------------------------
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 6)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 7)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 8)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 9)
        Next
    End With
     '--------------------------------------------------
     '--- Spécifie l'affichage en mode "Détails"
    ListView1.Gridlines = True
    ListView1.FullRowSelect = True
    ListView1.View = lvwReport
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir

Si ca peut t'aider, une démo que j'avais faite pour ce forum avec le format monétaire sur une colonne ListView...

Bonne soirée
@+Thierry
 

Pièces jointes

  • XLD_terrier_ListView_Filter_Test_v01.xlsm
    47.8 KB · Affichages: 40

patricktoulon

XLDnaute Barbatruc
bonjour tout les deux
Attention au formatage dans la listview
si une comparaison , recherche , modif sur sheet par la listview c'est choux blanc la donnée n'est plus la même

ne pas confondre une cellule avec 1200 formatée 1.200,00 et envoyé 1.200,00 dans une cellule ;)

si la donnée est déjà formatée dans la cellule c'est a dire qu'elle contient 1200 et formatée en 1.200,00 alors faire simple Cell.Offset(0, 5) .text et non ".value"
;)
 

FOUQUET Yves

XLDnaute Occasionnel
Oui mais si j'écris ainsi, cela me donne une erreur:
VB:
.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 4)

'ligne à formater Currency'          
.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5).Text, Format("#### #,## €")
           
.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 6
)
 

Pièces jointes

  • image erreur.jpg
    image erreur.jpg
    296.8 KB · Affichages: 31

patricktoulon

XLDnaute Barbatruc
re
non
.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5).Text

et c'est tout !!!
a condition comme je l'ai dit plus haut ;que le format dans la cellule est bien celui desiré
sinon c'est
.ListItems(X).ListSubItems.Add , , Format(cell.offset(0, 5).value, "#### #,## €")

je crois ,qu'un exemple de fichier avec quelque ligne serait utile ;)
 

FOUQUET Yves

XLDnaute Occasionnel
Fichier trop volumineux..
Voilà le code complet.
2020 est la feuille ou sont rangées les données.
VB:
'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

Dim exercice As String
Dim Rng As Range

Dim k As String
Dim LargeurEcran As Variant
Dim HauteurEcran As Variant
Dim LargeurUserf As Variant
Dim HauteurUserf As Variant

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub CommandButton2_Click()  '---- imprimer ----
With Sheets(exercice)
 .PageSetup.PrintArea = "A1:J" & Ws.[A569].End(xlUp).Row
        .PageSetup.PaperSize = xlPaperA4
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
        .PrintOut Copies:=1, Collate:=True
End With
End Sub

Private Sub UserForm_initialize()

Dim Cell As Range
Dim X As Long 'Byte
Dim k As Integer
Dim derniereLigne As Long

LargeurEcran = GetSystemMetrics(0)
HauteurEcran = GetSystemMetrics(1)
HauteurUserf = HauteurEcran * 0.72
LargeurUserf = LargeurEcran * 0.75
Me.Move 1, 1, LargeurUserf, HauteurUserf  'pour tout modifier

ListView1.Width = LargeurUserf * 0.98
ListView1.Height = HauteurUserf * 0.85

exercice = "2020"
TextBox2 = exercice
Worksheets(exercice).Select

k = Worksheets(exercice).Range("B65536").End(xlUp).Row

    'Les données sont dans la Feuil2.
    'La premiere ligne, de la colonne A à P contient les entêtes.
    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , Worksheets(exercice).Cells(1, 1), 70    'Date
            .Add , , Worksheets(exercice).Cells(1, 2), 200   'Banque
            .Add , , Worksheets(exercice).Cells(1, 3), 70    'Nature
            .Add , , Worksheets(exercice).Cells(1, 4), 180   'libelle nature
            .Add , , Worksheets(exercice).Cells(1, 5), 80, lvwColumnRight     'Montant
            .Add , , Worksheets(exercice).Cells(1, 6), 30    'Just
            .Add , , Worksheets(exercice).Cells(1, 7), 150   'Projet
            .Add , , Worksheets(exercice).Cells(1, 8), 90    'Information
            .Add , , Worksheets(exercice).Cells(1, 9), 90    'Numero operation
            .Add , , Worksheets(exercice).Cells(1, 10), 450  'Libelle operation
                  
        End With
'Les autres lignes contiennent les données
        For Each Cell In Worksheets(exercice).Range("A2:A" & k)
            X = X + 1
            .ListItems.Add , , Cell
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 1)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 2)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 3)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 4)
            
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5)
           ' .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5).Text
           ' .ListItems(X).ListSubItems.Add , , Format(Cell.Offset(0, 5).Value, "#### #,## €")
            
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 6)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 7)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 8)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 9)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 10)
        Next
    End With
  
    '--------------------------------------------------
    
    'Spécifie l'affichage en mode "Détails"
    
    ListView1.View = lvwReport

End Sub
 

Pièces jointes

  • image listing.jpg
    image listing.jpg
    184.8 KB · Affichages: 26
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
Voilà le code qui fonctionne.
Visiblement c'est un soucis de numero de colonne. Les nombres en colonne 5 sont formatés avec ordre 4...
La colonne MONTANT N°5 dans les entêtes
.Add , , Worksheets(exercice).Cells(1, 5), 80, lvwColumnRight 'Montant

est formatée en Currency en quatrième ligne
.ListItems(X).ListSubItems.Add , , Format(Cell.Offset(0, 4).Text, "Currency")

Et j'ai passé mon dimanche après midi là dessus!!!!

VB:
'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

Dim exercice As String
Dim Rng As Range

Dim k As String
Dim LargeurEcran As Variant
Dim HauteurEcran As Variant
Dim LargeurUserf As Variant
Dim HauteurUserf As Variant

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub CommandButton2_Click()  '---- imprimer ----
With Sheets(exercice)
 .PageSetup.PrintArea = "A1:J" & Ws.[A569].End(xlUp).Row
        .PageSetup.PaperSize = xlPaperA4
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 1
        .PrintOut Copies:=1, Collate:=True
End With
End Sub

Private Sub UserForm_initialize()

Dim Cell As Range
Dim X As Long 'Byte
Dim k As Integer
Dim derniereLigne As Long

LargeurEcran = GetSystemMetrics(0)
HauteurEcran = GetSystemMetrics(1)
HauteurUserf = HauteurEcran * 0.72
LargeurUserf = LargeurEcran * 0.75
Me.Move 1, 1, LargeurUserf, HauteurUserf  'pour tout modifier

ListView1.Width = LargeurUserf * 0.98
ListView1.Height = HauteurUserf * 0.85

exercice = "2020"
TextBox2 = exercice
Worksheets(exercice).Select

k = Worksheets(exercice).Range("B65536").End(xlUp).Row

    'Les données sont dans la Feuil2.
    'La premiere ligne, de la colonne A à P contient les entêtes.
    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , Worksheets(exercice).Cells(1, 1), 70    'Date
            .Add , , Worksheets(exercice).Cells(1, 2), 200   'Banque
            .Add , , Worksheets(exercice).Cells(1, 3), 70    'Nature
            .Add , , Worksheets(exercice).Cells(1, 4), 180   'libelle nature
            .Add , , Worksheets(exercice).Cells(1, 5), 80, lvwColumnRight     'Montant
            .Add , , Worksheets(exercice).Cells(1, 6), 30, lvwColumnCenter   'Just
            .Add , , Worksheets(exercice).Cells(1, 7), 150   'Projet
            .Add , , Worksheets(exercice).Cells(1, 8), 90    'Information
            .Add , , Worksheets(exercice).Cells(1, 9), 90    'Numero operation
            .Add , , Worksheets(exercice).Cells(1, 10), 450  'Libelle operation
                  
        End With
'Les autres lignes contiennent les données
        For Each Cell In Worksheets(exercice).Range("A2:A" & k)
            X = X + 1
            
            .ListItems.Add , , Cell
          
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 1)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 2)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 3)
          
            .ListItems(X).ListSubItems.Add , , Format(Cell.Offset(0, 4).Text, "Currency")
            
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 6)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 7)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 8)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 9)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 10)
        Next
    End With
  
    '--------------------------------------------------
    
    'Spécifie l'affichage en mode "Détails"
    
    ListView1.View = lvwReport

End Sub
 

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal