Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Alimenter ListView avec format des cellules lues

  • Initiateur de la discussion Initiateur de la discussion ludo27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ludo27

XLDnaute Junior
Bonjour,
j'alimente un ListView à partir d'un range de cellules.

Je voudrais que le format des valeurs dans le ListView soit le même que celui des cellules lues.


Pour ajouter une colonne au ListView j'utilise :

Code:
lv.ListItems(lLi).ListSubItems.Add , , rgData.Cells(lLi, lCol).Value
qui marche très bien pour copier les valeurs.

je sais qu'il existe la fonction Format pour mettre un format dans le ListView par contre je ne sais pas récupérer le format de la cellule à copier.

Je voudrais utiliser une syntaxe comme :

Code:
lv.ListItems(lLi).ListSubItems.Add , , Format(rgData.Cells(lLi, lCol).Value, [I][COLOR="Blue"]Format de rgData.Cells(lLi, lCol)[/COLOR][/I])

Si quelqu'un a une idée pour récupérer la valeur du truc en bleu .... 😉
 
Re : Alimenter ListView avec format des cellules lues

bonjour ludo27

A tester:

Code:
lv.ListItems(lLi).ListSubItems.Add , , Format(rgData.Cells(lLi, lCol).Value, [I][COLOR=blue]rgData.Cells(lLi, lCol).Numberformat[/COLOR][/I])
 
Re : Alimenter ListView avec format des cellules lues

Merci PierreJean,
j'ai un message
Dépassement de capacité
sur la 25ème colonne; il s'agit d'un nombre à 7 chiffres.

En fait NumberFormat me renvoie "General" quelque soit le type lu.
NumberFormatLocal renvoie "Standard" quelque soit le type lu.


Sinon j'avais essayé d'utiliser TypeName pour appliquer un format "à la main" en fonction de "String, Double, Integer" mais la fonction renvoie Double pour des double ou pour des Integer.

Code:
lv.ListItems(lLi).ListSubItems.Add , , Format(rgData.Cells(lLi, lCol).Value, IIf(TypeName(rgData.Cells(lLi, lCol).Value) = "Double", "##,##0.00", ""))
 
Dernière édition:
Re : Alimenter ListView avec format des cellules lues

j'ai trouvé quelquechose de moche mais qui fait ce qu'il faut que je fasse 😉 :

Je teste s'il sagit d'un nombre à virgules ou d'un nombre sans virgules ou d'autre chose :

Code:
vValue = rgData.Cells(lLi, lCol).Value
          'lv.ListItems(lLi).ListSubItems.Add , , rgData.Cells(lLi, lCol).Value
          If IsNumeric(vValue) Then
            If vValue <> Int(vValue) Then
                lv.ListItems(lLi).ListSubItems.Add , , Format(rgData.Cells(lLi, lCol).Value, "##,##0.00")
                Else: lv.ListItems(lLi).ListSubItems.Add , , Format(rgData.Cells(lLi, lCol).Value, "##,##0")
            End If
            Else: lv.ListItems(lLi).ListSubItems.Add , , rgData.Cells(lLi, lCol).Value
            End If
 
Re : Alimenter ListView avec format des cellules lues

Bonsoir le fil,

je pense que tu n'as pas besoin de vérifié si la cellule est un nombre, en complément de Bebere:

Code:
      For lLi = 1 To nbLi
        'Remplissage des colonnes 1 à nbCol dans la lLième ligne
        For lCol = 1 To nbCol
          lv.ListItems(lLi).ListSubItems.Add , , rgData.Cells(lLi, lCol).Text
        Next lCol
      Next lLi
 
Re : Alimenter ListView avec format des cellules lues

Merci beaucoup pour vos réponses.

En effet ça marche très bien avec
Code:
rgData.Cells(lLi, lCol).Text
au lieu de
Code:
rgData.Cells(lLi, lCol).Value

Pourquoi n'y ai-je pas pensé ?

Bravo 😉
 
salut

est ce que rgData est declarer range!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…