Complément Macro

Résolu
Zeni -  
 Zeni -
Bonjour à toutes et à tous,

Je souhaiterais rajouter dans la macro ci-dessous qu'il ne peut y avoir qu'une seule croix de la cellule A2 à 25. Quelqu'un peut-il m'aider :-)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B5:B8, A2:A25")) Is Nothing And Target.Count = 1 Then
If Target.Value = "" Then
Target.Value = "X"
Else
Target.Value = Empty
End If
End If
End Sub

Je vous remercie :D

Configuration: Windows / Chrome 97.0.4692.71

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Dans ce cas ça simplifie :
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim coche As Boolean
        If Not Intersect(Target, Range("B5:B8, A2:A25")) Is Nothing And Target.Count = 1 Then
            Cancel = True
            coche = Target.Value <> ""
            Range("B5:B8, A2:A25").ClearContents
            If Not coche Then Target.Value = "X"
        End If
    End Sub 

    j'ai ajouté pour ôter la coche avec le double-clic
    eric
    1
    1. Zeni
       
      Superbe, c'est exactement ce que je voulais. Merci infiniment :-)
      0
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Zeni
         
        Très bien.
        Au passage tu peux enlever
        And Target.Count = 1 
        auquel je n'avais pas prêté attention.
        Sur double-clic ça ne peut être autre chose que 1
        1
    2. Zeni
       
      Bonjour Eriiic,

      J'avais testé de A2:A25 (colonne où il ne doit pas y avoir la possibilité de mettre plusieurs croix.

      Mais du coup de B5 à B8 je n'arrive pas à mettre plusieurs croix et à double cliquer pour enlever :-. ?
      0
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Zeni
         
        Bonjour,

        comment le deviner ?
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
            Dim coche As Boolean
            If Not Intersect(Target, Range("B5:B8, A2:A25")) Is Nothing And Target.Count = 1 Then
                Cancel = True
                coche = Target.Value <> ""
                If Target.Column = 1 Then Range("A2:A25").ClearContents
                Target.ClearContents
                If Not coche Then Target.Value = "X"
            End If
        End Sub

        eric
        1
      2. Zeni > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui navrée :-) Merci infiniment pour ton aide, ça fonctionne parfaitement.

        Belle journée.
        0
  2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Zeni

    Comme au moment d'entrer une X la plage A2:A25 doit être vide on peut tester ce vide avec NBVAL
    Tu n'as alors qu'une ligne à modifier :
    If Target.Value = "" And WorksheetFunction.CountA(Range("A2:A25")) = 0 Then

    Cdlmnt
    Via
    0
    1. Zeni
       
      Bonjour Via55,

      Merci beaucoup pour ta solution, ça fonctionne très bien. :-D Par contre est-il possible que si je me trompe en double cliquant je puisse enlever la croix pour la réinsérer au bonne endroit :-) Car du moment que je mets la croix, si je double clique pour l'enlever, ça ne fonctionne plus.
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    il manque le fonctionnement voulu. Bloquer ou remplacer ???
    Si un nouveau X doit remplacer l'ancien, le plus simple est de vider la plage avant d'ajouter le nouveau.
    eric
    0
    1. Zeni
       
      Oui si la personne se trompe, il faut pouvoir enlever la croix pour la mettre dans un autre cellule. J'espère que c'est plus clair :-)
      0
  4. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour eric

    D'après la macro originelle fournie par le demandeur un double-clic sur une cellule vide y inscrit un X, un double-clic sur une cellule remplie la vide, je ne modifie rien à cela
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Certes, mais 'une seule croix' peut se traiter de 2 façons.
      Et difficile de dire laquelle depuis son code.
      D'ou ma demande de compléments.
      0