Bonjour à tous!
Voila, pour un projet de VBA je dois réaliser un calendrier/agenda sous excel.
Pour les plus curieux je peux joindre mon fichier complet (du moins la ou je me suis arrêté).
Je tenais aussi à vous dire (et c'est le plus important) c'est que je n'ai jamais fait de VBA de ma vie. Tout ce que j'ai codé, c'est du bricolage fait avec l'aide excel et quelque exemple du net (je suis étonné d'ailleurs que ça fonctionne et que mon pc n'est pas encore explosé à cause du nombre d'erreur).
Donc pour un soucis de compréhension je souhaiterai que vous m'expliquiez vos solutions à base de commentaire et d'exemple. ^^
Donc voila, pour afficher les tâches que j'ai rentrée precedement dans mon agenda j'utilise la fonction .Autofilter
Cependant j'ai plusieurs critère et comme je ne connais qu'une méthode j'ai rédigé le code de la facon suivant:
Bon la partie à la fin c'est un copier-coller et puis on désactive le filtre.
Par contre... La partie entre les étoiles c'est celle qui me pose problème.
En gros on a ca:
Jour Mois Année Taches
1 1 2014 Mécanique
2 2 2014 Maths
ComboboxJours pour les jours
ComboboxMois pour les mois
ComboboxAnnes pour les ans
Pour résumé, je cherche la valeur de ma combobox dans la colonne correspondante des que je choisi un item dans la combobox (What? 😕 ). Le soucis c'est que les 3 fonctions IF sont séparés,ce qui veux dire que si je filtre les Jours sur 1 et le Mois sur 2, même si j'ai aucune valeur 2 dans mon tableau la macro va quand meme me lire les lignes ou la colonne 1 est sur 1.
Pour résoudre le problème j'ai pensais a mettre une fonction ET :
Mais bon j'y croyais pas vraiment et effectivement ça ne marche pas ^^.
Si vous avez une solution, je prends. Et si en plus vous pouvez me joindre un mini classeur excel avec exemple concret je vous en serais extrêmement reconnaissant..!
Cordialement!
Edit: Voici le fichier
Edit: Et sans le mot de passe cette fois
Voila, pour un projet de VBA je dois réaliser un calendrier/agenda sous excel.
Pour les plus curieux je peux joindre mon fichier complet (du moins la ou je me suis arrêté).
Je tenais aussi à vous dire (et c'est le plus important) c'est que je n'ai jamais fait de VBA de ma vie. Tout ce que j'ai codé, c'est du bricolage fait avec l'aide excel et quelque exemple du net (je suis étonné d'ailleurs que ça fonctionne et que mon pc n'est pas encore explosé à cause du nombre d'erreur).
Donc pour un soucis de compréhension je souhaiterai que vous m'expliquiez vos solutions à base de commentaire et d'exemple. ^^
Donc voila, pour afficher les tâches que j'ai rentrée precedement dans mon agenda j'utilise la fonction .Autofilter
Cependant j'ai plusieurs critère et comme je ne connais qu'une méthode j'ai rédigé le code de la facon suivant:
Code:
With Worksheets(2)
.AutoFilterMode = False
'Ligne de la dernière cellule remplie de la colonne A
Recherche = .Cells(.Rows.Count, "A").End(xlUp).Row
*
With .Range("A2:H" & Recherche)
'Si un item est choisi dans ComboBoxJours alors on filtre la colonne A sur cet item
If Me.ComboBoxJours.ListIndex > -1 Then .AutoFilter Field:=1, Criteria1:=Me.ComboBoxJours.Value
'Si un item est choisi dans ComboBoxMois alors on filtre la colonne B sur cet item
If Me.ComboBoxMois.ListIndex > -1 Then .AutoFilter Field:=2, Criteria1:=Me.ComboBoxMois.Value
'Si un item est choisi dans ComboBoxAnnees alors on filtre la colonne C sur cet item
If Me.ComboBoxAnnees.ListIndex > -1 Then .AutoFilter Field:=3, Criteria1:=Me.ComboBoxAnnees.Value
*
Worksheets(2).Range("A3:H50").Copy
Worksheets(2).Range("R1").PasteSpecial xlPasteAll
AutoFilterMode = False
Unload Me
ActiveSheet.ShowAllData
End With
Bon la partie à la fin c'est un copier-coller et puis on désactive le filtre.
Par contre... La partie entre les étoiles c'est celle qui me pose problème.
En gros on a ca:
Jour Mois Année Taches
1 1 2014 Mécanique
2 2 2014 Maths
ComboboxJours pour les jours
ComboboxMois pour les mois
ComboboxAnnes pour les ans
Pour résumé, je cherche la valeur de ma combobox dans la colonne correspondante des que je choisi un item dans la combobox (What? 😕 ). Le soucis c'est que les 3 fonctions IF sont séparés,ce qui veux dire que si je filtre les Jours sur 1 et le Mois sur 2, même si j'ai aucune valeur 2 dans mon tableau la macro va quand meme me lire les lignes ou la colonne 1 est sur 1.
Pour résoudre le problème j'ai pensais a mettre une fonction ET :
Code:
With Worksheets(2)
.AutoFilterMode = False
'Ligne de la dernière cellule remplie de la colonne A
Recherche = .Cells(.Rows.Count, "A").End(xlUp).Row
With .Range("A2:H" & Recherche)
If Me.ComboBoxJours.ListIndex > -1 And Me.ComboBoxMois.ListIndex > -1 And Me.ComboBoxAnnees.ListIndex > -1 Then
.AutoFilter Field:=1, Criteria1:=Me.ComboBoxJours.Value And .AutoFilter Field:=2, Criteria1:=Me.ComboBoxMois.Value And .AutoFilter Field:=3, Criteria1:=Me.ComboBoxAnnees.Value
End With
Mais bon j'y croyais pas vraiment et effectivement ça ne marche pas ^^.
Si vous avez une solution, je prends. Et si en plus vous pouvez me joindre un mini classeur excel avec exemple concret je vous en serais extrêmement reconnaissant..!
Cordialement!
Edit: Voici le fichier
Edit: Et sans le mot de passe cette fois
Pièces jointes
Dernière édition: