Effacer le contenu d'une cellule en cliquant sur une autre cellule

0

Bonjour à tous,

Débutant dans excel me voilà limité...

je souhaiterai faire un tableau avec 5 colonnes et plusieurs lignes.

Colonnes correspondant à des états machines (en prod, arret , maintenance etc...) et lignes aux machines en question, machine A,B,C etc...

Le but est d'avoir un repère visuel.

Je souhaiterai en cliquant sur la cellule machine ''A  / en prod '' faire apparaitre celle ci avec une couleur lui étant dédiée . ( en prod vert, panne rouge etc...)

Par contre je souhaiterai pouvoir effacer celle-ci en cliquant sur une autre cellule et faire apparaitre sur cette nouvelle la couleur dédiée.

Merci pour votre aide.


Mika























 

    Mika Posté le 19 juillet 2023, 14:08
    par Mika
    Répondre
    0

    Bonjour Mika,

    je te propose ce fichier : https://www.cjoint.com/c/MGugsXNrvl0

    mode d'emploi : fais un clic droit sur une des cases en gris clair.

    code VBA de Feuil1 (15 lignes) :

    Option Explicit

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      Dim lig&, col%: Cancel = -1
      With Target
        lig = .Row: If lig = 1 Then Exit Sub
        col = .Column: If col = 1 Or col > 5 Then Exit Sub
        If Cells(lig, 1) = "" Then Exit Sub
        Application.ScreenUpdating = 0
        Cells(lig, 2).Resize(, 4).Interior.Color = 15132391 'gris clair
        'autres couleurs : vert, jaune, orange, rouge (1 seule à la fois)
        .Interior.Color = Choose(col - 1, 5287936, 65535, 49407, 255)
      End With
    End Sub

    si besoin, tu peux demander une adaptation.
    à te lire pour avoir ton avis.  :)

    rhodo

    rhodo Posté le 20 juillet 2023, 08:25
    par rhodo
    0

    Bonjour Rhodo

    merci pour ta réponse :) , je vais essayer!

    Mika Posté le 20 juillet 2023, 10:16
    par Mika
    0

    Bonjour Rhodo 

    je me suis inspiré de tes lignes pour mon tableau .

    J'ai réussi à changer les couleurs de cellules , figer les colonnes non souhaitées etc...

    Quand je clic du ligne à une autre, une par une ( de la ligne 1à 5 par ex) les couleurs s'affichent bien dans les cellules souhaitées, mais quand je clic en remontant ( de 5 à 4 par ex) la couleur de la cellule de la ligne 5 disparait...ou 4 ou 3  etc....Une idée?

    Merci pour ton aide :)

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

      Dim lig&, col%: Cancel = -1

      With Target

      lig = .Row: If lig = 1 Then Exit Sub

      col = .Column: If col = 1 Or col > 5 Then Exit Sub

      If Cells(lig, 1) = "" Then Exit Sub

      Application.ScreenUpdating = 0

      Cells(lig, 2).Resize(, 4).Interior.Color = 15132391 'gris clair

      'autres couleurs : vert, jaune, orange, rouge (1 seule à la fois)

      .Interior.Color = Choose(col - 1, 5287936, 65535, 49407, 255)

      End With

    End Sub

    lig = .Row: If lig = 3 Application.ScreenUpdating = 0 Then Exit Sub

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

      Dim lig&, col%: Cancel = -2

      With Target

      lig = .Row: If lig = 3 Then Exit Sub

      col = .Column: If col = 3 Or col > 9 Then Exit Sub

      If col = 1 Then Exit Sub

      If col = 2 Then Exit Sub

      If col = 3 Then Exit Sub

      If col = 4 Then Exit Sub

      If lig = 1 Then Exit Sub

      If lig = 2 Then Exit Sub

      If lig = 3 Then Exit Sub

      If lig = 15 Then Exit Sub

      If lig = 14 Then Exit Sub

      If lig = 15 Then Exit Sub

      If lig = 26 Then Exit Sub

      If lig = 25 Then Exit Sub

      If lig = 40 Then Exit Sub

      If lig = 41 Then Exit Sub

      If lig = 42 Then Exit Sub

      If lig = 43 Then Exit Sub

      If lig = 44 Then Exit Sub

      If lig = 45 Then Exit Sub

      If lig = 46 Then Exit Sub

      If lig = 47 Then Exit Sub

      If lig = 48 Then Exit Sub

      Application.ScreenUpdating = 0

      Cells(lig, 4).Resize(lig, 4).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 5).Resize(lig, 5).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

      Cells(lig, 6).Resize(lig, 6).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

      Cells(lig, 7).Resize(lig, 7).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

      Cells(lig, 5).Resize(lig, 5).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 6).Resize(lig, 6).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 7).Resize(lig, 7).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 8).Resize(lig, 8).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 9).Resize(lig, 9).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 10).Resize(lig, 10).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 11).Resize(lig, 11).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

      Cells(lig, 12).Resize(lig, 12).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 13).Resize(lig, 13).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 16).Resize(lig, 16).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 17).Resize(lig, 17).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 18).Resize(lig, 18).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

     

      Cells(lig, 19).Resize(lig, 19).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 20).Resize(lig, 20).Interior.Color = RGB(255, 255, 255)

       'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 21).Resize(lig, 21).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 22).Resize(lig, 22).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 23).Resize(lig, 23).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 24).Resize(lig, 24).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 27).Resize(lig, 27).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 28).Resize(lig, 28).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

     

     

      Cells(lig, 29).Resize(lig, 29).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 30).Resize(lig, 30).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 31).Resize(lig, 31).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 32).Resize(lig, 32).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 33).Resize(lig, 33).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 34).Resize(lig, 34).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 35).Resize(lig, 35).Interior.Color = RGB(255, 255, 255)

       'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 36).Resize(lig, 36).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 37).Resize(lig, 37).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

      Cells(lig, 38).Resize(lig, 38).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

     

      Cells(lig, 39).Resize(lig, 39).Interior.Color = RGB(255, 255, 255)

      'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)

      .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)

     

     

     

     

      End With

    End Sub


    Mika Posté le 26 juillet 2023, 15:02
    par Mika
    0

    Bonsoir Mika,

    un essai, avec une colonne de plus que dans mon fichier précédent  :

    https://www.cjoint.com/c/MGAtunkyLq0

    je ne sais pas à quoi correspond le bleu, alors j'ai mis "X" en cellule F1 ;
    à toi de mettre le bon libellé.

    j'ai ajouté des lignes, jusqu'à la ligne 21 ; tu peux ajouter d'autres lignes,
    et ce ne sera pas nécessaire de modifier ce code VBA :

    Option Explicit

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      Dim lig&, col%: Cancel = -1
      With Target
        lig = .Row: If lig = 1 Then Exit Sub
        col = .Column: If col = 1 Or col > 6 Then Exit Sub
        If Cells(lig, 1) = "" Then Exit Sub
        Application.ScreenUpdating = 0
        Cells(lig, 2).Resize(, 5).Interior.Color = -4142 'aucune couleur
        'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)
        .Interior.Color = Choose(col - 1, 5287936, 11119017, 11119017, 3937500, 15453831)
      End With
    End Sub

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    si c'est comme tu veux : OK.  :)  sinon :

    donne plus de précisions (nombre de colonnes, libellés de la ligne 1, etc...),
    dis ce qui ne va pas, et envoie ton fichier Excel.

    pour joindre ton fichier : va sur le site de partage de fichiers cjoint.com
    (c'est gratuit, et c'est très bien expliqué comment faire) ; tu devras coller
    dans ton prochain post ici le lien de téléchargement que tu auras copié
    sur cjoint.com (avec le clic droit).

    rhodo

    rhodo Posté le 26 juillet 2023, 21:40
    par rhodo
    0

    Bonjour Mika,

    je crois que tu préfèreras ce fichier :

    https://www.cjoint.com/c/MGBihyu7d10

    il y a 9 colonnes, de A à i ; la colonne A est pour le libellé des machines ;
    les 3 colonnes B à D ne peuvent pas être colorées avec le clic droit ;
    les 5 colonnes E à i peuvent être colorées avec le clic droit sauf pour
    les lignes exclues (voir ci-dessous).

    ligne 3 : ligne des en-têtes ; lignes des données : de la ligne 4 à la ligne 58 ;
    mais sont exclues de la coloration les lignes 14 ; 15 ; 25 ; 26 ; 40 à 48.

    sans devoir modifier le code VBA : tu peux ajouter des lignes sous la ligne 58,
    qui seront automatiquement prises en compte par le système de coloration.

    mais s'il y a d'autres lignes à exclure PARMI les NOUVELLES lignes ajoutées,
    il faudra modifier le code VBA, en complétant ce test :

    If lig < 4 Or lig = 14 Or lig = 15 Or lig = 25 Or lig = 26 _
      Or (lig >= 40 And lig <= 48) Then Exit Sub

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    code VBA de Feuil1 :

    Option Explicit

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      Dim lig&, col%: Cancel = -1
      With Target
        lig = .Row
        If lig < 4 Or lig = 14 Or lig = 15 Or lig = 25 Or lig = 26 _
          Or (lig >= 40 And lig <= 48) Then Exit Sub
        col = .Column: If col < 5 Or col > 9 Then Exit Sub
        If Cells(lig, 1) = "" Then Exit Sub
        Application.ScreenUpdating = 0
        Cells(lig, 5).Resize(, 5).Interior.Color = -4142 'aucune couleur
        'autres couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)
        .Interior.Color = Choose(col - 4, 5287936, 11119017, 11119017, 3937500, 15453831)
      End With
    End Sub

    rhodo

    rhodo Posté le 27 juillet 2023, 10:34
    par rhodo
    • https://www.cjoint.com/c/MGBkfbSWjud Bonjour Rhodo j'ai utilisé ta trame pour créer la mienne. Les premières lignes de chaque salles fonctionnent les suivantes non...Je ne sais pas pourquoi....Ci joint le lien. Je te laisse voir. Merci pour ton aide – Mika 27 juillet 2023, 12:09
    • je crois avoir trouvé...après comment faire est une autre histoire. Dès lors que je supprime le contenu de ta cellule A4 avec l'inscription A1 elle ne fonctionne plus – Mika 27 juillet 2023, 12:37
    0

    Bonsoir Mika,

    tu as écrit :

    « Les premières lignes de chaque salle fonctionnent les suivantes non...
    Je ne sais pas pourquoi.... »

    c'est à cause de tes 3 fusions de cellulesA4:A13 pour "SALLE 1" ;
    A16:A24 pour "SALLE 2" ; A27:A39 pour "SALLE 3".

    du coup, ces 3 fusions gênaient pour cette instruction :

    If Cells(lig, 1) = "" Then Exit Sub

    j'ai bien sûr laissé tes 3 fusions ; compte tenu de la structure de Feuil1,
    j'ai préféré choisir une autre méthode ; et cette méthode différente fait
    que j'ai supprimé les 2 variables lig et col ; comme je n'utilise plus de
    variables (à part celles de l'en-tête de la sub), j'ai supprimé la ligne
    d'instruction « Option Explicit ».

    avec la 2ème méthode, la ligne « If Cells(lig, 1) = "" Then Exit Sub »
    est devenue inutile.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    ton fichier en retour : https://www.cjoint.com/c/MGBq6Tc7xS0

    code VBA de Feuil1 :

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = -1
      If Intersect(Target, [E4:I13, E16:I24, E27:I39]) Is Nothing Then Exit Sub
      Application.ScreenUpdating = 0
      With Target
        Cells(.Row, 5).Resize(, 5).Interior.Color = -4142 'aucune couleur
        'couleurs : vert, gris, gris, rouge, bleu (1 seule à la fois)
        .Interior.Color = Choose(.Column - 4, 5287936, 11119017, 11119017, 3937500, 15453831)
      End With
    End Sub

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    à toi de faire les essais.  :)

    rhodo

    rhodo Posté le 27 juillet 2023, 19:17
    par rhodo
    0

    Bonjour Rhodo

    Un grand merci à toi pour ton aide à plusieurs reprises !! Super , trop fort. 

    Passe un bon week-end ou peut être vacances déjà. Et à un de ces 4 qui sait. :)



    Mika Posté le 28 juillet 2023, 10:44
    par Mika

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :