Conbinaison de listview [Résolu]

Signaler
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
-
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
-
Bonjour a tous
j'ai une listview avec en 1 colonne les mois de l'annee,avec dans les autres connes des donnees. cela fonctionne bien.
Je souhaiterais mettre un combobox avec comme choix les mois de l'annee.et lorsque le mois est valider,que ma lite vue m'affiche que ce mois avec les donnees a suivre qui vont bien.
merci
cris
voici mon code

Private Sub CommandButton1_Click()
Me.Hide
Sheets("Massage").Select
End Sub
Private Sub Massage_Click()
 Load Resa_Massage
 Resa_Massage.Show
 Unload UserForm8
 UserForm8.Show
 Sheets("Menu").Select
End Sub
Private Sub Retour_Menu_Click()
 Sheets("Menu").Select
 Unload UserForm8
 End Sub
Private Sub TextBox1_Change()
Me.TextBox1 = Sheets("Massage").Range("J2")
End Sub
Private Sub userform_Activate()

 Sheets("Massage").Select
 Application.DisplayFullScreen = True
 
 TextBox1.Value = Sheets("Massage").Range("J2").Value

With Resa_Massage
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With

'Suppression des titres de colonnes
ListView9.ColumnHeaders.Clear

'Alimentation des titres de colonne :

ListView9.ColumnHeaders.Add , , "Mois", ListView9.Width * 0.1, lvwColumnLeft
ListView9.ColumnHeaders.Add , , "Nom", ListView9.Width * 0.17, lvwColumnLeft
ListView9.ColumnHeaders.Add , , "Nº MH", ListView9.Width * 0.06, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Date", ListView9.Width * 0.1, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Type de Massage", ListView9.Width * 0.2, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Réglement", ListView9.Width * 0.12, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Durée", ListView9.Width * 0.1, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Prix", ListView9.Width * 0.06, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Total", ListView9.Width * 0.09, lvwColumnCenter

'on remplit la listview

With Me.ListView9
.ListItems.Clear
    For Each V In Range("a4:a" & Range("a65536").End(xlUp).Row)
        x = x + 1
        .ListItems.Add , , V.Text
        .ListItems(x).ForeColor = V.Font.Color
        
        For j = 1 To 8
            .ListItems(x).ListSubItems.Add , , V.Offset(0, j).Text
            .ListItems(x).ListSubItems(j).ForeColor = V.Offset(0, j).Font.Color
        
        Next j
Next V
End With

End Sub

10 réponses

Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
j'ai reussit avec plusieurs code que j'avais et adapter au mien.
merci encore de ta patience.
cris
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Je suppose que :
que ma lite vue m'affiche que ce mois avec les donnees a suivre qui vont bien.

veut dire :
que ma listview
ne m'affiche que ce mois avec les données correspondant à ce mois.

et m'interroge donc (ainsi que je t'interroge) sur cette expression :
signifie-t-elle :
1) qu'elle ne doit "afficher" (donc contenir) rien d'autre ?
ou
2) que devra être sélectionnée la ligne contenant ce mois ?

D'où l'importance d'assortir du plus grand soin et de la plus grande rigueur ce que l'on exprime (le code, lui, est encore plus rigoureux !).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
bonjour ucfoutu
malistview m'affiche toutes mes donnees, ok avec toi.

Mois Nom Date etc...
et je souhaiterais par l'intermediaire d'un combobox avec les douze mois de l'annee.
pouvoir afficher toutes les lignes qui correspondent au choix de ce combobox (exempl: Novembre) .

et un autre bouton pour retablir la liste sans choix.

merci
cris
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
je crois bien que tant que tu n'auras pas précisé (voir ma remarque plus haut) ce que tu entends exactement par "afficher", on tournera joyeusement en rond.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
je pense que contenir est mieux adapter.

je voulais dire que quand je lance mon userform, l'affichage de ce dernier contient une listeview et autre boutons de cde, et que je vois toutes mes donnees dans cette listview.
je voudrais bien joindre un extrait de mon classeur, pour mieux ce rendre compte, mais je ne sais pas comment sur ce site le joindre.

cris
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Je crois alors que le mieux, dans un tels cas, est simplement d'ajouter une expression conditionnelle dans ta boucle :
For Each V In Range("a4:a" & Range("a65536").End(xlUp).Row)

pour n'ajouter des items à la listview que si V.text = le_mois_choisi_dans_ta_combobox , non ?
et çà, tu sais faire, quand-même, j'espère (car c'est vraiment trop simple)!

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
Merci
je crois que je vais laisser tomber.
Je vais essayer de faire un tri dans ma feuille et apres lancer mon userform.
Il te semble peux etre facile pour toi,n'est pas du tout evident pour moi.
Car je bricole beaucoup pour apprendre. lecture etc.
et c'est avec tout les conseils (bons)de forum comme celui ci que j'evolues.
merci beaucoup a toi.
cris
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Je trouve que tu baisses bien vite les bras, chris09300
Si tu les baisses face à cette minuscule barrière, que feras-tu devant les vrais obstacles ?
Où es donc ton problème ?
Pour remplir une combobox avec les 12 mois de l'année ?
For i = 1 To 12
  ComboBox1.AddItem MonthName(i)
Next

Pour savoir quel mois tu y a choisi ?
Private Sub ComboBox1_Click()
 mois_choisi = ComboBox1.Text
End Sub



Que te reste-t-il à faire ? Exécuter ta boucle en ajoutant la condition :
If V.text = mois_choisi then 
 ... tes ajouts 
end if


Allez ! un peu de nerfs, s'il te plait
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
j'ai creer un combobox avec les parametres de rowsource "renseignements f1:f12"
c'est sur cette feuille (renseignements) que ce trouve la liste des mois:
apres j'ai colle

Private Sub ComboBox1_Click()
 mois_choisi = ComboBox1.Text
End Sub


dans mon code, puis :

If V.text = mois_choisi then
... tes ajouts
end if

voici ce que cela donne:
Private Sub CommandButton1_Click()
Me.Hide
Sheets("Massage").Select
End Sub
Private Sub Massage_Click()
 Load Resa_Massage
 Resa_Massage.Show
 Unload UserForm8
 UserForm8.Show
 Sheets("Menu").Select
End Sub
Private Sub Retour_Menu_Click()
 Sheets("Menu").Select
 Unload UserForm8
 End Sub
Private Sub TextBox1_Change()
Me.TextBox1 = Sheets("Massage").Range("J2")
End Sub

Private Sub ComboBox1_Click()
 mois_choisi = ComboBox1.Text
End Sub

Private Sub userform_Activate()

 Sheets("Massage").Select
 Application.DisplayFullScreen = True
 
 TextBox1.Value = Sheets("Massage").Range("J2").Value

With Resa_Massage
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With

'Suppression des titres de colonnes
ListView9.ColumnHeaders.Clear



'Alimentation des titres de colonne :

ListView9.ColumnHeaders.Add , , "Mois", ListView9.Width * 0.1, lvwColumnLeft
ListView9.ColumnHeaders.Add , , "Nom", ListView9.Width * 0.17, lvwColumnLeft
ListView9.ColumnHeaders.Add , , "Nº MH", ListView9.Width * 0.06, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Date", ListView9.Width * 0.1, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Type de Massage", ListView9.Width * 0.2, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Réglement", ListView9.Width * 0.12, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Durée", ListView9.Width * 0.1, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Prix", ListView9.Width * 0.06, lvwColumnCenter
ListView9.ColumnHeaders.Add , , "Total", ListView9.Width * 0.09, lvwColumnCenter

'on remplit la listview

With Me.ListView9
.ListItems.Clear
    
 If V.Text = mois_choisi Then

    'For Each V In Range("a4:a" & Range("a65536").End(xlUp).Row)
        x = x + 1
        .ListItems.Add , , V.Text
        .ListItems(x).ForeColor = V.Font.Color
        
        For j = 1 To 8
            .ListItems(x).ListSubItems.Add , , V.Offset(0, j).Text
            .ListItems(x).ListSubItems(j).ForeColor = V.Offset(0, j).Font.Color
        
        Next j
'Next V
End If
End With

End Sub


mais ca ne fonctionne pas.

tu doit trouver que je suis un peu nul, et tu as raison.
cris
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Déjà :
tu as mis cela dans l'évènement
Private Sub userform_Activate()

Ce qui veut dire quoi ? ===>> que tout le code y inclus ne s'exécutera qu'au moment de l'activation de ton userform
Ce code doit s'exécuter au click sur ta combobox, pardi.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient