XL 2016 macros et MFC lentes

halecs93

XLDnaute Impliqué
Bonjour,

J'ai "bricolé" quelques formules sur ma feuille excel.

Il s'agit de colorer des cellules en fonction de leur contenu et/ou d'automatiser un contenu en fonction de leur couleur.

J'ai l'impression que les temps de calcul sont extrêmement longs.

Peut-être une autre approche ?

Un grand merci
 

Pièces jointes

  • Planning Orientation Bâtiment exceldownloads.xlsm
    39.2 KB · Affichages: 5

halecs93

XLDnaute Impliqué
Peut-être ça :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim plage As Range, cell As Range

    ' Définir la plage de cellules à surveiller sur la feuille active
    Set plage = Intersect(Target, Me.Range("C5:Y35"))

    ' Vérifier si la plage de cellules sélectionnée est dans la plage spécifiée
    If plage Is Nothing Then Exit Sub

    Application.EnableEvents = False

    ' Parcourir chaque cellule de la plage
    For Each cell In plage
        Select Case cell.Interior.Color
        Case RGB(255, 255, 0)   ' Jaune
            cell.Value = "MB"
        Case RGB(146, 208, 80)  ' Vert
            cell.Value = "RG"
        Case RGB(0, 176, 240)   ' Bleu
            cell.Value = "SP"
        Case RGB(247, 150, 70)  ' Orange
            cell.Value = "SC"
        Case RGB(218, 150, 148) ' Chaire
            cell.Value = "MN"
        Case RGB(192, 0, 0)     ' Rouge 1
            cell.Value = "MG"
        Case RGB(150, 54, 52)   ' Rouge 2
            cell.Value = "MP"
        End Select
    Next cell

    Application.EnableEvents = True

End Sub

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim plage As Range, cell As Range

    ' Définir la plage de cellules à surveiller sur la feuille active
    Set plage = Intersect(Target, Me.Range("C5:Y35"))

    ' Vérifier si les cellules modifiées sont dans la plage spécifiée
    If plage Is Nothing Then Exit Sub

    Application.EnableEvents = False ' Désactiver temporairement les événements pour éviter une boucle infinie

    ' Parcourir chaque cellule modifiée
    For Each cell In plage
        ' Si la cellule est maintenant vide, effacer la couleur de fond
        If cell.Value = "" Then
            cell.Interior.ColorIndex = xlNone
        Else
            ' Mettre à jour la couleur de fond en fonction de la valeur de la cellule
            Select Case cell.Value
            Case "MB"
                cell.Interior.Color = RGB(255, 255, 0) ' Jaune
            Case "RG"
                cell.Interior.Color = RGB(146, 208, 80) ' Vert
            Case "SP"
                cell.Interior.Color = RGB(0, 176, 240) ' Bleu
            Case "SC"
                cell.Interior.Color = RGB(247, 150, 70) ' Orange
            Case "MN"
                cell.Interior.Color = RGB(218, 150, 148) ' Chaire
            Case "MG"
                cell.Interior.Color = RGB(192, 0, 0) ' Rouge
            Case "MP"
                cell.Interior.Color = RGB(150, 54, 52) ' Rouge_2
            Case Else
                ' Réinitialiser la couleur de fond si la valeur n'est pas reconnue
                cell.Interior.ColorIndex = xlNone
            End Select
        End If
    Next cell

    Application.EnableEvents = True ' Réactiver les événements

End Sub
J'ai toujours le même souci...lorsque je colorie une ou des cellules en jaune... rien ne s'inscrit dedans...je suis obligé de recliquer à nouveau dessus pour que s'affiche MB
 

TooFatBoy

XLDnaute Barbatruc
Ca me semble compliqué de faire fonctionner ton truc dans les deux sens.

Par exemple, si dans une cellule jaune j'écrit "RG". On fait quoi ???
- On remplace "RG" par "MB" parce que le fond est jaune ?
- On met le fond en vert parce qu'il y a écrit "RG" ?
 

TooFatBoy

XLDnaute Barbatruc
Ca me semble compliqué de faire fonctionner ton truc dans les deux sens.

Par exemple, si dans une cellule jaune j'écrit "RG". On fait quoi ???
- On remplace "RG" par "MB" parce que le fond est jaune ?
- On met le fond en vert parce qu'il y a écrit "RG" ?
Je risque de rester avec l'option couleur = MB (ou autre)
Est-ce que ce ne serait pas plus simple de choisir une mise en forme (MB sur fond jaune, RG sur fond vert, etc.) dans un menu ?
 

halecs93

XLDnaute Impliqué
Donc un menu de choix de mise en forme ne convient pas ?



Et malgré les propositions, le classeur n'est pas moins lent ?
A force, je me demande si ce n'est pas ma machine..... mais bon, j'avoue que tout ne se fait pas instantanément. Je mets mon fichier "en cours" si vous voulez le tester.
 

Pièces jointes

  • Copie de HALECS93 - Planning Orientation exceldownloads.xlsm
    66 KB · Affichages: 2

Discussions similaires

Réponses
34
Affichages
1 K

Statistiques des forums

Discussions
315 138
Messages
2 116 683
Membres
112 834
dernier inscrit
Coco66760