VBA Autofilter avec deux critères

Résolu
Bonjour le forum,

Je souhaite appliquer un filtre ou le champ 9 me ressort
les catégories commençant par Ter et Pui (en fonction de la date sélectionné en A6)
afin de calculer le sous total de la colonne C

Dim lig as long
lig = Worksheets("Donnees").Range("O65536").End(xlUp).Row
If Range("Chargement!A5") = "Pui" Or "Ter" Then
Worksheets("Donnees").Select
Range("A1:O" & lig).AutoFilter Field:=9, Criteria1:="*Pui*", Operator:=xlAnd, Criteria1:="*tiaire*"
Range("A1:O" & lig).AutoFilter Field:=14, Criteria1:=[Chargement!A6]
Range("Graphique!D5") = Application.WorksheetFunction.Subtotal(9, Range("Donnees!C2:C100000"))
'Range("Graphique!D5") = Application.Sum(Range("Graphique!A8-Chargement!A9"))
End If

Le problème est qu'il ne prend que le premier critère pas le second.

Merci de votre aide.

13 réponses

  1. Bonjour a vous tous,

    If Range("Chargement!A5") = "Puissance" Or Range("Chargement!A5") = "Tertiaire" Then
    Worksheets("Donnees").Select
    Range("A1:O" & Lig).AutoFilter Field:=9, Criteria1:="=Puissance", _
    Operator:=xlOr, Criteria2:="=Tertiaire"
    End If

    Bonne suite
    4
    1. Bonjour,

      tertiaire ou Tertiaire (parce que pas pareil pour un test)?????????
      1
      1. personne pour m'aider? sniff
        0
        1. Contributeur
          bp,hjour,
          1/les catégories commençant par Ter ET Pui
          ne serait ce pas plutôt
          es catégories commençant par Ter OU Pui ?
          (si ca commence par "pui", ca ne peut pas commencer par "ter"....)

          2/ le terme est "ter" ou "tiaire" ?

          3/ les catégories commençant par seraient plutôt marquées "ter*"
          "*ter*" <==> contenant "ter"

          Michel
          0
          1. Bonjour Michel

            Effectivement c'est une erreur dans mon explication.

            J'ai tout rectifier, car j'avais trop abrégé.

            If Range("Chargement!A5") = "Puissance" Or "Tertiaire" Then
            Worksheets("Donnees").Select
            Range("A1:O" & lig).AutoFilter Field:=9, Criteria1:="Pui*", Operator:=xlAnd, Criteria1:="*tiaire"

            D'après mes abréviations, cela ne change pas grand chose et ne fonctionne toujours pas d'ailleurs.

            J'ai abrégé les critères par contenant, car si j'inscris le critère entièrement je n'ai carrément aucun résultat.

            Tandis que dans le code ci-dessous il me détecte bien puissance ou tertaire mais m'affiche uniquement puissance dans mon autofilter.

            Merci de ton aide.
            0
            1. bonjour,

              a priori

              If Range("Chargement!A5") = "Pui" Or Range("Chargement!A5") = "Ter" Then

              Bonne suite
              0
              1. Bonjour Paf,

                Merci du conseil mais ça ne fonctionne pas.

                Il ne me filtre rien.
                0
                1. Merci f894009
                  Je me suis toujours interrogé sur votre pseudo :)

                  Alors je pense qu'on est vraiment pas loin car ça fonctionne quand je sélectionne Puissance, il me fait bien le tri et le sous total.
                  Mais pas quand je sélectionne Tertiaire.

                  A noté que j'ai modifié votre réponse en inscrivant la valeur exacte dans critère2
                  Criteria2:="=Système Tertiaire"
                  0
                  1. Re,

                    Dans la cellule Chargement!A3, vous mettez quoi exactement "Tertiaire" ou "Système Tertiaire"????
                    0
                    1. C'est chargement A5, tout dépend.

                      Cette cellule est fonction d'une ComboBox.
                      Donc cette cellule peut contenir Puissance ou Système Tertiaire voir d'autres
                      choses mais qui sont fonction d'autres ComboBox et donc d'autres macros.

                      L'utilisateur sélectionne son choix dans la ComboBox,
                      puis exécute la macro avec un bouton valider.

                      Le plus surprenant c'est que je dois exécuter la même condition dans une macro supérieur mais avec trois conditions différentes, et la encore il ne prend en considération qu'une seule des trois conditions pour exécuter l'auto filtre parmi les trois possibles dans A5.

                      Merci d'y passer du temps en tout cas.

                      Vous souhaitez que je partages le fichier peut être?
                      0
                      1. Re,

                        Aviez vous tout modifie??

                        If Range("Chargement!A5") = "Puissance" Or Range("Chargement!A5") = "System Tertiaire" Then
                        Worksheets("Donnees").Select
                        Range("A1:O" & Lig).AutoFilter Field:=9, Criteria1:="=Puissance", _
                        Operator:=xlOr, Criteria2:="=System Tertiaire"
                        End If
                        0
                        1. Oui.

                          ElseIf Range("Chargement!A5") = "Puissance" Or Range("Chargement!A5") = "Système tertiaire" Then
                          Worksheets("Donnees").Select
                          lig = Worksheets("Donnees").Range("O65536").End(xlUp).Row
                          Range("A1:O" & lig).AutoFilter Field:=9, Criteria1:="=Puissance", _
                          Operator:=xlOr, Criteria2:="=Système Tertiaire"
                          Range("A1:O" & lig).AutoFilter Field:=14, Criteria1:=[Chargement!A6]
                          0
                          1. Ah la je vais me faire engueuler.
                            Je viens de trouver aussi, vu l'heure de votre message 1h après vous.

                            C'est Tertiaire dans ma combobox et tertiaire dans mon critère.

                            Je suis pas assez attentif, vraiment désolé. Je n'ai pas l'habitude
                            de travailler sur un code si long!

                            Tout fonctionne!

                            Un grand merci à tous!
                            0