Procédure événementielle

Emile63

XLDnaute Junior
Bonjour a tous, je cherche a créer une macro événementielle,
-->
Sub Worksheet_Change(ByVal Target As Range)
Dim MaCellule$
MaCellule = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
On Error GoTo Sortie
If Intersect(Range("CodeSélection"), Target) Is Nothing Then GoTo Sortie
Call AppliquerFiltre
Sortie:
Application.Goto Reference:=Range("A1"), Scroll:=True
End Sub

qui réagit sur les changement de la cellule liée [CodeSélection] à une liste déroulante.
Malheureusement ça ne fonctionne pas étant donné (je suppose ) que ce n'est pas moi qui change la valeur de la cellule liée à la liste...
- Est-ce que quelqu'un pourrait me mettre sur la piste d'une solution ? :)

Je vous remercie d'avance pour votre aide,
Emile
 

Emile63

XLDnaute Junior
Merci jfmmarques pour votre suggestion. :)
Malheureusement ça ne va pas trop bien, par contre j'ai attribué la macro à la liste déroulante, et moyennant quelques modifs, ça fonctionne mieux qu'en passant par le worksheetChange.
 

fanch55

XLDnaute Barbatruc
Bonjour Emile,
en supposant que la plage d'entrée est une zone s'appelant "Liste",
1583943514558.png

et que la macro associée s'appelle CBX_Click :
( le code est conçu pour rester dans celui de la feuille, pas d'un module )

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case True
    Case Not Intersect([CodeSélection], Target.Cells(1)) Is Nothing: Call AppliquerFiltre
    Case Else: DoEvents
    End Select
    Application.Goto Cells(1), True
End Sub
Sub CBX_Click()
    Worksheet_Change Range(Shapes(Application.Caller).ControlFormat.LinkedCell)
End Sub
Sub AppliquerFiltre()
    MsgBox "J'ai cliqué sur l'élément " & [CodeSélection] & vbLf & _
            "qui correspond à """ & [Liste].Cells([CodeSélection]) & """"
End Sub

Mais il est vrai que le worksheet_change n'est pas vraiment utile, autant tout faire dans la macro associée.
VB:
Sub CBX_Appliquerfiltre()
    With Shapes(Application.Caller).ControlFormat
        MsgBox "J'ai cliqué sur l'élément " & Range(.LinkedCell) & vbLf & _
            "qui correspond à """ & Range(.ListFillRange).Cells(Range(.LinkedCell)) & """", _
            vbInformation, Application.Caller
    End With
    Application.Goto Cells(1), True
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
un combobox
comment est elle remplie? par un autre range ou le range concerné??

-----------------------------------------------
si pas range concerné
dans ca cas la il te faut le match de la valeur dans la plage de recherche dans son événement click ou change
un petit evaluate index>>equiv fera très bien l'affaire ou les fonctions native find etc....
----------------------------------------
si range concerné et contiguë
le listindex+1 est tout indiqué
---------------------------------------
si range concerné et non contigues
tu aurait du mettre une 2d colonne et dans le additem de ta boucle ajouter le row
et le .list(.listindex,1) te donnerais la bonne ligne
-------------------------------------------------
dernière solution
tu filtre ,tu prend la 2eme, tu defiltre
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa