un clic=1, reclic efface. Comment faire?

C

Cédric

Guest
Sur un tableau journalier je souhaiterais qu'en cliquant simplement dans une case un "1" s'incrive dans celle-ci et en recliquant dessus le 1 s'efface afin de gagner du temps.
Pouvez vous m'aider s'il vous plait, je suis novice sur excel donc j'aimerais avoir une explication complete.
En vous remerciant par avance.
Cédric
 
L

LaurentTBT

Guest
Bonjour Cédric

Il faut que tu utilises l'événement selection_Cahnge de ta feuille:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
If Target = 1 Then
Target = ""
Else
Target = 1
End If
Range("A1").Select
End If
End Sub

Ouvre l'éditeur VBA, puis CTL+R si l'explorateur de projet n'est pas affiché.
Ensuite, click sur Feuil1.
Dans la page qui s'ouvre, colle la macro ci-dessus, en remplaçant B2 par la cellule que tu veux.

Bonne journée.
Laurent.
 
L

LaurentTBT

Guest
Bon, je vais essayer:

Depuis ton fichier excel, tu tapes Alt F11
Cela t'ouvre l'éditeur VBA.

Je ne sais pas comment il est configuré par défaut.
Si tu n'as pas une petite fenêtre intitulée "Projet - VBAProject", alors fais CTRL+R
Cette foisn tu as la fenêtre intitulée "Projet - VBAProject", dans laquelle tu as une arborescence. Développe cette arborescence jusqu'à trouver le nom de la feuille qui t'intéresse (par exemple Feuil1)
Double-clique sur ce nom de feuille. Cela fait apparaître une autre fenêtre blanche qui commence par deux boites de saisie "(general)" et "(déclarations)"
Dans cette feuille blanche, tu copies le code que je t'ai donné ci-dessus.
Tu n'as qu'à changer "B2" (2ème ligne du code) par la cellule où tu veux afficher ou supprimes le 1.

Retourne dans excel, et clique plusieurs fois sur ta cellule.

Bon courage.
Laurent.
 
D

Dan

Guest
Bonjour,

Cédric reste sur le même post sinon on ne va pas s'y retrouver !!

Chris t'a répondu hier sur ce fil <http://www.excel-downloads.com/html/French/forum/messages/1_59720_59720.htm> en te fournissant un fichier et la macro qui fait ce que tu demandes aujourd'hui.

Merci de lire la charte SVP.

@+

Dan
 
C

Cédric

Guest
Laurent, super ça marche, merci beaucoup.
Mais j'ai quelques petits soucis. En effet, je souhaiterais étendre cette fonction sur plusieurs ligne. Que dois je faire?
J'ai plusieurs ligne, certaines se suivent d'autres non. Exemple, j'ai les cellules de M11 à M295, N11 à N295, O11 à O 295 puis X11 à X295, Y11 à Y295 ainsi de suite.
Ensuite, à quoi sert la fonction: "Range("A1").Select"
J'ai l'impression qu'elle me renvoi à la 1er cellule assez souvent. Est elle vraiment indispensable?

En te remerçiant une fois de plus,.

Cédric
 
P

Pascal76

Guest
Bonjour Cedric

Pour étendre ta selection à plusieurs cellules tu changes la ligne

If Not Application.Intersect(Target, Range("B2")) Is Nothing Then

PAR

If Not Application.Intersect(Target, Range("M11:M295,N11:N295,O11:O295,X11:X295,Y11:Y295")) Is Nothing Then

J'espère que cela réponds à ta question

Bon courage

Pascal
 
L

LaurentTBT

Guest
Bonjour à tous.

Cédric, juste vite fait, une réponse pour ta question sur la selection de la cellule A1.

Si tu cliques sur M11, son contenu est modifié, et la cellule est modifiée.
Si tu cliques à nouveau sur la MÊME cellule M11, cette fois la procédure ne se déclenche pas. En effet, il n'y a pas d'événement SelectionChange, puisque la sélection ne change pas.

Une astuce pour réinitailiser la procédure dans ce cas là était de forcer à la fin la sélection d'une cellule neutre.

Vu l'étendue de ta plage à prendre en compte, c'est sûr qu'un retour sur une cellule fixe n'est pas satisfaisant.

D'autre part, je te fais remarquer que, une fois que tu as sélectionné M11, si tu utilises les flêches bas ou droite pour te déplacer, les cellules où tu te déplace, par exemple M12 où N11 seront elles-aussi modifiées.

C'est pourquoi je te conseille de mettre toute ta macro dans la procédure double-click:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("M11:M295,N11:N295,O11:O295,X11:X295,Y11:Y295")) Is Nothing Then
If Target = 1 Then
Target = ""
Else
Target = 1
End If
Cancel = True
End If
End Sub

Le Cancel=true te permet de ne pas avoir le curseur dans ta barre de formule à la fin.


Bonne soirée.
Laurent.
 

Discussions similaires

Statistiques des forums

Discussions
312 971
Messages
2 094 045
Membres
105 926
dernier inscrit
Odyssea