Vérifier si la cellule contient un "X" avant de réaliser une boucle

Bonjour à tous,

Je souhaite réaliser un planning avec le nombre d'heure par dossier et par personne.

Pour ce faire j'ai rentré le planning sous forme de couleur. Chaque couleur correspond à une phase.

J'ai ensuite créé une formule qui me permet de traduire les couleurs en horaire.

Or ce que je souhaiterai à présent c'est que cette formule ne soit activé que sur la colonne JFA.

En effet, sur la colonne DME, je vais ensuite copier la même formule dans VBA mais je vais modifier le nombre d'heure selon la couleur.

Il y aura donc plein de fois cette formule, chaque formule étant dédiée à chaque personne.

Ce que je souhaiterai connaitre c'est comment je fais pour que la formule ne s'active que si, sur la même ligne, la colonne E est cochée?

Ci joint mon fichier avec le programme réalisé.

3planning-test.zip (67.64 Ko)

Espérant avoir été assez clair.

Je vous remercie d'avance pour votre temps !

Bonjour Jeremie44

Pas certain que ce soit la meilleure façon de procéder, ceci dit, voici le code modifié et optimisé

Sub ChangeValueBasedOnCellColor() 'JFA
  Dim dCol As Long, dLig As Long, Lig As Long
  Dim Rng As Range
  ' Avec la feuill active
  With ActiveSheet
      ' Dernière colonne du planning
      dCol = .cells(12, Columns.Count).End(xlToLeft).Column
      ' Dernière ligne du planning
      dLig = .Range("A" & Rows.Count).End(xlUp).Row
      ' Parcourir chaque ligne
      For Lig = 13 To dLig
        ' Tester la colonne JFA qui doit contenir un X ou X
        If InStr(1, .Range("E" & Lig), "x", vbTextCompare) > 0 Then
        ' Si ligne à traiter
        For Each Rng In .Range(.cells(Lig, "P"), .cells(Lig, dCol))
          ' Si colonne visible
          If Rng.EntireColumn.Hidden = False Then
            ' Appliquer ce qu'il faut
            With Rng
              Select Case .Interior.Color
                Case Is = RGB(166, 166, 166) 'Gris
                    .Value = 0.5
                Case Is = RGB(112, 48, 160) 'Violet
                    .Value = 4
                Case Is = RGB(192, 0, 0) 'Rouge foncé
                    .Value = 20
                Case Is = RGB(146, 208, 80) 'Vert clair
                    .Value = 10
                Case Is = RGB(0, 176, 240) 'Bleu clair
                    .Value = 1.5
                Case Is = RGB(0, 112, 192) 'Bleu foncé
                    .Value = 10
                Case Is = RGB(255, 192, 0) 'Orange
                    .Value = 16
              End Select
            End With
          End If
        Next Rng
      End If
    Next Lig
  End With
  Application.DisplayAlerts = False
End Sub

A tester

Bonjour Bruno,

Merci beaucoup pour ton retour.

Cela fonctionne et effectivement je suis d'accord avec toi, il faudra essayer de faire un programme plus simple !

Bonne journée à toi,

Rechercher des sujets similaires à "verifier contient realiser boucle"