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 !
bonjour à tous,
j'ai un code sur click droit qui inscrit une valeur dans une cellule (c43)
ca fonctionne mais j'aimerais deux choses
qu'un click droit sur une autre cellule (par exemple f43) ne modifie pas (c43)
que ce code puisse fonctionner sur une autre cellule avec une autre valeur
je ne trouve pas la syntaxe pour faire cela
merci
VB:
On Error Resume Next
If Range("c43") Is Nothing Then Exit Sub
Cancel = True
If IsEmpty(Range("c43")) Then
Range("c43") = "5"
ElseIf Range("c43") = "5" Then
Range("c43") = ""
Cancel = True
End If
bonjour à tous,
j'ai un code sur click droit qui inscrit une valeur dans une cellule (c43)
ca fonctionne mais j'aimerais deux choses
qu'un click droit sur une autre cellule (par exemple f43) ne modifie pas (c43)
que ce code puisse fonctionner sur une autre cellule avec une autre valeur
je ne trouve pas la syntaxe pour faire cela
merci
VB:
On Error Resume Next
If Range("c43") Is Nothing Then Exit Sub
Cancel = True
If IsEmpty(Range("c43")) Then
Range("c43") = "5"
ElseIf Range("c43") = "5" Then
Range("c43") = ""
Cancel = True
End If
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
If Not Application.Intersect(Target, Range("C43")) Is Nothing Then
Cancel = True
If IsEmpty(Range("c43")) Then
Range("c43") = "5"
ElseIf Range("c43") = "5" Then
Range("c43") = ""
End If
End If
If Not Application.Intersect(Target, Range("F43")) Is Nothing Then
Cancel = True
If IsEmpty(Range("F43")) Then
Range("F43") = "5"
ElseIf Range("c43") = "5" Then
Range("F43") = ""
End If
End If
End Sub
re
bonjour @M12 espérons qu'il en n'ai pas une ribambelle de cellules à gérer
on parle du click droit
donc selon moi un test intersect pour une cellule dans une cellule est inutile
un simple test address suffit
ensuite on peut largement simplifier l'ecriture du code de l'intention
on va faire ça dans un select case
on peut en rajouter autant que l'on veut sans faire pour autant un test intersect et un double if
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address(0, 0)
Case "F43": Cancel = True: Target = String(Abs(Target = ""), "5")
Case "C43": Cancel = True: Target = String(Abs(Target = ""), "5")
'etc...
Case Else: cancel=false:Exit Sub
End Select
End Sub
je dirais même que je me suis fourboyé si c'est toujours le chiffre 5
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address(0, 0)
Case "F43","C43": Cancel = True: Target = String(Abs(Target = ""), "5")
Case Else: Exit Sub
End Select
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
If Not Application.Intersect(Target, Range("C43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
ElseIf Not Application.Intersect(Target, Range("F43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
End If
End Sub
re @M12
tu n'a pas compris ma démarche
ton dernier exemple = 2 tests intersect + 4 if en 2 if/else pour 2 cellules
c'est pas faux mais comme je disais si il en a une ribambelle a faire là ça risque d’être un peu too much
avec ma méthode
tu teste le target.count à 1 d'office(si plus d'une cellule sélectionnées bye bye!!)
si c'est une autre que ces deux là bye bye aussi
ssi c'est un des target désirés bingo!!
le tout en une seule ligne
bref autrement dit je remplace ceci
VB:
If Not Application.Intersect(Target, Range("C43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
End If
If Not Application.Intersect(Target, Range("F43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
End If
re @M12
tu n'a pas compris ma démarche
ton dernier exemple = 2 tests intersect + 4 if en 2 if/else pour 2 cellules
c'est pas faux mais comme je disais si il en a une ribambelle a faire là ça risque d’être un peu too much
avec ma méthode
tu teste le target.count à 1 d'office(si plus d'une cellule sélectionnées bye bye!!)
si c'est une autre que ces deux là bye bye aussi
ssi c'est un des target désirés bingo!!
le tout en une seule ligne
bref autrement dit je remplace ceci
VB:
If Not Application.Intersect(Target, Range("C43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
End If
If Not Application.Intersect(Target, Range("F43")) Is Nothing Then
Cancel = True
If IsEmpty(Target.Value) Then Target.Value = "5" Else Target.Value = ""
End If
merci de votre aide
je pense que je me suis mal exprimé
pour la cellule (f43) je souhaite mettre une valeur différente de (c43)
(f43) = 14,5
j'ai essayé vos deux codes, aucun ne semblent vouloir fonctionner malheureusement
re
et ben tu les resépare et met 14.5 a la place de 5 dans le case "F43"
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address(0, 0)
Case "F43": Cancel = True: Target = String(Abs(Target = ""), "14,5")
Case "C43": Cancel = True: Target = String(Abs(Target = ""), "5")
'etc...
Case Else: cancel=false:Exit Sub
End Select
- 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