Interdire de cocher une cellule si une autre est cochée
Résolu
logas
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour à tous,
Besoin d'un petit coup de main afin d'arranger cette macro que j'ai trouvé fort intéressante.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
temp = Array(" X", "")
If Not Application.Intersect(Target, Range("D4:D1048576, E4:E1048576 , F4:F1048576 , G4:G1048576 ")) Is Nothing Then
With Target
p = Application.Match(Target, temp, 0)
If Not IsError(p) Then
If p = UBound(temp) + 1 Then p = 0
Else
p = 0
End If
Target = temp(p)
Cancel = True
End With
End If
End Sub
Lorsque je double clic sur une cellule, cela me rajoute un X dans celle-ci.
J'ai donc défini les plages de valeurs ou je souhaite cocher les cellules.
Cependant je voudrais que lorsque la cellule F4 est cochée, la G4 ne puisse pas l'être et inversement..
Merci d'avance pour l'aide que vous pourrez m'apporter.
Besoin d'un petit coup de main afin d'arranger cette macro que j'ai trouvé fort intéressante.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
temp = Array(" X", "")
If Not Application.Intersect(Target, Range("D4:D1048576, E4:E1048576 , F4:F1048576 , G4:G1048576 ")) Is Nothing Then
With Target
p = Application.Match(Target, temp, 0)
If Not IsError(p) Then
If p = UBound(temp) + 1 Then p = 0
Else
p = 0
End If
Target = temp(p)
Cancel = True
End With
End If
End Sub
Lorsque je double clic sur une cellule, cela me rajoute un X dans celle-ci.
J'ai donc défini les plages de valeurs ou je souhaite cocher les cellules.
Cependant je voudrais que lorsque la cellule F4 est cochée, la G4 ne puisse pas l'être et inversement..
Merci d'avance pour l'aide que vous pourrez m'apporter.
A voir également:
- Interdire de cocher une cellule si une autre est cochée
- Excel cellule couleur si condition texte - Guide
- Bloquer une cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
- Si une cellule contient un mot alors ✓ - Forum Excel
7 réponses
Bonjour
Un exemple (les constantes sont à adapter)
Cdlmnt
Un exemple (les constantes sont à adapter)
Const codeb = 4
Const cofin = 7
Const plage = "D4:G10"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ligne As Range, li As Long, co As Long
If Not Intersect(Target, Range(plage)) Is Nothing Then
li = Target.Row
co = Target.Column
Set ligne = ActiveSheet.Range(Cells(li, codeb + 2), Cells(li, cofin))
If co = codeb Or co = codeb + 1 Then
Target.Value = "X"
Else
If Application.WorksheetFunction.CountIf(ligne, "X") = 0 Then
Target.Value = "X"
End If
End If
Target.Offset(1, 0).Select
End If
End Sub
Cdlmnt
RE,
Merci pour la rapidité, cependant à quoi correspondent :
Const codeb = 4
et
Const cofin = 7
sachant que je veux l'interdiction de cocher D4 si E4 est coché et inversement sur toute la colonne ( de D4 à D1048576 et de E4 à E1048576) , et l'interdiction de cocher F4 si G4 est coché et inversement sur toute la colonne ( de F4 à F1048576 et de G4 à G1048576).
Pour Const plage j'ai renseigné ceci afin d'encadrer toute les plages:
Const plage = "D4:G1048576"
Egalement lorsque la case est coché lorsque l'on double clic dessus le "X" ne s'efface plus.
Merci de votre aide.
Merci pour la rapidité, cependant à quoi correspondent :
Const codeb = 4
et
Const cofin = 7
sachant que je veux l'interdiction de cocher D4 si E4 est coché et inversement sur toute la colonne ( de D4 à D1048576 et de E4 à E1048576) , et l'interdiction de cocher F4 si G4 est coché et inversement sur toute la colonne ( de F4 à F1048576 et de G4 à G1048576).
Pour Const plage j'ai renseigné ceci afin d'encadrer toute les plages:
Const plage = "D4:G1048576"
Egalement lorsque la case est coché lorsque l'on double clic dessus le "X" ne s'efface plus.
Merci de votre aide.
1. sachant que je veux l'interdiction de cocher D4 si E4 est coché et inversement sur toute la colonne
tu ne l'avais pas dit!
2. codeb et cofin sont la première et la dernière colonne de la plage
3. Egalement lorsque la case est coché lorsque l'on double clic dessus le "X" ne s'efface plus.
ça n'était pas le cas?
4. Pour Const plage j'ai renseigné ceci afin d'encadrer toute les plages:
Const plage = "D4:G1048576"
c'est ce qu'il fallait faire
5. cofin n'est plus d'actualité dans la version ci-dessous (la variable codeb est toujours la première colonne de la plage)
Cdlmnt
tu ne l'avais pas dit!
2. codeb et cofin sont la première et la dernière colonne de la plage
3. Egalement lorsque la case est coché lorsque l'on double clic dessus le "X" ne s'efface plus.
ça n'était pas le cas?
4. Pour Const plage j'ai renseigné ceci afin d'encadrer toute les plages:
Const plage = "D4:G1048576"
c'est ce qu'il fallait faire
5. cofin n'est plus d'actualité dans la version ci-dessous (la variable codeb est toujours la première colonne de la plage)
Const plage = "D4:G10"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ligne As Range, li As Long, co As Long, codeb As Long
If Not Intersect(Target, Range(plage)) Is Nothing Then
li = Target.Row
co = Target.Column
codeb = Range(plage).Cells(1, 1).Column
If co = codeb Or co = codeb + 1 Then
Set ligne = ActiveSheet.Range(Cells(li, codeb), Cells(li, codeb + 1))
If Application.WorksheetFunction.CountIf(ligne, "X") = 0 Then Target.Value = "X"
Else
Set ligne = ActiveSheet.Range(Cells(li, codeb + 2), Cells(li, codeb + 3))
If Application.WorksheetFunction.CountIf(ligne, "X") = 0 Then Target.Value = "X"
End If
Target.Offset(1, 0).Select
End If
End Sub
Cdlmnt
En tapant ton code, cela fonctionne très bien.
Cependant, oui avant lorsqu'on double cliqué sur la cellule, le "X" disparaissait. Est-il possible de le faire fonctionner?
De plus comment faire pour centrer le "X" au milieu de la cellule, lorsque je tape plusieurs fois espace puis "X", la macros ne fonctionne plus...
Merci
Cependant, oui avant lorsqu'on double cliqué sur la cellule, le "X" disparaissait. Est-il possible de le faire fonctionner?
De plus comment faire pour centrer le "X" au milieu de la cellule, lorsque je tape plusieurs fois espace puis "X", la macros ne fonctionne plus...
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question