Mise à jour de mise en forme conditionnelle en VBA avec Excel 365

Bonjour à tous,

>>> Fichier en PJ <<<

16classeur1.xlsm (16.60 Ko)

J'ai un fichier Excel (.xlsm) dans lequel la cellule C2 contient une formule qui comptabilise le nombre de rappels clôturés présents dans la colonne F.
Je souhaite ainsi mettre une forme conditionnelle "Barre de donnée" sur cette cellule C2, et j'aurai besoin que cette mise en forme conditionnelle se mette à jour selon le résultat affiché en C2. Par exemple si la valeur en C2 est :
- < à 24% alors je souhaite une mise en forme conditionnelle en ROUGE avec une barre de progression à hauteur de la valeur en C2 (forcément < à 24% donc).
- entre 25% et 49% alors je souhaite une mise en forme conditionnelle en ORANGE avec une barre de progression à hauteur de la valeur en C2 (forcément entre 25% et 49%).
- entre 50% et 79% alors je souhaite une mise en forme conditionnelle en JAUNE avec une barre de progression à hauteur de la valeur en C2 (forcément entre entre 50% et 79% ).
- entre 80% et 99% alors je souhaite une mise en forme conditionnelle en VERT CLAIR avec une barre de progression à hauteur de la valeur en C2 (forcément entre entre 80% et 99% ).
- est 100% alors je souhaite une mise en forme conditionnelle en VERT FONCE avec une barre de progression à hauteur de la valeur en C2 (forcément à 100% ).

Pour ce faire, je pensais donc créer 5 mises en forme conditionnelles différentes dans mon fichier Excel sur lesquelles je pensais simplement cocher "Interrompre si vrai" après chacune d'entre elle. Mais malheureusement il semblerait que "Interrompre si vrai" ne soit pas possible pour les mises en formes conditionnelles "barre de donnée". Donc mon scenari ne fonctionne pas si j'en créé plusieurs.
Je me suis donc tourné vers une macro VBA "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" dans laquelle j'ai créé un simple code qui consiste à mettre à jour la seule mise en forme conditionnelle existante en modifiant la couleur de celle ci selon la valeur en C2. Voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Range("C2").FormatConditions(1)
        Select Case Range("C2").Value
            Case 0 To 0.24
                .BarColor.Color = RGB(239, 50, 69) 'Rouge
                Range("C2").Font.ColorIndex = xlAutomatic
            Case 0.25 To 0.49
                .BarColor.Color = RGB(237, 172, 73) 'Orange
                Range("C2").Font.ColorIndex = xlAutomatic
            Case 0.5 To 0.79
                .BarColor.Color = RGB(241, 255, 55) 'Jaune
                Range("C2").Font.ColorIndex = xlAutomatic
            Case 0.8 To 0.99
                .BarColor.Color = RGB(161, 243, 106) 'Vert clair
                Range("C2").Font.ColorIndex = xlAutomatic
            Case 1
                .BarColor.Color = RGB(11, 162, 0) 'Vert foncé
                Range("C2").Font.ThemeColor = xlThemeColorDark1
        End Select
End With
End Sub

Ca fonctionne très bien comme attendu sur mon ordinateur, c'est parfait ! Le problème est donc quand je mets ce fichier en ligne sur SharePoint via Office 365, nous ouvrons ce fichier à 2 personnes en même temps et là dès que l'un change une valeur dans la colonne F, l'autre à un message d'erreur (soit immédiatement soit maximum dans la minute qui suit la modification) : "Impossible de synchroniser vos données, voulez-vous en faire une copie local ou ignorez les modifications et rouvrir le fichier ?".

(je précise quand sans ce bout de code, le partage de fichier .XLSM fonctionne très bien en ligne sur SharePoint entre nous 2, nous utilisons plusieurs 10 aines de fichiers XLSM en ligne avec du code VBA qui s'exécute très bien entre nous 2, seule cette mise à jour de forme conditionnelle de barre donnée ne semble pas fonctionner en mode Excel 365).

L'un d'entre vous aurait-il une idée de pourquoi ce bout de code VBA ne veut pas s'utiliser en mode Excel 365 ?

PS 1 : quand le fichier est en ligne sur SharePoint et que je l'ouvre seul ou que mon collègue l'ouvre seul ça fonctionne très bien, c'est donc uniquement lorsque nous sommes à 2 en même temps et peu importe qui l'ouvre en premier.

PS 2 : si je n'utilise pas la mise en forme "barre de donnée" mais uniquement une couleur ça fonctionne très bien en ligne entre nous 2, mais esthétiquement nous préférons la mise en forme conditionnelle "barre de donnée" ;)

Merci d'avance pour votre aide

Bonjour à toute la communauté, personne n'aurait d'idée sur ce sujet ? Si l'un d'entre vous possède office 365 aussi nous pourrions faire un test de se connecter ensemble à ce fichier hébergé en ligne pour tente de comprendre pour ce code VBA ne veut pas s’exécuter correctement si nous sommes plusieurs dessus ?

N'hésitez pas à me contacter si vous avez des pistes de résolution, je suis preneur :)

Belle journée à vous,

Rechercher des sujets similaires à "mise jour forme conditionnelle vba 365"