Interdire de cocher une cellule si une autre est cochée
Résolu/Fermé
logas
-
11 août 2014 à 11:20
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 - 11 août 2014 à 16:00
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 - 11 août 2014 à 16:00
A voir également:
- Interdire de cocher une cellule si une autre est cochée
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Bloquer une cellule excel - Guide
- Excel si cellule contient partie texte ✓ - Forum Excel
- Si case cochée alors excel ✓ - Forum Excel
7 réponses
ccm81
Messages postés
10854
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2024
2 404
Modifié par ccm81 le 11/08/2014 à 11:51
Modifié par ccm81 le 11/08/2014 à 11:51
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.
ccm81
Messages postés
10854
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2024
2 404
Modifié par ccm81 le 11/08/2014 à 14:40
Modifié par ccm81 le 11/08/2014 à 14:40
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
ccm81
Messages postés
10854
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2024
2 404
11 août 2014 à 15:42
11 août 2014 à 15:42
Comme ceci?
https://www.cjoint.com/?3HlpPBwtslw
Cordialement
https://www.cjoint.com/?3HlpPBwtslw
Cordialement
ccm81
Messages postés
10854
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2024
2 404
11 août 2014 à 16:00
11 août 2014 à 16:00
Parfait
Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)
Bonne fin de journée
Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)
Bonne fin de journée