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

XL 2016 Filtrer avec deux critères suite

telemarrk

XLDnaute Occasionnel
Bonsoir,

Je vous ai sollicité dernièrement pour filtrer des données par le biais d'une liste déroulante.

Cela me permettait de filtrer avec deux critères (la colonne : SG + la colonne : SUIVI).
Le tableau était structuré, j'essaie de refaire la même chose avec un tableau non structuré en réadaptant le code mais cela ne fonctionne pas.

Quelqu'un peut m'aider ?

Merci
 

Pièces jointes

  • test.xlsm
    23.2 KB · Affichages: 6
Solution
Bonsoir Telemark,
Votre Critère est toujours "Vente" ça ne peux pas marcher avec un autre filtre.
Un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Filtre$, Colonne%
If Intersect(Target, [L1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData
With Range("C3:J10").Select
    Filtre = [L1]
    ActiveSheet.Range("$C$2:$J$10").AutoFilter Field:=3, Criteria1:=Filtre
    ActiveSheet.Range("$C$2:$J$10").AutoFilter Field:=7, Criteria1:="Validé"
End With
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Telemark,
Votre Critère est toujours "Vente" ça ne peux pas marcher avec un autre filtre.
Un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Filtre$, Colonne%
If Intersect(Target, [L1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData
With Range("C3:J10").Select
    Filtre = [L1]
    ActiveSheet.Range("$C$2:$J$10").AutoFilter Field:=3, Criteria1:=Filtre
    ActiveSheet.Range("$C$2:$J$10").AutoFilter Field:=7, Criteria1:="Validé"
End With
End Sub
 

Pièces jointes

  • test (13).xlsm
    20.1 KB · Affichages: 5

fanch55

XLDnaute Barbatruc
Bonsoir à tous,
Pas de grosses différences avec @sylvanu :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [L1]) Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    Dim Lr As Long: Lr = Cells(Rows.Count, "c").End(xlUp).Row
    With Range("C2:J" & Lr)
        .AutoFilter Field:=3, Criteria1:=[L1]
        .AutoFilter Field:=7, Criteria1:="Validé"
        If .SpecialCells(xlCellTypeVisible).Count = .Columns.Count Then .AutoFilter
    End With
    [L2].Activate

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = [L1].Address Then CreateObject("WScript.Shell").SendKeys "%{down}%"
End Sub
 

Pièces jointes

  • Test F55.xlsm
    24.4 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Le VBA est un langage assez permissif. En particulier vous n'êtes pas obligés de déclarer les variables avec le fameux Dim.
Mais cela peut entrainer des erreurs si vous commettez des fautes d'orthographe ( MaVariable et MaVariabe par exemple )
Option Explicit vous oblige à déclarer vos variables sinon il génère une erreur.
 

fanch55

XLDnaute Barbatruc

Option Explicit, instruction (Visual Basic)​

Force la déclaration explicite de toutes les variables dans un fichier,
ou autorise les déclarations implicites de variables.

Syntaxe​

Option Explicit { On | Off }​

Éléments​


On
Optionnel. Active la Option Explicit vérification. Si On ou Off n’est pas spécifié, la valeur par défaut est On.

Off
Optionnel. Désactive la Option Explicit vérification.

Notes​

Lorsque Option Explicit On ou Option Explicit apparaît dans un fichier, vous devez déclarer explicitement toutes les variables à l’aide des Dim instructions ou ReDim . Si vous essayez d’utiliser un nom de variable non déclaré, une erreur se produit au moment de la compilation. L’instruction Option Explicit Off autorise la déclaration implicite des variables.

Si elle est utilisée, l'instruction Option Explicit doit apparaître dans un fichier avant toute autre instruction de code source.

Notes
Définir sur Option Explicit Off n’est généralement pas une bonne pratique. Vous risquez de mal orthographier un nom de variable dans un ou plusieurs emplacements, ce qui peut provoquer des résultats inattendus lors de l’exécution du programme.

Lorsqu’une instruction explicite d’option n’est pas présente​


Si le code source ne contient pas d’instruction Option Explicit , le paramètre Option Explicit de la page Compiler, Concepteur de projets (Visual Basic) est utilisé. Si le compilateur de ligne de commande est utilisé, l’option de compilateur -optionexplicit est utilisée.


Pour définir Option Explicit dans l’IDE​


  1. Dans Explorateur de solutions, sélectionnez un projet. Dans le menu Projet , cliquez sur Propriétés.
  2. Cliquez sur l’onglet Compiler.
  3. Définissez la valeur dans la zone Option explicite .

Lorsque vous créez un projet, le paramètre Option Explicit sous l’onglet Compiler est défini sur le paramètre Option Explicite dans la boîte de dialogue Valeurs par défaut VB . Pour accéder à la boîte de dialogue Valeurs par défaut vb , dans le menu Outils , cliquez sur Options. Dans la boîte de dialogue Options, développez Projets et solutions, puis cliquez sur Valeurs par défaut VB. Le paramètre par défaut initial dans VB Defaults est On.


Pour définir Option Explicit sur la ligne de commande​



Exemple​


L’exemple suivant utilise l’instruction pour forcer la Option Explicit déclaration explicite de toutes les variables. La tentative d’utilisation d’une variable non déclarée provoque une erreur au moment de la compilation.


VB
' Force explicit variable declaration.
Option Explicit On
VB
Dim thisVar As Integer
thisVar = 10
' The following assignment produces a COMPILER ERROR because
' the variable is not declared and Option Explicit is On.
thisInt = 10 ' causes ERROR
 

Discussions similaires

Réponses
40
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…