Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Bonjour Robert et M12, merci pour vos solutions, elles répondent à ce que je désirai. Vos codes sont différents mais le résultat est le même, pourriez-vous m'expliquer la différence entre vos codes
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Ben... je dirais que mon code est basique et brut (comme moi finalement) et que celui de M12 est plus capillotracté... Mais bon, je laisse les mouches tranquilles...
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…