remplissage listview

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 !

Macpoy

XLDnaute Impliqué
bonsoir le forum,
Autodidacte, je ne travaille qu'en copier coller, je change des paramètres, et parfois j'obtiens ce que je souhaites !!
mais là............. je cale !!!!!
listview est un super outil que j'ai découvert grâces aux nombreuses recherches sur cet EXCELlent site; je ne suis pas loin d'obtenir ce que je qualifierais de MA perfection !!!! (pourquoi est ce que mes chevilles enflent ???)
mais bon quand on comprend rien ...... on reste sur le quai !!!!!

mon petit PB qui stoppe la progression de mon projet, est que je n'arrive pas à remplir correctement ma listview afin de l'exploiter par la suite (ressortir les lignes sélectionnées dans une feuille ).
je vous joint un fichier très épuré..... de 1.5 mo j'ai du le réduire à 236 ko pour le passer en fichier joint.
je vous remercie d'avance de vous pencher sur ce petit soucis.
 
Dernière édition:
Re : remplissage listview

bonjour le forum,
excusez moi de faire un up, mais j'aimerais bien un petit coup de main svp.
depuis ce matin 7 heures je tourne en rond sans résultats !!!
ce n'est pourtant pas faute de modifier (au hasard ) les macros de ce classeur !!!
agrrrrrr !!!
 
Re : remplissage listview résolu !!!!!

Re le forum,
EUREKA !!!!

enfin j'ai compris ce qui n'allait pas.
je n'avais pas donné de valeur à dimcol !!!!

Private Sub Initlistview()
Const nulititre As Long = 2 ' numéro de ligne avec titre
Dim dimcol(1 To 7) As Integer ' nombre de colonne
Dim J As Long
Dim i As Integer
i = 1

dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1
dimcol(i) = 50: i = i + 1

ListView1.CheckBoxes = True
ListView1.ListItems.Clear
'' '----- remplissage ListView------------------------
With ListView1
'Définit le nombre de colonnes et Entêtes

With .ColumnHeaders
'Supprime les anciens entêtes
.Clear
'Ajoute x colonnes en spécifiant le nom de l'entête
'et la largeur des colonnes
.Add , , "Mois", 60
.Add , , "Dates", 80
.Add , , "Durée", 50
.Add , , "Type d'intervention", 50
.Add , , "Prix HT", 50
.Add , , "TVA", 30
.Add , , "Montant", 50
End With
''
'' 'Remplissage des colonnes



For i = nulititre + 1 To ActiveSheet.Range("B365").End(xlUp).Row
' ' colonne
On Error GoTo suite1
' , "l" & i
.ListItems.Add , "l" & i, ActiveSheet.Cells(i, 1)

For J = 2 To ActiveSheet.Range("IV" & nulititre).End(xlToLeft).Column
If dimcol(J) <> 0 Then
.ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(i, J)


End If
Next J

suite1:
Resume Next
Next i


'--------------------------------------------------
'Spécifie l'affichage en mode "Détails"

.View = lvwReport 'affichage en mode Rapport
' .Gridlines = True 'affichage d'un quadrillage
'' .FullRowSelect = True 'Sélection des lignes comlètes
.LabelEdit = 1 'empêcher la modification manuelle des données en spécifiant la valeur 1
.MultiSelect = True 'Pour autoriser la multi sélection, vous devez tout d'abord passer la propriété Multiselect à True. Ensuite sélectionnez les lignes en gardant enfoncée la touche Ctrl.

End With
cmdOK.Visible = True
cmdUndo.Visible = True

End Sub

bonne journée à tous.
 
Re : remplissage listview

Bonjour

La macro de remplissage de la listeview peut être simplifiée.

Code:
For i = nulititre + 1 To ActiveSheet.Range("B65536").End(xlUp).Row
         ' colonne
                '
            
                .ListItems.Add , "l" & i, ActiveSheet.Cells(i, 1) ' première colonne
                '"l" & i est une clé qui permet de retrouver la ligne ou sont enregistré les données
                ' cette clé est unique dans une listview
                '
                'ligne2 = Mid(ListView1.ListItems(Item.Index).Key, 2, 50)
                ' la ligne ci dessus permet de faire un lien entre la ligne sélectionnée dans une liste view
                ' et la base de donnée
                For J = 1 To ActiveSheet.Range("J" & nulititre).End(xlToLeft).Column ' dernière colonne
                    .ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(i, J)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(i, J)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(i, J)
                   
               Next J
       Next i

Dimcol() est inutile ici, cette variable sert simplement à paramétrer la macro d'affichage de la listview.

Si on utilise la propriété RowSource pour remplir un combobox il est préférable d'utiliser un nom avec une formule =DECALER(Client!$B$3;;;NBVAL(Client!$B:$B)-2).
Le nom de la zone s'ajuste automatiquement.

JP
 
Re : remplissage listview

bonsoir le forum, jp14

merci jp de t'être penché sur mon pb,
mais lorsque j'importe ta macro dans mon classeur, la listeview ne se rempli pas de manière satisfaisante. dans les 4 premières colonnes j'ai les mois et dans les quatres suivantes, j'ai la date (correspondant aux lignes de l'activesheet)

est ce que cela fonctionne chez toi ???

et sans vouloir paraitre insistant, peus tu me développer ton explication sur le row source et la fonction decaler j'ai pas tout compris ????
merci encore pour ton intervention
 
Re : remplissage listview

re le forum, jp14
puis je me permettre de demander un peu plus ?
aller j'ose !!!
le but de cette listview est d'en extraire QUELQUES données pour remplir la feuille facture.
pour être plus clair (je vais essayer!!!! hi hi hi)
lorsque l'on sélectionne une ou plusieurs lignes dans la listview, j'ai besoin d'en copier juste la date, la durée, le type d'intervention, et le montant.
croyez vous que cela vous semble possible ??
merci d'avance.
 
Re : remplissage listview

re le forum, jp14

j'espère avoir compris ta requète jp .......... voici en pièce jointe un classeur "anonyme".

si ce n'était pas çà ce que tu désirait, le classeur sur lequel je travail actuellement pèse presque 1.2 Mo !!!
et je ne sais pas comment te le faire parvenir !!!
et lui enlever les données confidentielles me semble très fastidieux au vus des quelques infos supplémentaires qu'il pourrait t'apporter.

je reste à ta disposition si tu en exprime le besoin.
merci encore.
 
Dernière édition:
Re : remplissage listview

Bonsoir

Je prends le fil en cours ... vous parlez de "listview" ? ou s'affiche t-elle ?
J'ai bien vu le code mais à quoi s'appliqu'il t-il ?
Si tu veux que plusieurs XLDnautes s'interessent autre que JP14 qui s'est déjà penché sur ton cas ( et c'est bien) il faudrait décrire ce que tu veux faire , les Barbatrucs le disent ....
mieux vaut du concret que du ... blabla , et je j'opte pour cela , je l'ai vécu .. la solution est 10 X plus rapide
Je veux bien aussi aider , mais je ne comprends pas la situation !!

Bonne soirée
Hervé
 
Re : remplissage listview

Re le forum, herve62, jp14,

dans le classeur joint, j'ai créer un bouton facturation qui se positionne au dessus de la barre d'adresse.
ce bouton permet d'afficher un userform.
dans ce userform, une combobox permet de choisir pour quel client on va rédiger la facture.
lorsque la civilité de cette personne est choisie (par l'intermédiaire de chekbox,) la listview apparait;
grâce a jp14 et plusieurs heures de trituration, la listview est maintenant correctement remplie.
je souhaiterais maintenant extraire vers la feuille facture les données correspondant aux lignes sélectionnées. avec un petit inconvénient, je n'ai besoin que de la date, la durée, le type d'intervention et le montant.les autres renseignements contenus dans la listview ne me servent pas pour renseigner la feuille facture.
je reste à votre disposition pour de plus amples infos.
(parfois je me demande si un coup de fil ne serait pas mieux que ces longues explications ?????
merci d'avance de vous pencher sur l'évolution de ce classeur.
 
Re : remplissage listview

re à tous,
depuis ce matin 6 h 30, j'ai bien triturer la bête !!!!!
mais j'y suis !!!
j'en vois le bout
bref EUREKA !!!!!
pour la partie transfert des données j'ai enfin trouvé comment faire, grâce au classeur de Iffic.

Sub Transfert()
Dim J As Byte
Dim i, X As Integer
Dim item
X = 18
With Facturer.ListView1
For i = 1 To .ListItems.Count
If .ListItems(i).Checked = True Then
X = X + 1
Fact.Cells(X, 1) = .ListItems(i).ListSubItems(1)
Fact.Cells(X, 3) = .ListItems(i).ListSubItems(2) & "h"
Fact.Cells(X, 2) = .ListItems(i).ListSubItems(3)
Fact.Cells(X, 6) = CLng(.ListItems(i).ListSubItems(6))
End If

Next i
End With
End Sub

et sauf erreur de ma part, je livre le classeur comme ça !!

ah ben non !!!! au fait !!! si aucune sélection n'a été faite dans la listview, il me faudrait un msg qui m'alerte du fait qu'aucune sélection n'a été faite et empêche de poursuivre la macro transfert tant qu'aucune ligne de la listview n'a été sélectionnée.

ci-joint la dernière mouture.
encore merci aux contributeurs de ce fabuleux site.
 
Dernière édition:
Re : remplissage listview

Re le forum, tous les contributeurs,
pardonnez moi ce up, mais le dernier problème que je rencontre dans la création de ce classeur est :
dans l'userform "Facturer" lorsque l'on clique sur ok j'aimerais que si aucune ligne n'est sélectionnée un msgbox avertisse l'utilisateur qu'il n'y a pas de selection, et revienne au userform pour que l'utilisateur puisse corriger sont oubli avant de déclencher la macro "transfert".
c'est très certainement un pb de syntaxe, mais je cale !!! désolé de réclamer votre aide !!
merci d'avance
 
Dernière édition:
- 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

Retour