1,2,0

Yann71

XLDnaute Occasionnel
Bonjour, je patauge un peu. Qui pourrait m'aider à trouver le code VBA qui servirait, à chaque clic sur la même cellule elle s'incrémente. Premier clic affiche 1, deuxième clic affiche 2 et troisième clic efface le contenu.
Merci d'avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Yann, bonjour le forum,

Au DOUBLE clic :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Value = "" Then Target.Value = 1: GoTo fin
If Target.Value = 1 Then Target.Value = 2: GoTo fin
If Target.Value = 2 Then Target.Value = ""
fin:
Cancel = True
End Sub
 

M12

XLDnaute Accro
Bonjour
A tester avec double clic
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim Nb()
  Nb = Array(1, 2, "")
  On Error GoTo fin
  Target.Value = Nb(Application.WorksheetFunction.Match(Target.Value, Nb, 0) Mod 3)
  Cancel = True
  Exit Sub
fin:
  Target.Value = Nb(0)
  Cancel = True
End Sub

Edit: Bonjour Robert
 

Yann71

XLDnaute Occasionnel
Merci pour les explications. Est-ce qu'il est possible de réaliser dans la même optique, au lieus de cliquer 2x pour avoir 2 de pouvoir simplifier la saisie qu'à chaque clique la cellule s'incrémente. Je m'explique 1 clique=1 puis cliquer une deuxième fois et non 2x pour afficher 2 pareille pour 3 et vider la cellule
 

job75

XLDnaute Barbatruc
Bonjour Yann71, M12, Robert, Philippe, Bernard,

Pour le fun avec un Label auxiliaire :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex <> 6 Or Target.Count > 1 Then Label1.Visible = False: Exit Sub
Target = Choose(Target Mod 3 + 1, 1, 2, Empty)
With Label1
    .Caption = Target
    .Top = Target.Top
    .Left = Target.Left
    .Width = Target.Width
    .Height = Target.Height
    .Visible = True
End With
End Sub

Private Sub Label1_Click()
Worksheet_SelectionChange ActiveCell
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Clic(1).xlsm
    26 KB · Affichages: 33

Yann71

XLDnaute Occasionnel
Bonjour tlm. En premier lieu je vous remercie pour tous les efforts fournis pour trouver une solution à mon problème. Mais malheureusement les propositions que vous m'apportez ne correspondent pas exactement à ce que je recherche, peut-être que je me suis mal exprimer. Je vais donc reformuler ma recherche.
J'aimerai que dans un groupe de cellule uniquement (par exemple de A1:C10) si je clic une fois dans A8 la cellule affiche 1 ,que si je clique à nouveau dans A8 elle affiche 2 et si je clique une troisième foi dans A8 il ne m'affiche plus rien. J'espère avoir été plus explicite dans ma recherche. Merci d'avance pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Ma proposition du #8 le fait pour toute cellule.
Il ne reste qu'à mettre devant un test classique pour sortir si Target n'appartient pas à la plage voulue.
Et peut être aussi sélectionner une autre cellule après, parce qu'un clic sur la cellule déjà sélectionnée n'est pas détectable. Ce serait donc impossible à faire si c'est ça que vous auriez voulu. Avec un clic droit, peut être…
 
Dernière édition:

Yann71

XLDnaute Occasionnel
Je comprends bien ce que tu m'expliques, mais avec ton VBA je suis obligé de cliquer 2 x pour que le nombre 1 s'affiche et le nombre 2 après avoir cliqué 2x, donc ma demande si cela est possible c'est de cliquer 1x pour que 1 s'affiche et 2 après avoir cliqué une deuxième fois
 

Discussions similaires

Réponses
10
Affichages
350

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof