La mise en forme conditionnelle peut être définie de manière incorrecte lorsque vous utilisez VBA dans Excel

Symptômes

Prenons le cas de figure suivant.

  • Vous sélectionnez une cellule dans une feuille de calcul dans Microsoft Excel 2000 ou dans une version ultérieure d’Excel.
  • Vous utilisez Microsoft Visual Basic pour Applications (VBA) pour créer un programme de mise en forme conditionnelle basé sur des formules.
  • Vous utilisez des références de cellules relatives dans le programme de mise en forme conditionnelle VBA.
  • Vous appliquez la mise en forme conditionnelle à une cellule autre que la cellule sélectionnée.

Lorsque vous appliquez la mise en forme conditionnelle, vous remarquez que la mise en forme conditionnelle n’est pas définie correctement.

Par exemple, vous rencontrez ce problème lorsque vous utilisez un programme qui inclut du code VBA dans une feuille de calcul Excel similaire au code suivant :

Sub Example()
ThisWorkbook.Worksheets(1).Range("A1").Select
With ThisWorkbook.Worksheets(1).Range("B1")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=A1=1"
.FormatConditions(1).Interior.ColorIndex = 46
End With
End Sub

Ce code applique automatiquement la mise en forme conditionnelle à la cellule B1 lorsque vous entrez « 1 » dans la cellule A1. Lorsque vous entrez « 1 » dans la cellule A1, vous vous attendez à ce que la couleur de la cellule B1 passe au rouge. Toutefois, la couleur de la cellule ne change pas. La couleur de la cellule B1 devient rouge uniquement si vous entrez « 1 » dans la cellule B1.

En outre, la boîte de dialogue Mise en forme conditionnelle affiche la formule sous la forme =B1=1 au lieu de =A1=1.

Solution de contournement

Pour contourner ce problème, appliquez l’une des méthodes ci-dessous.

Méthode 1 : Utiliser des références de cellule absolues

Vous pouvez utiliser des références de cellule absolues pour faire référence à la cellule qui contient la formule au lieu de faire référence à des références de cellules relatives.

Par exemple, vous pouvez modifier l’entrée de texte Formula1 :="=A1=1 » dans le code VBA décrit dans la section « Symptômes » sous la forme Formula1 :="=$A$1=1 » pour que le code utilise des références de cellule absolues. Cette version modifiée du code VBA est la suivante :

Sub Example()

ThisWorkbook.Worksheets(1).Range("A1").Select

With ThisWorkbook.Worksheets(1).Range("B1")
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, Formula1:="=$A$1=1"
     .FormatConditions(1).Interior.ColorIndex = 46
End With

End Sub

Méthode 2 : sélectionnez la cellule que vous souhaitez utiliser pour la mise en forme conditionnelle avant d’appliquer la formule

Lorsque vous souhaitez appliquer une mise en forme conditionnelle à une cellule, sélectionnez d’abord la cellule que vous souhaitez utiliser pour la mise en forme conditionnelle. Sélectionnez ensuite la cellule que vous souhaitez utiliser pour la formule. Après avoir sélectionné cette cellule, modifiez la formule en fonction de vos besoins.

Pour ce faire, procédez comme suit, en fonction de la version d’Excel que vous exécutez.

Microsoft Office Excel 2007

  1. Démarrez Excel, puis ouvrez une nouvelle feuille de calcul Excel.
  2. Dans la feuille de calcul Excel, sélectionnez la cellule B1.
  3. Cliquez sur l’onglet Accueil .
  4. Cliquez sur Mise en forme conditionnelle dans le groupe Styles , puis cliquez sur Nouvelle règle.
  5. Cliquez sur Utiliser une formule pour déterminer les cellules à mettre en forme sous Sélectionner un type de règle.
  6. Cliquez dans la zone Mettre en forme les valeurs où cette formule a la valeur true . Sélectionnez ensuite la cellule que vous souhaitez utiliser pour la mise en forme conditionnelle.
  7. Modifiez la valeur de l’étape 6 pour qu’elle soit =$A$1=1.
  8. Cliquez sur Format.
  9. Dans la boîte de dialogue Format des cellules , cliquez sur l’onglet Remplissage .
  10. Cliquez sur la couleur « rouge », puis cliquez sur OK.
  11. Dans la boîte de dialogue Nouvelle règle de mise en forme, cliquez sur OK.
  12. Dans la cellule A1, tapez 1, puis appuyez sur Entrée.
  13. Vérifiez que la couleur de la cellule B1 est passée au rouge.
  14. Fermez la feuille de calcul Excel.

Microsoft Office Excel 2003 et versions antérieures d’Excel

  1. Démarrez Excel, puis ouvrez une nouvelle feuille de calcul Excel.
  2. Dans la feuille de calcul Excel, sélectionnez la cellule B1.
  3. Dans le menu Format , cliquez sur Mise en forme conditionnelle.
  4. Sous Condition 1, cliquez sur Formule est dans la liste.
  5. Cliquez dans la zone de saisie de données. Sélectionnez ensuite la cellule que vous souhaitez utiliser pour la mise en forme conditionnelle.
  6. Modifiez la valeur dans la zone d’entrée de données pour qu’elle soit =$A$1=1, puis cliquez sur OK.
  7. Cliquez sur Format.
  8. Dans la boîte de dialogue Format des cellules , cliquez sur l’onglet Modèles .
  9. Sélectionnez la couleur « rouge », puis cliquez sur OK.
  10. Dans la boîte de dialogue Mise en forme conditionnelle , cliquez sur OK.
  11. Dans la cellule A1, tapez 1, puis appuyez sur Entrée.
  12. Vérifiez que la couleur de la cellule B1 est passée au rouge.
  13. Fermez la feuille de calcul Excel.