Code événementiel avec condition

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

criscris11

XLDnaute Accro
Bonsoir à tous,
J'utilise ce code événementiel et je n'arrive pas à le modifier en rajoutant une condition :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Not Intersect(Target, Range("D3:D150")) Is Nothing Then
    Sheets("Brouillon notation EVAT").Range("AE2").Value = Target.Offset(0, -3).Value
    Application.GoTo Sheets("Brouillon notation EVAT").Range("A2")
End If
Cancel = False
End Sub
or il faudrait que je rajoute une condition par rapport au contenu de la colonne B : si MDR dans la colonne B, allez à la feuille "Brouillon notation EVAT" et si S/OFF dans la colonne B, allez à la feuille "Brouillon notation S/OFF"
Merci à ceux qui voudront bien m'éclairer sur ce petit problème. Bonne soirée à tous.
 
Re : Code événementiel avec condition

Salut cris, le forum

euh, dans l'énoncé, tu parles de la colonne D en référence,

If Not Intersect(Target, Range("D3😀150"))

puis aller dans la feuille ayant pour valeur la colonne B (donc Offset(0, -2))

Target.Offset(0, -3).Value


Puis, tu parles de la cellule AE2

Sheets("Brouillon notation EVAT").Range("AE2")

et ensuite Goto :

Application.GoTo Sheets("Brouillon notation EVAT").Range("A2")

Cellule A2 ou AE2?

Sinon, avec un select case, pas de souci, mais donne les bonnes références, cela sera plus facile...😉
Bonne soirée
 
Re : Code événementiel avec condition

Bonsoir

Ca m'a l'air trop simple
J'ai du raté quelque chose
Je ne teste que la 1ère cellule de la colonne B

Insére ces lignes apres ton Endif ou avant ton If Not Intersect ...

Code:
If Target.Column = 2 Then
  If Range("B1") = "MDR" Then Application.GoTo Sheets("Brouillon notation EVAT").Range("A2")
  If Range("B1") = "S/OFF" Then Application.GoTo Sheets("Brouillon notation S/OFF").Range("A2")
End If
 
Re : Code événementiel avec condition

Bonsoir bhbh, banzai,
bhbh : on double clic dans la colonne D mais c'est la valeur de la colonne A qui est extraite (nom-prénom pour gérer les doublons événtuels). Pour le reste, c'est simple : la valeur extraite sur le double clic va en AE2 qui va servir à séparer le nom du prénom (cellule de stockage de la valeur) et le A2 c'est la cellule qui est sélectionnée à l'affichage de la feuille car AE2 est masquée.
Banzai : en fait, il faut tester la valeur de la colonne B par rapport ou la ligne a déclenchée l'événement.
Merci à tous les deux et bonne soirée.
 
Re : Code événementiel avec condition

Bonsoir
Et avec cette modif c'est toujours pas ça ?

Code:
If Target.Column = 2 Then
  If Cells(Target.row , 2) = "MDR" Then Application.GoTo Sheets("Brouillon notation EVAT").Range("A2")
  If Cells(Target.row , 2) = "S/OFF" Then Application.GoTo Sheets("Brouillon notation S/OFF").Range("A2")
End If
 
Re : Code événementiel avec condition

Re,
Banzai, c'est la même chose. Je vais essayer d'être plus clair car je me suis peut-être mal exprimé : je clique sur un nom en colonne D (D3 à D150), si c'est un MDR (colonne B) le code doit récupérer la valeur de la colonne A et le mettre dans la feuille "Brouillon notation EVAT" en AE2 et si c'est un S/OFF (toujours dans la colonne B de la même ligne qui déclenche le code) le code doit récupérer la valeur de la colonne A et le mettre dans la feuille "Brouillon notation SOFF" en D2.
En espérant que cela soit plus explicite pour vous.
Merci d'avance et bonne soirée.
 
Re : Code événementiel avec condition

Bonsoir le fil,
les modifs en rouge (à tester):
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Not Intersect(Target, Range("D3:D150")) Is Nothing Then
[COLOR="Red"]    If Target.Offset(0, -2).Value = "MDR" Then
        Sheets("Brouillon notation EVAT").Range("AE2").Value = Target.Offset(0, -3).Value
        Application.GoTo Sheets("Brouillon notation EVAT").Range("AE2")
    ElseIf Target.Offset(0, -2).Value = "S/OFF" Then
        Sheets("Brouillon notation SOFF").Range("D2").Value = Target.Offset(0, -3).Value
        Application.GoTo Sheets("Brouillon notation SOFF").Range("D2")
    End If[/COLOR]
End If
Cancel = False
End Sub
Edit: ce vient de faire des modifs (23h37)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
16
Affichages
2 K
Retour