Etendre double-clic cellule à plusieurs

dev_co

XLDnaute Occasionnel
Bonsoir
Ci-joint la macro que je voudrais modifier en gros si on double clique une cellule elle se colore et si erreur on re double clique et revient vierge
J'aimerais pouvoir selectionner plusieurs cellules ex : E9 à H9 ( donc par ligne) et au double Clic > colorier fond rouge comme dans le code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("C5:L22")) Is Nothing Then
With Target
If Selection.Interior.ColorIndex = 3 Then
Selection.Interior.ColorIndex = xlNone
Else
Selection.Interior.ColorIndex = 3
End If
End With
End If
End Sub
Ne dites pas qu'il faut un fichier .... je n'en ai pas ; J'ouvre un Nouveau je mets cette macro et teste : cela fonctionne bien mais juste pour UNE cellule ; Possible d'étendre à plusieurs cellules en un coup ?
Merci bien
 

dev_co

XLDnaute Occasionnel
Merci à vous , et donc AVEC UN MINIMUM D'EFFORT j'ai pu raisonner de mon côté pour pondre ceci ( je n'ai rien pompé sur le net juste rencardé sur les mots clés et syntaxe car on oublie vite)
A vous de tester dans la plage concernée : select cel deb étendre, puis clic droit et si JAUNE ça fait rien mais le reste est ROUGE
C'est la solution (testée ) que j'aurais pu fournir à n'importe quel autre "exceldownloadaute" d'ici

PS : je suis ancien analyste programmeur BASIC , C++ Fortran ..etc des années 80
 

Pièces jointes

  • exd.xlsm
    16.6 KB · Affichages: 39

Si...

XLDnaute Barbatruc
Re salut !
C'est la solution (testée ) que j'aurais pu fournir à n'importe quel autre "exceldownloadaute" d'ici
En attendant qu'un autre bénévole s'y collle ... :confused:.

Erreur dans ton code : remplace activesheets par Activesheet mais c’est une instruction ici inutile car on est déjà dans cet onglet ! De toute façon With oblige à référencer (.Range() avec le . obligatoire) !
Pour parcourir la zone
Code:
 For
      LDeb = Selection.Row    ' si on utilise plusieurs lignes
      LFin = LDeb + Selection.Rows.Count - 1    ' ligne fin idem
      CDeb = Selection.Column    ' col deb
      CFin = CDeb + Selection.Columns.Count - 1    ' col fin
      For x = CDeb To CFin
        If
          … 
      End If
      Next x
    End With
  End If
End Sub
peut être remplacé par
Code:
Dim R as range     ‘déclaration pas obligatoire mais fortement conseillée
For R in [C5:L22]     ‘la plage concernée est connue !
  …
Next
La condition est : passe au rouge quand elle n’est pas jaune (mais est-ce bien ce que tu veux ?)
D’où le code
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  If Application.Intersect(Target, [C5:L22]) Is Nothing Then Exit Sub
  Dim R As Range
  For Each R In [C5:L22]
    If R.Interior.ColorIndex <> 6 Then R.Interior.ColorIndex =3
  Next
End Sub

Ici, beaucoup ont aussi débuté au siècle dernier :p !
 

chris

XLDnaute Barbatruc
Bonjour

Y a un truc qui m'échappe : le principe n'était-il pas de colorer/décolorer les cellules sélectionnées sur clic droit ? Puis dans une seconde demande de ne pas toucher aux jaunes.
"si on double clique une cellule elle se colore et si erreur on re double clique et revient vierge
J'aimerais pouvoir selectionner plusieurs cellules ex : E9 à H9 ( donc par ligne)"
"Si on selectionne par ex E9 - H9 et qu'il y a 2 cellules JAUNE ( 43 je crois ?) qu'il colorie en rouge Tout SAUF le jaune"


C'est bien ce que fait mon code... Sous réserve que la sélection soit cohérente. Que des rouges + d'éventuelles jaunes ou que des vides + d'éventuelles jaunes. Il était mentionné en cas d'erreur donc, sous-entendu, sur la plage colorée à tord....

Si on doit prévoir une sélection erratique des cellules mélangeant des rouges et des vides, il fallait le préciser et c'est alors un autre code...
 

dev_co

XLDnaute Occasionnel
Bonjour
Merci pour les remarques , mais je pense ne pas avoir mis le bon fichier ,dont le code était dans l'appli réelle
1) au tout début j'ai juste voulu savoir si on pouvait colorer auto cellule par cellule( double clic) et comme j'ai vu que c'était facilement possible via un extrait du forum en 2009 ..ou ?
2) ensuite j'ai pensé pourquoi pas à plusieurs d'un coup , puis effacer si erreur
3) Après j'ai voulu extrapoler car je me suis aperçu qu'il y avait des jours fériés ( jaune) dans la semaine pour simplifier la saisie . j'ai cherché à tout sélectionner et ne mettre du rouge partout et garder le jaune idem pour effacer ( garder jaune).
conclusion : il me semble que je vais garder mes variables de ligne et col car chaque ligne est affectée à une personne , c'est un classeur partagé en réseau sur le serveur et je ne veux pas qu'une, puisse aller sur la ligne d'une autre personne ( elle ont chacune un code que je traite) ex : si le code ( pwd) de Dupont est correct il n'aura accès qu'à la ligne 9 ... etc
Dernière question avant de clore : le fichier existe déjà partagé mais en xlsx ; je n'ai jamais testé en xlsm ? serait-il possible d'être SUR qu'il n'y ait Pas à cliquer sur les alertes d'ouverture Activer Modif et Activer Contenu ( pour le VBA) ?? car parfois on a ou pas !
Bon dimanche
 

Pièces jointes

  • exd.xlsm
    14.9 KB · Affichages: 26

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55