Comment décocher une cellule avec le double clic?
Chris45 -
Bonjour,
je bloque sur le cas suivant:
quand je double clique dans une cellule, elle devient jaune, cela j'ai réussi à le faire avec le code suivant pour l'ensemble de ma feuille de calcul excel :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target.Interior.Color = vbYellow
End Sub
A présent, je voudrais double cliquer sur une autre cellule de la même plage (et non pas de la feuille de calcul entière parce que j'ai plusieurs "rubriques") , cellule qui deviendrait donc jaune, mais en faisant cela la cellule précédemment surlignée redeviendrait sans couleur automatiquement. Ou bien double cliquer à nouveau sur cette première cellule surlignée afin qu'elle redevienne sans couleur, c'est peut-être plus simple...?
Et étendre cette manipulation ensuite à toute la feuille de calcul, plage par plage, mais comme c'est du code, j'imagine que reproduire la mise en forme ne fonctionnerait pas...
J'espère que c'est assez clair et je remercie d'avance les personnes qui pourront m'aider.
Windows / Edge 115.0.1901.203
- Comment décocher une cellule avec le double clic?
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Excel cellule couleur si condition texte - Guide
9 réponses
Bonjour,
merci de votre intérêt. J'ai ouvert le lien mais n'ai pas pu visualiser le code utilisé, aussi est-il possible de me l'envoyer ?
Un grand merci.
Bonjour
La macro fonctionnait ?
Alt-F11 pour accéder au code
Option Explicit Const jaune = 6 ' plages nommées dans la feuille Const P1 = "plage1" Const P2 = "plage2" Const P3 = "plage3" Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range(P1)) Is Nothing Then Range(P1).Interior.ColorIndex = xlNone Target.Interior.ColorIndex = jaune Target.Offset(1, 0).Select ElseIf Not Intersect(Target, Range(P2)) Is Nothing Then Range(P2).Interior.ColorIndex = xlNone Target.Interior.ColorIndex = jaune Target.Offset(1, 0).Select ElseIf Not Intersect(Target, Range(P3)) Is Nothing Then Range(P3).Interior.ColorIndex = xlNone Target.Interior.ColorIndex = jaune Target.Offset(1, 0).Select End If End Sub
Cdlmnt
Bonjour,
merci à vous, je viens d'essayer mais la fenêtre suivante s'ouvre:
erreur d'exécution 1004: la méthode 'Range' de l'objet a échoué
J'ai pourtant bien sélectionné mes plages en les nommant. A savoir que chacune de mes plages est constituée de 4 ou 5 cellules les unes en dessous des autres à la suite, sur une seule colonne mais donc sur plusieurs lignes, je ne sais pas si cela joue sur la dénomination Range.
Savez-vous ce qu'est l'erreur 1004?
Sinon, je laisse de côté il n'y a aucune urgence dans ma demande.
Je vous remercie encore de votre aide et de votre temps.
Cdt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour
erreur d'exécution 1004: la méthode 'Range' de l'objet a échoué
Je pense que la plage n'est pas reconnue. Tu dis que tu as nommé les plages, mais as tu changé les noms dans le code ?
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message.
1) Tu vas dans http://cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt
Bonjour,
Oui, j'ai changé les noms dans le code pourtant, voici un bout de mon fichier, merci de votre aide :
https://www.cjoint.com/data3/MHCmB4S12tX_FICHE-SCORING2023v3.xlsm
Cdt,
Bonjour
Le lien que tu as envoyé n'est pas correct. Il devrait ressembler à ça
https://www.cjoint.com/c/MHCocr8rfCB
Cdlmnt
Bon, en bidouillant un peu, j'ai tenté ce lien
https://www.cjoint.com/c/MHCmB4S12tX
La solution à ton pb, dans le code il te faut mettre tous les noms de plage entre guillemets (dans mon code, j'avais attribué les noms de plage à des constantes : const P1 = "plage1", ...)
If Not Intersect(Target, Range("plage1")) Is Nothing Then
Range("plage1").Interior.ColorIndex = xlNone
Target.Interior.ColorIndex = jaune
Target.Offset(1, 0).Select
Cdlmnt
PS. De plus, tu as oublié de définir la constante jaune en début de code
Les deux premières lignes de ton code doivent être
Option Explicit
Const jaune = 6