Interdire de cocher une cellule si une autre est cochée

Résolu
logas -  
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.

7 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    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
    0
  2. LOGAS
     
    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.
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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)

    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
    0
  4. LOGAS
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. LOGAS
     
    Parfait c'est génial , ça fonctionne !!!

    Merci. A++
    0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Parfait

    Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

    Bonne fin de journée
    0