Changement de couleur de groupe de cellule a paritr d'une cellul

Résolu
J'aurai besoin de votre aide.
Je suis entrain de faire un tableau de rendez-vous ou plusieurs élements doivent être renseigner.
Et cherche le moyen de changer la couleur de fond d'un groupe cellule (groupe de 3 colonne et 7 ligne) soit en cliquant sur un bouton soit à partir d'un chiffre ou d'une lettre mis dans une cellule. Et mon tableau comporte 70 groupe comme cela. Chaque groupe devant être individuel.
Par avance merci de vos lumières et de votre aide

8 réponses

  1. Bonjour

    On peut le faire avec une macro mise dans la worksheet de la feuille concernée

    ALT + F11 pour ouvrir Editeur VBA
    Double clic sur la feuille à traiter dans l'arborescence
    Copier et coller la macro suivante dans la page blanche et fermer l'Editeur

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = "X" Then ' modifier ici le X si autre lettre
    x = Target.Row
    y = Target.Column
    For a = x To x + 6
    For b = y To y + 2
    Cells(a, b).Interior.ColorIndex = 6 ' modifier ici le 6 pour une autre couleur
    Next
    Next
    End If
    End Sub


    Chaque fois qu'un X est entré dans une cellules cette cellule et les cellules contiguës à sa droite sur 3 colonnes et en dessous sur 7 lignes sont colorées en jaune

    Macro à adapter selon la lettre déclenchant et la couleur voulue

    Cdlmnt
    1. Bonsoir,

      Merci pour votre aide.

      Par contre quand je j'enlève la lettre la couleur reste. Y t'il un moyen qu'elle s'enleve quand je supprime la lettre (sa redevient donc sans fond)

      Merci par avance
    2. Contributeur
      tu as eu d'autres propositions plus bas...
    3. oui Eriic j'ai vu la votre aussi. Ce sont ces 2 solutions qui me plaise le plus.
  2. Bonjour,

    70 groupes ce qui veut dire 70 couleurs, si c'est bien ce que j'ai compris il va falloir passer par du VBA si tu as quelques notions ce que je doute à la vue de tes explications et accepter que plusieurs groupes aient la même couleur bien que le panel couleur d'Excel depuis 2007 est important
    1. Bonjour, Merci pour votre réponse.

      Mais le système que vous me donner ne pourra fonctionne Avec mon Tableau il me semble.
      Vu que la cellule Dispo se trouve vers le Milieu de mes carré à chaque fois.

      Et le système de changement de Couleur sera la pour que l'on puisse voir quel ordre de réparation doivent encore être imprimer
      1. Re,

        En VBA il est possible de tout ou presque tout programmer, soit plus constructif dans tes explications, exemple si je saisi un X en cellule F5 il faut que les cellules E2:G8 soit de couleur jaune
        1. Rebonjour,

          Merci de votre aide.

          Alors je vais essayer d'être plus précis.

          Une couleur me suffit.

          Je joint une photo, ce sera plus explicite également.


          Il s'agit d'un planning pour prise de rendez-vous par tranche horaire de 30 minutes.
          1 carre correspond à un RDV. Une fois cette liste rempli et le jour venu je dois à partir de ce fichier créer des ordres de réparation ou facture.
          Mais vu que nous sommes plusieurs à travailler sur le même classeur je voulais pouvoir mettre en jaune les ordres déjà traiter. Car sinon si un collègue rajoute un RDV, je ne peut pas voir si je l'ai déjà traiter ou non.

          La feuille sera également verrouiller pour que aucun ne puisse modifier la base.

          Question cerise sur le gateau. Est-il possible que chacun est ce fichier mais qu'il se mette chez chacun à jour en temps réel. (Nous sommes en réseau, et à l'heure actuel on a un fichier et tout le monde vas sur le même. Donc de l'attente à certain moment.) Si pas possible pas grave
          1. et j'ai testé le premier code. Cela irai. Par contre cela n'enlève pas la couleur lorsque j'enlève la lettre.

            Si ca c'est faisable alors je suis presque combler
            1. Contributeur
              Bonjour à tous

              une proposition par double-clic n'importe où dans le bloc. Fonctionne en bascule.
              Voir les constantes au début du programme pour adapter à la feuille.
              https://www.cjoint.com/c/DKrqV3lAbN9

              Tu peux mettre en partage ton classeur pour travailler à plusieurs dessus.
              Le mieux est d'enregistrer le fichier avant de faire une modif pour avoir une mise à jour des modifs des autres utilisateurs, plutôt que d'être alerté d'un conflit après.

              eric

              En essayant continuellement, on finit par réussir.
              Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
              En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
              1. bonsoir et merci pour votre aide.

                a l'heure actuel c'est comme cela que l'on fait au niveau du partage. 1 fichier et tout le monde se connecte dessus. Et on attend que la personne est fini.

                En ce qui concerne l'exemple ca serai bien. Par contre lorsque je protège la feuille et le classeur, cela me met un message d'erreur (Les gens ne pourront que sélectionner les case déverouiller)

                Y a t'il un moyen de remedier à ca
              2. Contributeur
                Tu as le droit de remercier tous les intervenants, même si la proposition ne te convient pas...
                Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                    Const lig1 As Long = 2, col1 As Long = 2 'ligne et colonne 1ère cellule du 1er bloc
                    Const largeur As Long = 3, hauteur As Long = 7 'largeur et hauteur des blocs
                    Dim c As Range
                    
                    If Target.Row >= lig1 And Target.Column >= col1 Then
                        ActiveSheet.Unprotect
                        Cancel = True
                        Set c = Cells(Target.Row - (Target.Row - lig1) Mod hauteur, Target.Column - (Target.Column - col1) Mod largeur).Resize(hauteur, largeur)
                        If c.Interior.ColorIndex = 15 Then c.Interior.ColorIndex = xlNone Else c.Interior.ColorIndex = 15
                        ActiveSheet.Protect
                    End If
                End Sub

                eric
              3. Merci Eric,
                La ca marche nickel merci.

                Et j'ai également remercier tout le monde déjà (voir plus haut)