Repetition de saisie macro

Résolu
Bonjour,
dans une feuille de calcul, dans un tableau contenant une multitude de cellules, je souhaite avoir une case à cocher dans chaque cellule qui, une fois cochée, me change la couleur de la cellule correspondante. pour ce faire j'ai utilisé les cases à cocher de la boite à outils contrôle et affecté une petite macro, tout va bien.
Est-il possible d' adapter les diffèrentes références de cellules par case à cocher pour éviter de taper la syntaxe X fois pour chaque chekbox.
Sinon auriez vous une autre suggestion pour arriver à mon résultat rapidement SVP (boite à outils formulaire..?)

Merci de votre aide

8 réponses

  1. Contributeur
    Bonsoir tout le monde,

    Une autre proposition :
    Pour une multitude de cellules utiliser une seule checkbox (donc un code unique) et la déplacer sur la cellule sélectionnée.

    Ou bien plus simplement ne pas utiliser de checkbox et changer la couleur sur un clic-droit...

    Exemple.xls

    eric
    1
    1. Bonsoir eriiic,
      Merci pour cette super solution.
      Amicales salutations.
      Le Pingou
      0
  2. Bonjour,
    Pouvez-vous mettre une copie du code concerné?
    0
    1. Merci de t'être arrété sur ma question Pingou, je te poste ça demain...

      Salutations.
      0
      1. Bonjour,
        Très intéressante votre intervention, pouvez-vous aussi répondre à ceci : est-ce que le changement de couleur de la cellule est lié à la valeur de son contenu ?
        Salutations.
        Le Pingou
        0
    2. Bonjour Pingou,
      Désolé pour ma réponse succincte d'hier mais je n'étais pas près de mon poste.
      Rien ne vaut une bonne illustration alors voici un lien vers un fichier exemple créé pour l'occasion. Non le changement de couleur n'est pas lié au contenu de la cellule mais doit être déclenché uniquement lorsque l'on coche la case correspondante, l'objectif et purement visuel, c'est tout.
      il yaurait d'autres actions liées à la coche de la case comme un renvoie des données colonne D vers un autre tableau.
      Mon problème est donc que je dois paramètrer chaque checbox par rapport à sa cellule et que dans mon fichier réel j'ai une quantité astronomique de checbox.
      Je suis novice en macro et, peut-être n'ai-je pas choisi la meilleur methode....
      merci

      https://www.cjoint.com/?0kClVKgr5Fv
      0
      1. Bonjour,
        Une solution via VBA : http://www.cijoint.fr/cjlink.php?file=cj201010/cijyuEJzoZ.xls
        0
        1. Bonjour,

          Une autre solution, en utilisant un module de classes...

          Bonne journée

          http://www.cijoint.fr/cjlink.php?file=cj201010/cijaPtwAxc.zip
          0
          1. Bonsoir à tous,
            Je met un peu de temps à répondre mais l' agenda est surchargé....
            un grand merci à tous les 3 car mon "problème" est résolu grace à votre aide.
            Vos solutions sont extra car, et c'était l'objectif, je n'aurais pas à paramètrer X Checkboxs.
            Mais je ne m'arrete pas la et vais examiner vos codes pour comprendre le fonctionnement .
            encore merci pour votre implication,
            à+ je met le poste en résolu.
            0
            1. Bonjour,
              je reviens vers notre discussion pour y apporter une précision (pour ceux qui auraient ce problème).
              j'ai adopté la méthode de Eriic qui est vraiment top et offre de nombreuses possibilité pour amèliorer la navigation sous excel.
              Toutefois, j'ai rencontré un problème en voulant mettre 2 Private Sub Worksheet_BeforeRightClick. En fait il n'est pas possible de mettre 2 fois la ligne et il faut les 2 instructions dans le même Private Sub Worksheet_BeforeRightClick
              ci dessous mon code qui fonctionne dans la même feuille et pour les 2 instructions
              si cela peut servir à quelqu'un...

              et encore merci!

              Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
              If Not Intersect(Target, Range("D8:I14,D20:I26,D34:I40,N8:S14,N20:S26,N34:S40,X8:AC14,X20:AC26,X34:AC40")) Is Nothing Then
              Cancel = True
              Select Case Target.Interior.ColorIndex
                  Case xlNone
                      Target.Interior.ColorIndex = 4
                      Target = "X"
                  Case 4
                      Target.Interior.ColorIndex = 15
                      Target = "0"
                  Case 15
                      Target.Interior.ColorIndex = 4
                      Target = "X"
                  End Select
              End If
              
              If Not Intersect(Target, Range("C8:C14,C20:C26,C34:C40,M8:M14,M20:M26,M34:M40,W8:W14,W20:W26,W34:W40")) Is Nothing Then
              Cancel = True
              statut.Show
              End If
              End Sub
              
              0