Problème pour récupérer un code couleur

Bonjour

Je viens régulièrement consulter ce forum pour trouver des réponses à mes questions d'utilisateur d'EXCEL

mais là j'avoue que je coince

1/ j'ai mis au point une matrice de cartographie des risques qui se remplit dans des cellules de couleur ROUGE, ORANGE ou VERTE en fonction de la gravité et de la fréquence du risque. Je mets dans chaque cellule le n° du risque

Dans ma feuille CARTOGRAPHIE, je voudrai récupérer le code couleur de la cellule dans laquelle j'inscris le n° du risque pour ensuite la réutiliser à l'endroit ou je mets la correspondance entre le n° de risque et le texte du risque lui-même pour faciliter la compréhension

et là je coince ... malgré différentes méthodes utilisées

For i = 7 To .Range("A" & Rows.Count).End(xlUp).Row

'

' Affichage des N° de risques - Colonne B - Ligne 19 & mise en gras

'

Range("B" & i + 12).Value = Nb

Range("B" & i + 12).Font.Bold = True

'

' FREQUENCE : colonne E - GRAVITE : colonne F - Texte du RISQUE UNITAIRE : Colonne D

'

If Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) = "" Then

'

' Affichage du N° du RISQUE UNITAIRE : Colonne A

'

Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) = .Range("A" & i)

CodeCouleur = ActiveCell.Interior.Color

Range("B" & i + 12).Interior.Color = CodeCouleur

Else

Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) = Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) & " - " & .Range("A" & i)

CodeCouleur = ActiveCell.Interior.Color

Range("B" & i + 12).Interior.Color = CodeCouleur

End If

Nb = Nb + 1

Next i

2/ J'ai par ailleurs un second souci lié au fait que ma feuille TABLEAU DES RISQUES comporte des cellules fusionnées

Et évidemment quand EXCEL me décompte le nombre de cellules il y a un nombre plus important que le nombre de risques réels à détecter

For i = 7 To .Range("A" & Rows.Count).End(xlUp).Row

J'utilise la formule ci-dessus mais au lieu de me trouver 13 risques il m'en trouve 41

Merci de votre aide précieuse pour m'aider à trouver les solutions et ainsi progresser

Alain

Bonjour,

ce serait bien que tu mettes ton code entre balises codes (sélectionner le code et pousser sur le bouton "</>").

Voici une proposition

Bravo et merci bcp

c'est exactement ce que je cherchais à faire depuis de nombreux jours

je vais analyser dans le détail ce que vous avez rajouté pour être certain de parfaitement comprendre la logique

en tout cas un grand merci pour l'expertise et la réactivité

Alain

Bonsoir,

voici le code avec quelques commentaires

Private Sub Worksheet_Activate()

    Dim i As Integer, Nb As Integer, CodeCouleur As Variant

    Application.ScreenUpdating = False

    '
    ' Effacement des données de la matrice des risques et mise à fond blanc de la colonne B
    '

    Range("E7:I11").ClearContents
    Range("B19:B60").ClearContents
    Range("B19:B60").Interior.ColorIndex = xlNone
    Selection.Borders.Color = RGB(255, 255, 255)

    '
    ' Détection du nombre maximum de risque d'après la Colonne A de la Feuille TABLEAU DES RISQUES
    '

    With Sheets("Tableau des Risques")

        Nb = 1
        dl = .Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne tableau des risques
        i = 7 'pointeur de lignes sur tableau des risques
        While i <= dl 'on parcourt les lignes de tableau des risques

            '
            ' Affichage des N° de risques - Colonne B - Ligne 19 & mise en gras
            '
            nc = .Range("E" & i).MergeArea.Count 'nombre de cellules fusionnées faisant partie du groupe de la cellule examinée
            Range("B" & Nb + 18).Value = Nb

            Range("B" & Nb + 18).Font.Bold = True

            '
            ' FREQUENCE : colonne E - GRAVITE : colonne F - Texte du RISQUE UNITAIRE : Colonne D
            '

            If Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) = "" Then

                '
                ' Affichage du N° du RISQUE UNITAIRE : Colonne A
                '
                Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) = Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4) & " - " & .Range("A" & i) 'on indique le n° du risque dans la cartographie
                CodeCouleur = Cells(4 - .Range("E" & i) + 8, .Range("F" & i) + 4).Interior.Color ''on récupère la couleur correspondant au risque
                Range("B" & Nb + 18).Interior.Color = CodeCouleur
            '
            ' Récupération de la couleur de la cellule dans laquelle le N° de risque est inséré
            '

            Nb = Nb + 1 'incrémentation du nombre de risques

            i = i + nc 'on pointe vers la 1ere ligne du groupe de cellules fusionnées suivant
        Wend

    End With    'Sheets("Tableau des risques")

    '
    ' Adaptation automatique de la hauteur pour les lignes 3 à 7
    '

    Rows("3:7").EntireRow.AutoFit

    '
    ' changement de la hauteur des lignes 3 à 6
    '

    For i = 2 To 7
        If Rows(i).RowHeight < 72 Then Rows(i).RowHeight = 72
    Next i

End Sub
Rechercher des sujets similaires à "probleme recuperer code couleur"