Microsoft 365 Code pour filtrage

Marvin57

XLDnaute Occasionnel
Bonjour à toutes et à tous,

dans le fichier ci-joint je peux appeler le UserForm1 à partir de l'onglet ACCUEIL.
Le UserForm1 m'affichera des données qui se trouvent sur l'onglet COMPTES CUMULES.

Pour le premier affichage j'ai réussi à faire. (Textbox 4, 5, 6, 12, 13, 11, 15, 16 et 14)

Voici ma demande :

Sur le UserForm1 vous pourrez voir que j'ai mis des combobox (1, 2 et 3) en place pour pouvoir faire un filtrage de mes données de l'onglet COMPTES CUMULES.

Or, pour ce code je sèche vraiment .

Donc je souhaiterai pouvoir choisir via le combobox1 le mois et faire ce filtrage en affichant les données du mois de l'onglet COMPTES CUMULES
de la ligne 5 à la ligne 11 ( Textbox 1, 2, 3, 9, 10, 8) et aussi les données des cellules O12, O13 et O14 ( textbox 17, 18, 19).

De même si je voudrai choisir une période de plusieurs mois via les combobox 2 et 3, ce filtrage devrait m'afficher les données dans les mêmes textbox.

Espérant que j'ai bien expliqué ma demande, sinon je reste disponible rapidement.

Merci à vous pour votre aide.

Marvin57
 

Pièces jointes

  • Marvin57 FILTRAGE.xlsm
    24.1 KB · Affichages: 4
Solution
Re,
Si mon hypothèse est correcte, que la période doit faire la somme des mois alors essayez cette PJ avec;
VB:
Private Sub CommandButton2_Click()
    Col1 = 2 + Application.Match(ComboBox2, [ListeMois], 0) '2+ car liste commence en colonne 3
    Col2 = 2 + Application.Match(ComboBox3, [ListeMois], 0) '2+ car liste commence en colonne 3
    If Col1 > Col2 Then MsgBox "Le mois de fin doit être postérieur au mois de début": Exit Sub
    
    With Sheets("COMPTES CUMULES")
        Me.TextBox1 = Application.Sum(.Range(.Cells(5, Col1), .Cells(5, Col2)))
        Me.TextBox2 = Application.Sum(.Range(.Cells(6, Col1), .Cells(6, Col2)))
        Me.TextBox3 = Application.Sum(.Range(.Cells(7, Col1), .Cells(7, Col2)))
        Me.TextBox9 =...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Marvin,
Un essai en PJ avec :
Liste mois :
VB:
Sub VOIR()
With UserForm1
    .ComboBox1.Column = [ListeMois].Value
    .ComboBox2.Column = [ListeMois].Value
    .ComboBox3.Column = [ListeMois].Value
    .Show
End With
End Sub
Remplissage sur appui sur "Filtrer" ( 1er bouton ) avec :
Code:
Private Sub CommandButton1_Click()
    Colonne = 2 + Application.Match(ComboBox1, [ListeMois], 0) '2+ car liste commence en colonne 3
    With Sheets("COMPTES CUMULES")
        Me.TextBox1 = .Cells(5, Colonne)
        Me.TextBox2 = .Cells(6, Colonne)
        Me.TextBox3 = .Cells(7, Colonne)
        Me.TextBox9 = .Cells(9, Colonne)
        Me.TextBox10 = .Cells(10, Colonne)
        Me.TextBox8 = .Cells(11, Colonne)
        Me.TextBox17 = .[O12]
        Me.TextBox18 = .[O13]
        Me.TextBox19 = .[O14]
    End With
End Sub
Par contre je n'ai rien fait pour le second Filtrer car je ne comprends pas ce que vous attendez pour "RESULTAT 1 et 2". Vous voulez la somme des mois pour ces résultats ?
Mais dans tous les cas, vous pouvez faire sur ce second bouton, la même chose que pour le premier en adaptant le code à votre besoin.
 

Pièces jointes

  • Marvin57 FILTRAGE (1).xlsm
    26.3 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Si mon hypothèse est correcte, que la période doit faire la somme des mois alors essayez cette PJ avec;
VB:
Private Sub CommandButton2_Click()
    Col1 = 2 + Application.Match(ComboBox2, [ListeMois], 0) '2+ car liste commence en colonne 3
    Col2 = 2 + Application.Match(ComboBox3, [ListeMois], 0) '2+ car liste commence en colonne 3
    If Col1 > Col2 Then MsgBox "Le mois de fin doit être postérieur au mois de début": Exit Sub
    
    With Sheets("COMPTES CUMULES")
        Me.TextBox1 = Application.Sum(.Range(.Cells(5, Col1), .Cells(5, Col2)))
        Me.TextBox2 = Application.Sum(.Range(.Cells(6, Col1), .Cells(6, Col2)))
        Me.TextBox3 = Application.Sum(.Range(.Cells(7, Col1), .Cells(7, Col2)))
        Me.TextBox9 = Application.Sum(.Range(.Cells(9, Col1), .Cells(9, Col2)))
        Me.TextBox10 = Application.Sum(.Range(.Cells(10, Col1), .Cells(10, Col2)))
        Me.TextBox8 = Application.Sum(.Range(.Cells(11, Col1), .Cells(11, Col2)))
        Me.TextBox17 = .[O12]
        Me.TextBox18 = .[O13]
        Me.TextBox19 = .[O14]
    End With
End Sub
 

Pièces jointes

  • Marvin57 FILTRAGE (V2).xlsm
    27.4 KB · Affichages: 4

Marvin57

XLDnaute Occasionnel
Re,
Si mon hypothèse est correcte, que la période doit faire la somme des mois alors essayez cette PJ avec;
VB:
Private Sub CommandButton2_Click()
    Col1 = 2 + Application.Match(ComboBox2, [ListeMois], 0) '2+ car liste commence en colonne 3
    Col2 = 2 + Application.Match(ComboBox3, [ListeMois], 0) '2+ car liste commence en colonne 3
    If Col1 > Col2 Then MsgBox "Le mois de fin doit être postérieur au mois de début": Exit Sub
   
    With Sheets("COMPTES CUMULES")
        Me.TextBox1 = Application.Sum(.Range(.Cells(5, Col1), .Cells(5, Col2)))
        Me.TextBox2 = Application.Sum(.Range(.Cells(6, Col1), .Cells(6, Col2)))
        Me.TextBox3 = Application.Sum(.Range(.Cells(7, Col1), .Cells(7, Col2)))
        Me.TextBox9 = Application.Sum(.Range(.Cells(9, Col1), .Cells(9, Col2)))
        Me.TextBox10 = Application.Sum(.Range(.Cells(10, Col1), .Cells(10, Col2)))
        Me.TextBox8 = Application.Sum(.Range(.Cells(11, Col1), .Cells(11, Col2)))
        Me.TextBox17 = .[O12]
        Me.TextBox18 = .[O13]
        Me.TextBox19 = .[O14]
    End With
End Sub
Bonjour sylvanu,

un GRAND MERCI 🙏 à vous pour le travail effectué dans ma demande.

Je viens de placer les codes dans mon fichier réel et après modification des noms réels, cela fonctionne très bien.

Super travail 👍.

Je reviendrai certainement encore une fois pour un autre soucis que je dois modifier, mais cela sera la semaine prochaine. Le boulot passe en premier.

Bonne semaine à vous et à tout le forum.

Marvin57
 

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76