XL 2013 Amélioration code VBA

Kaizers

XLDnaute Occasionnel
Bonjour à tous,

J'ai ce code, qui fonctionne mais qui est imparfait pour mon utilisation

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Application.Intersect(Target, Range("F8:F19")) Is Nothing Then 'modifie ton tableau
If Target.Value = "" Then
Target.Value = "X"
Else
Target.Value = ""
End If
End If
End Sub

Mettre un X dans la case ou je clic, mais j'aimerai que quand je clique sur une autre case de ma plage la croix se déplace

j'ai bien tenté d'ajouter : Range("F8:F19").ClearContents

mais si je clique hors de la zone ca efface ma croix, logique
 
Solution
ha ok..
ton clearcontents est bon je pense.. il faut juste le placer au bon endroit dans ton code
en prenant soin de desactiver les évènements pour éviter de lancer en boucle le code de l'évent change..

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F8:F19")) Is Nothing Then 'modifie ton tableau
application.enableevents=false
Range("F8:F19").clearcontents
target.Value = iif(Tarrget.Value = "X";"";"X")
End If
application.enableevents=true
End Sub

vgendron

XLDnaute Barbatruc
Bonjour

Si je devine ton besoin
tu as un tableau avec plusieurs colonnes
tu souhaites pouvoir mettre UNE seule croix parmis ces colonnes..

à chaque clic, il faut donc effacer les colonnes (de la ligne concernée) et mettre la croix sur la target
un bout de fichier serait utile
 

vgendron

XLDnaute Barbatruc
ha ok..
ton clearcontents est bon je pense.. il faut juste le placer au bon endroit dans ton code
en prenant soin de desactiver les évènements pour éviter de lancer en boucle le code de l'évent change..

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F8:F19")) Is Nothing Then 'modifie ton tableau
application.enableevents=false
Range("F8:F19").clearcontents
target.Value = iif(Tarrget.Value = "X";"";"X")
End If
application.enableevents=true
End Sub
 

vgendron

XLDnaute Barbatruc
vu l'erreur dans mon code

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F8:F19")) Is Nothing Then 'modifie ton tableau
application.enableevents=false
Range("F8:F19").clearcontents
target.Value = iif(Target.Value = "X";"";"X") 'il y avait un r de trop sur target dans iif
End If
application.enableevents=true
End Sub
 

Discussions similaires

Réponses
1
Affichages
204