exécution automatique d'une macro si changement de valeur d'une cellule

FloreR

XLDnaute Nouveau
Bonjour à tous,

j'ai un fichier dans lequel deux critères sont rentrés, respectivement en E5:F5 (cellules fusionnées) et E7:F7 (même chose).
La valeur de ces critères peut varier, et les choix sont conditionnées par une liste de validation de données. En gros, dans E5, je peux choisir "N" ou "T", et dans E7 "avec" ou "sans".

Selon les valeurs de ces deux cellules, j'aimerais que le reste de ma feuille soit classé différemment. J'applique un critère de tri des lignes qui sont situées en dessous différent, selon que j'ai N-avec, N-sans, T-avec, T-sans.

Je n'arrive pas à automatiser cela.
D'après ce que j'ai réussi à glaner par ailleurs sur le forum, je suppose que c'est quelque chose comme cela qu'il faudra écrire :

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E5") = "T" & Range("E7") = "avec" Then
'j'exécute mon tri avec une formule du genre application("mamacrodetriT").run
End If
If Range("E5") = "N" & range("E7") = "sans" Then
'j'exécute un autre tri
'etc etc
End If
End Sub

Seulement, ce que j'ai testé pour l'instant (à savoir quelque chose d'un peu plus simple pour une première étape, histoire de voir si la méthode est bonne, en l'occurrence simplement changer la valeur d'une autre cellule, dans laquelle je n'ai aucune information - voir le code ci-dessous) ne fonctionne pas, et ça me fait systématiquement planter excel sur mon PC...


Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E5") = "propriétés de danger T (toxicité humaine)" Then
Cells(5, 7) = "T"
End If
If Range("E5") = "propriétés de danger N (danger pour l'environnement)" Then
Range("G5") = "N"
End If
End Sub

Pourriez-vous m'aider ?
Merci d'avance !!!
Flore
 

bond

XLDnaute Occasionnel
Re : exécution automatique d'une macro si changement de valeur d'une cellule

Sans un bout de fichier, voilà le code de mon imagination
Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Crit
If Target.Address = "$E$5" Or Target.Address = "$E$7" Then
Crit = Range("e5").Value & Range("e7").Value
    Select Case Crit
        Case "Navec"
            MsgBox "Tri selon E5=N et E7=avec"
            'Exemple de tri :
            Range("A10:C20").Select
                ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
                ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B11:B20") _
                    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                With ActiveWorkbook.Worksheets("Feuil1").Sort
                    .SetRange Range("A10:C20")
                    .Header = xlYes
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .SortMethod = xlPinYin
                    .Apply
                End With
            'Fin de l'exemple de tri
        Case "Tavec"
            MsgBox "Tri selon E5=T et E7=avec"
            '...
        Case "Nsans"
            MsgBox "Tri selon E5=N et E7=sans"
            '...
        Case "Tsans"
            MsgBox "Tri selon E5=T et E7=sans"
            '...
        Case Else
            MsgBox "E5 et E7 différents de N/T - avec/sans"
    End Select
End If
End Sub
 

FloreR

XLDnaute Nouveau
Re : exécution automatique d'une macro si changement de valeur d'une cellule

Merci beaucoup !
En faisant un petit mélange de ton code et de mes anciennes macros, j'ai réussi à obtenir ce que je voulais...

Encore merci pour cette réponse qui m'a aidée à trouver la solution... Que deviendrait-on sans excel-downloads et tous ses contributeurs ? :)
 

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise