Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2011, 11h33   #1
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
Par défaut probleme avec listview

Bonjour a tous
J'ai dans mon userform une listview. Avec en 1 colonne des mois et des valeur dans les autres colonnes.
Je souhaiterais mettre un combobox qui me listerais tout les mois de l'annee, et quand j'affiche le mois desire, que dans ma listview, s'affiche que les resulta du mois choisis.
et un autre bouton, qui me reinitialiserais ma liste complete.
merci
cris

voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
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
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 15h51   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour chris09300,

Voici un exemple qui utilise un contrôle ComboBox pour afficher les mois de Janvier à Décembre.
Chaque fois que tu cliques sur un choix de la liste, le mois choisi est sélectionné.
Si tu Double-cliques sur cette sélection, la ListView9 est mise à jour.
Pour réinitialiser la liste, tu sélectionnes « Tous les mois ».

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Private Sub UserForm_Initialize()
    With ListView9
        With .ColumnHeaders
            'Suppression des anciens entêtes
            .Clear
            'Alimentation des titres de colonne :
            .Add , , "Mois", ListView9.Width * 0.1, lvwColumnLeft
            .Add , , "Nom", ListView9.Width * 0.17, lvwColumnLeft
            .Add , , "Nº MH", ListView9.Width * 0.06, lvwColumnCenter
            .Add , , "Date", ListView9.Width * 0.1, lvwColumnCenter
            .Add , , "Type de Massage", ListView9.Width * 0.2, lvwColumnCenter
            .Add , , "Réglement", ListView9.Width * 0.12, lvwColumnCenter
            .Add , , "Durée", ListView9.Width * 0.1, lvwColumnCenter
            .Add , , "Prix", ListView9.Width * 0.06, lvwColumnCenter
            .Add , , "Total", ListView9.Width * 0.09, lvwColumnCenter
        End With
        'Remplissage des colonnes suivant liste des mois sélectionnés
        Remplissage "Tous les mois"
        'Spécifie l'affichage en mode "Détails"
        ListView9.View = lvwReport
    End With
    '--------------------------------------------------
    'Alimentation de la ComboBox
    With ComboBox1
        .AddItem "Tous les mois"
        .AddItem "Janvier"
        .AddItem "Février"
        .AddItem "Mars"
        .AddItem "Avril"
        .AddItem "Mai"
        .AddItem "Juin"
        .AddItem "Juillet"
        .AddItem "Août"
        .AddItem "Septembre"
        .AddItem "Octobre"
        .AddItem "Novembre"
        .AddItem "Décembre"
        'Affectation de la valeur 0 par défaut lors de l'affichage du ComboBox (Tous les mois)
        .ListIndex = 0
    End With
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    'Procédure de remplissage des colonnes suivant le paramètre "mois" choisi
    Remplissage ComboBox1.Value
End Sub
Sub Remplissage(mois)
    With ListView9
        'Remplissage des colonnes
        .ListItems.Clear
        For Each V In Range("A4:A" & Range("A65536").End(xlUp).Row)
            If V.Value = mois Or mois = "Tous les mois" Then
                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
            End If
        Next V
    End With
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 17h22   #3
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
Bonsoir
J'ai remplacer mon code par le tien,et cela bloque au niveau de:

.AddItem "Tous les mois"

J'ai pourtant creer un combobox avec comme row source : Renseignements!F1:F13, ou se trouve tous les mois.
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/11/2011, 17h47   #4
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonsoir,

Tu n'as pas besoin d'utiliser la propriété Rowsource puisque la ComboBox est alimentée par les lignes 25 à 37.
Prends le temps de lire et de comprendre le code, sinon ...
En particulier, tu as dû remarquer que je n'ai pas repris les parties de ton code qui ne sont pas utiles pour répondre à ta question sur l'ajout d'une ComboBox.
Si tu fais un simple copier-coller tu risques de perdre quelques fonctionnalités.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h07   #5
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
ca avance un peu
j'ai bien dans le combobox tout les mois.
quand je met sur tout les mois, et dblclick cela affiche bien tous les mois, mais des que je change, je n'est plus rien dans la listview.
voici le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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
 
 
'   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
 
'Private Sub UserForm_Initialize()
    With ListView9
        With .ColumnHeaders
            'Suppression des anciens entêtes
            .Clear
            'Alimentation des titres de colonne :
            .Add , , "Mois", ListView9.Width * 0.1, lvwColumnLeft
            .Add , , "Nom", ListView9.Width * 0.17, lvwColumnLeft
            .Add , , "Nº MH", ListView9.Width * 0.06, lvwColumnCenter
            .Add , , "Date", ListView9.Width * 0.1, lvwColumnCenter
            .Add , , "Type de Massage", ListView9.Width * 0.2, lvwColumnCenter
            .Add , , "Réglement", ListView9.Width * 0.12, lvwColumnCenter
            .Add , , "Durée", ListView9.Width * 0.1, lvwColumnCenter
            .Add , , "Prix", ListView9.Width * 0.06, lvwColumnCenter
            .Add , , "Total", ListView9.Width * 0.09, lvwColumnCenter
        End With
        'Remplissage des colonnes suivant liste des mois sélectionnés
        Remplissage "Tous les mois"
        'Spécifie l'affichage en mode "Détails"
        ListView9.View = lvwReport
    End With
    '--------------------------------------------------
    'Alimentation de la ComboBox
    With ComboBox1
        .AddItem "Tous les mois"
        .AddItem "Janvier"
        .AddItem "Février"
        .AddItem "Mars"
        .AddItem "Avril"
        .AddItem "Mai"
        .AddItem "Juin"
        .AddItem "Juillet"
        .AddItem "Août"
        .AddItem "Septembre"
        .AddItem "Octobre"
        .AddItem "Novembre"
        .AddItem "Décembre"
        'Affectation de la valeur 0 par défaut lors de l'affichage du ComboBox (Tous les mois)
        .ListIndex = 0
    End With
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    'Procédure de remplissage des colonnes suivant le paramètre "mois" choisi
    Remplissage ComboBox1.Value
End Sub
Sub Remplissage(mois)
    With ListView9
        'Remplissage des colonnes
        .ListItems.Clear
        For Each V In Range("A4:A" & Range("A65536").End(xlUp).Row)
            If V.Value = mois Or mois = "Tous les mois" Then
                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
            End If
        Next V
    End With
End Sub
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h18   #6
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Est-ce que dans ta liste A1:A(x), les mois sont bien notés "Janvier", "Février", etc. ?
Attention, les chaines de caractères doivent être identiques (orthographe et espaces).

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h42   #7
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
Apres quelques ajustement, cela fonctionne.
merci a toi

est il possible que lorsque l'on affiche dans le combobox le mois desire,que cela fonctionne, sans double cliquez sur le mois.
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h49   #8
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Tu peux remplacer
Code :
1
2
3
4
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    'Procédure de remplissage des colonnes suivant le paramètre "mois" choisi
    Remplissage ComboBox1.Value
End Sub
par
Code :
1
2
3
4
Private Sub ComboBox1_Click()
    'Procédure de remplissage des colonnes suivant le paramètre "mois" choisi
    Remplissage ComboBox1.Value
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 19h40   #9
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
merci j'ai trouver j'ai remplacer dblclick par change et ca fonctionne tres bien.
car on avais deja utilise ceci:

Code :
1
2
3
4
 
Private Sub ComboBox1_Click()
 mois_choisi = ComboBox1.Text
End Sub
cela ete en conflit je pense.

merci beaucoup a toi, j'ai peux finir mon classeur.
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 21h22   #10
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Tu aurais pu grouper les 2 instructions

Code :
1
2
3
4
5
Private Sub ComboBox1_Click()
    'Procédure de remplissage des colonnes suivant le paramètre "mois" choisi
    Remplissage ComboBox1.Value
    mois_choisi = ComboBox1.Text
End Sub
Reste à voir à quoi te sert la variable mois_choisi.

Bon courage

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web