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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
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
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
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
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
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
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
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
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
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
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
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"
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
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
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"
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"
MERCI je touche presque au but. Il ne me reste que plus que quelques petites adaptations que je devrais réussir à faire tout seul. Ce sera surement plus simple que d'adapter l'exemple sur les Doublons, Comparaisons, MAJ ...
Un exemple là : http://cjoint.com/?mwpJTaq0fC
AV
MERCI je touche presque au but. Il ne me reste que plus que quelques petites
adaptations que je devrais réussir à faire tout seul. Ce sera surement plus
simple que d'adapter l'exemple sur les Doublons, Comparaisons, MAJ ...
MERCI je touche presque au but. Il ne me reste que plus que quelques petites adaptations que je devrais réussir à faire tout seul. Ce sera surement plus simple que d'adapter l'exemple sur les Doublons, Comparaisons, MAJ ...