Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Aide VBA

LAC736

XLDnaute Nouveau
Bonjour, je m'essaie à créer des macros sous VBA grâce à l'enregistreur.
Alors voilà mon problème, je veux que les lignes dont les valeurs sont à 0 sur ma colonne B (field 2) soient masquées quand je change le contenu de ma case C1 qui contient le mois.
La macro qui filtre fonctionne quand je la met sur un bouton, mais pas avec ma condition, donc si quelqu'un peux m'aider avec la syntaxe...
Accessoirement si il y a moyen de coder le filtre en disant "tout sauf 0" plutôt que des cocher toutes les valeurs de 1 à 250 ça m’intéresse aussi.
Merci

voici ma macro:
Code:
Sub Macro1()

If Range(c1) = "janvier" Or "février" Or "mars" Or "avril" Or "mai" Or "juin" Or "juillet" Or "aout" Or "septembre" Or "octobre" Or "novembre" Or "décembre" Then
    ActiveSheet.Range("$A$2:$L$301").AutoFilter Field:=2, Criteria1:=Array("1", _
        "10", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "11", "110", _
        "111", "112", "113", "114", "115", "116", "117", "118", "119", "12", "120", "121", "122", _
        "123", "124", "125", "126", "127", "128", "129", "13", "130", "131", "132", "133", "134", _
        "135", "136", "137", "138", "139", "14", "140", "141", "142", "143", "144", "145", "146", _
        "147", "148", "149", "15", "150", "151", "152", "153", "154", "155", "156", "157", "158", _
        "159", "16", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "17", _
        "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "18", "180", "181", _
        "182", "183", "184", "185", "186", "187", "188", "189", "19", "190", "191", "192", "193", _
        "194", "195", "196", "197", "198", "199", "2", "20", "200", "201", "202", "203", "204", _
        "205", "206", "207", "208", "209", "21", "210", "211", "212", "213", "214", "215", "216", _
        "217", "218", "219", "22", "220", "221", "222", "223", "224", "225", "226", "227", "228", _
        "229", "23", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "24", _
        "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "25", "250", "251", _
        "252", "253", "254", "255", "26", "27", "28", "29", "3", "30", "31", "32", "33", "34", "35", _
        "36", "37", "38", "39", "4", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "5", _
        "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "6", "60", "61", "62", "63", "64", _
        "65", "66", "67", "68", "69", "7", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", _
        "8", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "9", "90", "91", "92", "93", _
        "94", "95", "96", "97", "98", "99"), Operator:=xlFilterValues
End If
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide VBA

Bonjour Lac, bonjour le forum,

Je pense que ton code serait plus approprié dans la macro événementielle Change de l'onglet concerné.
Je te propose cette solution :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$1" Then Exit Sub 'si le changement à lieu ailleurs qu'en C1, sort de la procédure
Select Case Target.Value 'agit en fonction de la valeur de C1
    Case "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"
        'filtre toutes les valeurs de la colonne B différente de 0
        ActiveSheet.Range("$A$2:$L$301").AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlFilterValues
    Case Else 'tous les autres cas
        'si il y a un filtre, supprime le filtre
        If ActiveSheet.FilterMode = True Then ActiveSheet.Range("$A$2:$L$301").AutoFilter
End Select 'fin de l'action en fonction de la valeur de C1
End Sub
 

Pièces jointes

  • Lac_v01.xlsm
    19.1 KB · Affichages: 21

LAC736

XLDnaute Nouveau
Re : Aide VBA

Merci de votre réponse rapide, alors effectivement sur votre fichier ça marche et c'est exactement ce que je veux faire, mais sur le mien ça ne marche pas pour une raison que j'ignore (je suspecte que c'est à a cause des formules), je joins le fichier si vous voulez bien y jeter un œil, merci. (il n'y a des données que pour octobre 2013)
 

Pièces jointes

  • Tests VBA.xlsm
    64.9 KB · Affichages: 32
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…