Detailler la somme des particularité dans une listview

  • Initiateur de la discussion Initiateur de la discussion creolia
  • 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 !

creolia

XLDnaute Impliqué
Bonjour à tous

je viens vers vous car je recherche une solution pour détailler un texte dans une listview

je m'explique

dans ma listview en premiere collone j'ai ce genre de texte
"2 WCHC - 15 WCHR - 1 WCHS"
"3 WCHC - 11 WCHR - 3 WCHS"
"5 WCHC - 9 WCHR - 3 WCHS"

je souhaiterais parcourir toute la colonne 1 et copier en collone 2 la somme de chaque particularité des valeur ci dessus comme ceci

colonne 2
10 wchc
35 wchr
17 wchs

je sais c'est trés complexe mais j'aimerais trouver une solution avec votre aide svp merci d'avance
 

Pièces jointes

Re : Detailler la somme des particularité dans une listview

Bonjour Creolia

Et sur qu'elle ligne de ta listview veux-tu cette somme ?

Si je puis me permettre, étrange façon de procéder ..

A+
 
Re : Detailler la somme des particularité dans une listview

bonjour BrunoM45

si possible

dans la seconde colonne l'un en dessous de l'autre

exemple

10 wchc
35 wchr
17 wchs

mais si tu à une autre idée s'approchant du résultat que je souhaite je suis ouvert je te remerci d'avance
 
Re : Detailler la somme des particularité dans une listview

bonjour brunoM45 bonjour laetitia90 merci énormément pour votre aide que je vais tenter d'adapter à mon projet mais c'est bien cela que je cherchais.

en revanche j'ai certaine question sur l’évolution de cette macro .
si mes particularité augmente ou change de nom dois je le modifier manuellement dans la macro

exemple1: "2 WCHC - 15 WCHR - 1 WCHS - 4 UM" ou simplement "15 WCHR - 1 WCHS"

en gros ma question est es ce que cette macro est dynamique ou statisque s'adapte t'elle au différent particularité ou pas sachant que dans mon domaine qui est l'assistant aero nautique j'ai à peut prés 200 particularité le format de base reste valeur Particularité - mais sa peut etre un BLD un UM .......

merci d'avance de votre aide que vous m'avez déja apporter
 
Re : Detailler la somme des particularité dans une listview

Bonjour Creolia,

Dommage que tu ne l'es pas précisé avant 🙄
le code que j'ait fait est statique en l'état et ne prends en compte que les 3 particularités

Il faudrait changer le code avec une boucle pour les autres particularités éventuelles ...

Petite question subsidaire, si tu as 3 ligne de données mais avec 4 particularités,
comme tu souhaites le faire, comment afficher la 4ème particularité ??

A+
 
Re : Detailler la somme des particularité dans une listview

Bonjour brunoM45 pour répondre à ta question je pense evidement que je devrais ajouter une ligne supplementaire mais là j'avous je suis un peut perdu j'etait partis sur cette solution car elle semblais logique.
mais au lieu de mettre le résultat en colonne il serais peut etre plus facile de le mettre sur une même ligne quand pense? svp
 
Re : Detailler la somme des particularité dans une listview

Re,

Ce que je ferais personnellement,
c'est rajouter une zone de texte en dessous dans laquelle j'inscrirais les totaux

A+
 
Re : Detailler la somme des particularité dans une listview

Re,

Ci-joint le fichier avec le code refondu pour X particularités (sous réserve de bugs)
et la modification dans l'USF

Je n'ai pas supprimer la colonne "Détail"

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : Detailler la somme des particularité dans une listview

Re Bonjour BrunotM45 tu es génial sa fonctionne du tonerre j'ai pas détecter de bug à priorie il est parfait je m'empresse de l'adapter à mon projet et je donnerais des nouvellles dés j'aurais tous tester encore un grand grand merci
 
Re : Detailler la somme des particularité dans une listview

Bonjour BrunotM45 et Habitude

en tentant d'adapter vos code à mon projet j'ai remarquer que vous avez utiliser un autre mode de chargement des donnée dans la list view sachant que j'ai différente façon d'alimenter cette listview en trotte un filtrage par année mois compagnie ect ect .
votre solution qui est excellente deviens très difficile pour moi à comprendre et à adapter a tous ses cas figure.

Comment pourrais avoir le même résultat que BrunoM45 propose en se basant sur les données déja pésent dans la listview sans le recharger juste un bouton qui me calcule le détail sans devoir recharger ma listview donc sans modifier toute les façon dont j'alimente ma listview.

si cela est possible pouvez vous m'aider à le faire en me disans les ligne à retiré de la macro dans le cas contraire je comprendrais bien que sa devienne plus complexe et infaisable et je me passerais de ce détail qui est trés utile pour moi.

Code:
Sub charge()
  Dim Ind As Integer  ' Indice
  Dim IndP As Integer  ' Position de la particularité dans le tableau
  Dim Lig As Long ' Ligne du tableau
  Dim TvCel() As String  ' Tableau des valeurs de la cellule
  Dim TabP As New Collection  ' Colelction (Tableau sans doublon) des particularités
  Dim TabTot() As Single  ' Tableau des sommes des valeurs
  Dim Txt As String ' Concatenation des valeurs
  Dim VCel As String  ' Contenu de la cellule
  Dim sPart As String  ' Libellé  de la particularité
  Dim vPart As String  ' Valeur de la particularité
  Dim PosEspace As Integer  ' Position de l'espace

  ListView1.ListItems.Clear
  With ListView1
    .View = lvwReport
    .FullRowSelect = True
    '.Gridlines = True
    For Lig = 1 To Sheets("Feuil1").Range("A" & Cells.Rows.Count).End(xlUp).Row
      ' Récupérer la valeur de la cellule
      VCel = Trim(Sheets("Feuil1").Cells(Lig, 1))
      ' Créer le tableau des valeurs avec SPLIT (plus simple)
      TvCel = Split(VCel, " - ")
      For Ind = 0 To UBound(TvCel)
        ' Trouver l'espace séparant la valeur de al particularité
        PosEspace = InStr(1, TvCel(Ind), " ")
        ' Mémoriser la valeur
        vPart = Left(TvCel(Ind), PosEspace - 1)
        ' Mémoriser le texte de la particularité
        sPart = Mid(TvCel(Ind), PosEspace + 1)
        '
        ' Ajouter la particularité à la collection
        On Error Resume Next
        TabP.Add sPart, sPart
        On Error GoTo 0
        For IndP = 1 To TabP.Count
          If TabP(IndP) = sPart Then Exit For
        Next IndP
        '
        ' Vérifier la dimension des valeurs avec celui de la collection
        On Error Resume Next
        If UBound(TabTot) < TabP.Count Then
          ' Redimensionner d'une ligne
          ReDim Preserve TabTot(TabP.Count)
        End If
        On Error GoTo 0
        ' Totaliser la valeur de la particularité
        TabTot(IndP - 1) = TabTot(IndP - 1) + Val(vPart)
      Next Ind
      ' Ajouter l'item
      .ListItems.Add , , VCel
      '.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Feuil1").Cells(Lig, 2)
    Next Lig
    Txt = ""
    For IndP = 1 To TabP.Count
      If Txt = "" Then
        Txt = TabTot(IndP - 1) & " " & TabP(IndP)
      Else
        Txt = Txt & " / " & TabTot(IndP - 1) & " " & TabP(IndP)
      End If
    Next IndP
    Me.TextBox1.Value = Txt
  End With
End Sub
 
- 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

Réponses
3
Affichages
534
Retour