GNT sans publicité, site mobile, fonctionnalitées exclusives...

Compter croix

Le
nicolas65
Bonjour à tous,

Je sais faire des croix dans des cases par un double clic dans une feuille
entière. Y-a-t-il moyen de réduire la zone à certaines cellules ?
T16 ; W16; Z16; AC16; AF16 ou AI16
T19 ; W19; Z19; AC19; AF19 ou AI19
T21 ; W21; Z21; AC21; AF21 ou AI21

T55 ; W55; Z55; AC55; AF55 ou AI55
J'aimerais également qu'un nouveau clic dans une cellule contenant dèja une
croix fasse disparaitre cette croix
J'aimerais enfin qu'il ne puisse pas y avoir deux croix dans la même ligne.

Merci

PS: Par croix il faut entendre en fait une bordure en forme de croix
(diagonales d'une case)
Lire les 7 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
AV
Le #1935373
En ayant d'abord nommé ta plage (appui sur la touche Ctrl puis sélection des
cellules puis insertion Nom > définir > "laZone")
Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal zz As Range, Cancel As Boolean)
If Intersect(zz, [laZone]) Is Nothing Then Exit Sub
colMax = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
If zz.Borders(xlDiagonalDown).LineStyle + _
zz.Borders(xlDiagonalDown).LineStyle = 2 Then
zz.Borders(xlDiagonalDown).LineStyle = xlNone
zz.Borders(xlDiagonalUp).LineStyle = xlNone
Else
For i = 1 To colMax
If Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle _
+ Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle = 2 _
Then x = x + 1
Next
If x = 0 Then
zz.Borders(xlDiagonalDown).LineStyle = xlContinuous
zz.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
End If
Cancel = True
End Sub

AV
nicolas65
Le #1935360
Merci pour votre réponse rapide. J'ai cependant un problème dans la sélection
de mes cellules. Mes cellules à sélectionner ne sont pas contigues et lorsque
j'essaye de faire plus d'une vingtaine de sélections, la sélection revient à
zéro. Hors j'ai 78 cellules à sélectionner minimum mais j'aurais aimé si
possible 156
Merci


En ayant d'abord nommé ta plage (appui sur la touche Ctrl puis sélection des
cellules puis insertion Nom > définir > "laZone")
Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal zz As Range, Cancel As Boolean)
If Intersect(zz, [laZone]) Is Nothing Then Exit Sub
colMax = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
If zz.Borders(xlDiagonalDown).LineStyle + _
zz.Borders(xlDiagonalDown).LineStyle = 2 Then
zz.Borders(xlDiagonalDown).LineStyle = xlNone
zz.Borders(xlDiagonalUp).LineStyle = xlNone
Else
For i = 1 To colMax
If Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle _
+ Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle = 2 _
Then x = x + 1
Next
If x = 0 Then
zz.Borders(xlDiagonalDown).LineStyle = xlContinuous
zz.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
End If
Cancel = True
End Sub

AV





nicolas65
Le #1935228
Bonjour,

J'ai toujours le même problème pour définir le nom de ma zone. J'ai essayé
de contourner le problème en tentant de nommer la zone directement dans la
macro mais je n'ai pas réussi


En ayant d'abord nommé ta plage (appui sur la touche Ctrl puis sélection des
cellules puis insertion Nom > définir > "laZone")
Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal zz As Range, Cancel As Boolean)
If Intersect(zz, [laZone]) Is Nothing Then Exit Sub
colMax = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
If zz.Borders(xlDiagonalDown).LineStyle + _
zz.Borders(xlDiagonalDown).LineStyle = 2 Then
zz.Borders(xlDiagonalDown).LineStyle = xlNone
zz.Borders(xlDiagonalUp).LineStyle = xlNone
Else
For i = 1 To colMax
If Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle _
+ Cells(zz.Row, i).Borders(xlDiagonalDown).LineStyle = 2 _
Then x = x + 1
Next
If x = 0 Then
zz.Borders(xlDiagonalDown).LineStyle = xlContinuous
zz.Borders(xlDiagonalUp).LineStyle = xlContinuous
End If
End If
Cancel = True
End Sub

AV





AV
Le #1935213
J'ai toujours le même problème pour définir le nom de ma zone. J'ai essayé
de contourner le problème en tentant de nommer la zone directement dans la
macro mais je n'ai pas réussi


Suggestions :
* Utiliser la méthode Union
* Comme les cellules contenant des "croix" ne me semble pas destinées à recevoir
autre chose, tu pourrais les formater d'une façon bizarroïdes (type de police,
couleur...etc) et dans la proc évènementielle faire, avant exécution de la série
d'instructions, un test sur "zz"

AV

nicolas65
Le #1935200
Bonjour,
Tout ceci semble très intéressant mais je ne sais pas faire ni l'une ni
l'autre des solutions
Merci

J'ai toujours le même problème pour définir le nom de ma zone. J'ai essayé
de contourner le problème en tentant de nommer la zone directement dans la
macro mais je n'ai pas réussi


Suggestions :
* Utiliser la méthode Union
* Comme les cellules contenant des "croix" ne me semble pas destinées à recevoir
autre chose, tu pourrais les formater d'une façon bizarroïdes (type de police,
couleur...etc) et dans la proc évènementielle faire, avant exécution de la série
d'instructions, un test sur "zz"

AV






Publicité
Suivre les réponses
Poster une réponse
Anonyme