Macro automatique avec formule dans cellule
Bipbip03
-
bipbip03 -
bipbip03 -
Bonjour,
J'espère être assez clair :
Je souhaite exécuter une macro dans une feuille qui me permet de filtrer toutes les lignes de mon tableau à partir de la valeur d'une cellule qui elle même est déterminer par une formule qui vient chercher la valeur d'une cellule d'une autre feuille. Malheureusement si je ne clique pas sur la cellule, la macro ne s'exécute pas.
Private Sub Worksheet_Change(ByVal Target As Range)
' Si le changement à lieu en cellule "C3"
If Not Application.Intersect(Target, Range("C3")) Is Nothing Then
ThisWorkbook.Sheets("Pré-requis").AutoFilterMode = False
If Target.Value = "TST AER" Then
' Filtre en Caisse TST AER, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST EME" Then
' Filtre en Caisse TST EME, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST SOU" Then
' Filtre en Caisse TST SOU, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST EP" Then
' Filtre en Caisse TST EP, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST BAT" Then
' Filtre en Caisse TST BAT, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST TER" Then
' Filtre en Caisse TST TER, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BR" Then
' Filtre en Caisse BR, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BC" Then
' Filtre en Caisse BC, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "Electricien" Then
' Filtre en Caisse Electricien, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BE" Then
' Filtre en Caisse BE, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TEL" Then
' Filtre en Caisse TEL, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
End If
End Sub
Pouvez-vous m'aider ? Sachant qu'il y a certainement moyen de simplifier la macro !!!
Merci par avance.
J'espère être assez clair :
Je souhaite exécuter une macro dans une feuille qui me permet de filtrer toutes les lignes de mon tableau à partir de la valeur d'une cellule qui elle même est déterminer par une formule qui vient chercher la valeur d'une cellule d'une autre feuille. Malheureusement si je ne clique pas sur la cellule, la macro ne s'exécute pas.
Private Sub Worksheet_Change(ByVal Target As Range)
' Si le changement à lieu en cellule "C3"
If Not Application.Intersect(Target, Range("C3")) Is Nothing Then
ThisWorkbook.Sheets("Pré-requis").AutoFilterMode = False
If Target.Value = "TST AER" Then
' Filtre en Caisse TST AER, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST EME" Then
' Filtre en Caisse TST EME, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST SOU" Then
' Filtre en Caisse TST SOU, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST EP" Then
' Filtre en Caisse TST EP, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST BAT" Then
' Filtre en Caisse TST BAT, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TST TER" Then
' Filtre en Caisse TST TER, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BR" Then
' Filtre en Caisse BR, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BC" Then
' Filtre en Caisse BC, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "Electricien" Then
' Filtre en Caisse Electricien, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "BE" Then
' Filtre en Caisse BE, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
If Target.Value = "TEL" Then
' Filtre en Caisse TEL, sur la colonne 9, avec comme critère la valeur entrée
ThisWorkbook.Sheets("Pré-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value
End If
End If
End Sub
Pouvez-vous m'aider ? Sachant qu'il y a certainement moyen de simplifier la macro !!!
Merci par avance.
A voir également:
- Macro automatique avec formule dans cellule
- Formule si et - Guide
- Réponse automatique thunderbird - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Logiciel de sauvegarde automatique gratuit - Guide
3 réponses
Bonjour,
En effet marche et c'est un peu normal.
Code a mettre dans le VBA de la feuille de la cellule de la formule. Adapter la cellule a verifier.
Si vous avez des infos a ajouter pensez a mettre a jour la variable (TVal1 ou TVal2) que vous utiliserez
En effet marche et c'est un peu normal.
Code a mettre dans le VBA de la feuille de la cellule de la formule. Adapter la cellule a verifier.
Si vous avez des infos a ajouter pensez a mettre a jour la variable (TVal1 ou TVal2) que vous utiliserez
Private Sub Worksheet_Change(ByVal Target As Range) Dim TVal1, TVal2 TVal1 = "TST AER_TST EME_TST SOU_TST EP_TST BAT_TST TER_BR_BC_Electricien_TEL" 'TVal2 = Array("TST AER", "TST EME", "TST SOU", "TST EP", "TST BAT", "TST TER", "BR", "BC", "Electricien", "TEL") If Target.Value = "" Or Target.Count > 1 Then Exit Sub 'adapter la cellule de la feuille qui change If Not Application.Intersect(Target, Range("C3")) Is Nothing Then 'ThisWorkbook.Sheets("Pr?-requis").AutoFilterMode = False '--------------------- recherche dans une chaine de caracteres ------------ If InStr(1, TVal1, Target.Value) > 0 Then ' Filtre en Caisse Electricien, sur la colonne 9, avec comme crit?re la valeur entr?e ThisWorkbook.Sheets("Pr?-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value End If '------------------- recherche dans un tableau --------- 'Ok = Application.Match(Target.Value, TVal2, 0) 'If IsNumeric(Ok) Then 'test si trouve ' ' Filtre en Caisse Electricien, sur la colonne 9, avec comme crit?re la valeur entr?e ' ThisWorkbook.Sheets("Pr?-requis").Range("A7").AutoFilter Field:=9, Criteria1:=Target.Value 'End If '---------------------------------------------------------- End If End Sub
Merci pour votre réponse.
J'ai utilisé votre correctif et cela ne fonctionne toujours pas.
En effet, lorsque je renseigne la valeur dans ma première feuille, je suis toujours obliger de double cliquer dans l'autre feuille sur la cellule équivalente pour que la macro fonctionne.
Voici mon fichier sous le lien suivant :
https://www.cjoint.com/c/JCvkQUQxrfv
D'avance merci pour votre aide.