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

XL 2013 insérer ligne vide sur listvew en fonction d'un critère

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 !

osiris150

XLDnaute Occasionnel
Bonjour à tous,

J'utilise une listview avec beaucoup de lignes et pour des raisons de visibilité je souhaiterais pouvoir insérer une ligne vide entre chaque référence de commande. Je vous ai mis en pièce jointe le fichier test de ma listview actuelle + une copie d'écran avec ce que je souhaiterais comma résultat. Je ne sais pas si c'est possible et compliqué. En tous cas si quelqu'un pouvait regarder si c'est faisable.
Merci par avance.
Cordialement
 

Pièces jointes

  • listview osiris.xlsm
    listview osiris.xlsm
    948.6 KB · Affichages: 25
  • 09-10-2018 09-59-52.jpg
    171.1 KB · Affichages: 35
Bonjour Mr Boisgontier et merci pour votre exemple qui répond à ce que je recherche mais je travaille avec des listview uniquement car tout mon outil de travail en utilise avec beaucoup d'options et du coup je ne peux pas tout rechanger pour passer sur des listbox.
Pensez-vous que sur une listview cela soit possible ? Sinon tans pis je me résignerai 🙂
Merci
 
Bonjour osiris150, JB,

La boucle de remplissage de la ListView :
Code:
            For L = 1 To UBound(TabTemp, 1)
                If L > 1 Then
                    If TabTemp(L, 11) <> TabTemp(L - 1, 11) Then
                        .ListItems.Add , , ""
                        For Vcol = 1 To 9
                            .ListItems(X).ListSubItems.Add , , ""
                        Next
                        X = X + 1
                    End If
                End If
                .ListItems.Add , , TabTemp(L, 1)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 3)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 4)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 6)
                .ListItems(X).ListSubItems.Add , , Format(TabTemp(L, 7), "# ##0.00")
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 8)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 11)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 13)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 14)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 15)
                X = X + 1
            Next
Le tableau source est supposé trié sur les références (colonne K).

Fichier joint.

A+
 

Pièces jointes

Bonjour Jean-Marie

Votre version est excellente et fonctionne parfaitement. Votre code est pour moi trop complexe à comprendre mais je vais tout de même essayer de l'adapter à mes besoins. Celui de Job75 marchait aussi mais j'avais un souci lorsque je lançais une recherche. Le code ne fonctionnait plus correctement au niveau tri.... Pour les couleurs, ce n'est pas très important j'avais laissé cette partie dans l'exemple mais ne pas s'en préoccuper.
Merci pour votre aide !! Passez une excellente journée
Cordialement.
 
Bonjour osiris150, Jean-Marie,
Celui de Job75 marchait aussi mais j'avais un souci lorsque je lançais une recherche. Le code ne fonctionnait plus correctement au niveau tri....
Vous voulez insérer des lignes vides même avec la recherche ? Pas compliqué, ajoutez le même code dans la TextBox1_Change :
Code:
                If L > 1 Then
                    If TabTemp(L, 11) <> TabTemp(L - 1, 11) Then
                        .ListItems.Add , , ""
                        For I = 1 To 9
                            .ListItems(X).ListSubItems.Add , , ""
                        Next
                        X = X + 1
                    End If
                End If
Bonne journée.
 
Bonjour job75

J'ai mis comme vous m'avez dit le code dans la partie TextBox1_Change mais ça ne marche pas bien.
en effet si je fais une recherche par exemple avec le libellé "lampe" j'ai des espaces important entre chaque ligne.
Voir copie écran et fichier.
Merci
 

Pièces jointes

Re,

Mais non ça n'allait pas, en fait il faut mémoriser la dernière référence filtrée :
Code:
    For L = 1 To UBound(TabTemp, 1)
 
        If UCase(TabTemp(L, 3)) Like UCase(TextBox1 & "*") Or _
         UCase(TabTemp(L, 4)) Like UCase("*" & TextBox1 & "*") Or _
         UCase(TabTemp(L, 11)) Like UCase("*" & TextBox1 & "*") Or _
         UCase(TabTemp(L, 14)) Like UCase("*" & TextBox1 & "*") Then
        
                If memo <> "" Then
                    If TabTemp(L, 11) <> memo Then
                        .ListItems.Add , , ""
                        For I = 1 To 9
                            .ListItems(X).ListSubItems.Add , , ""
                        Next
                        X = X + 1
                    End If
                End If
               
                .ListItems.Add , , TabTemp(L, 1)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 3)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 4)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 6)
                .ListItems(X).ListSubItems.Add , , Format(TabTemp(L, 7), "# ##0.00")
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 8)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 11): memo = TabTemp(L, 11) 'mémorisation
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 13)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 14)
                .ListItems(X).ListSubItems.Add , , TabTemp(L, 15)
         
               X = X + 1
        End If
       
    Next
Fichier (2).

A+
 

Pièces jointes

- 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…