Créer dans un graphique à colonnes de cellules - Conseils Excel

Un lecteur de la République tchèque a demandé comment créer un graphique dans la cellule pour illustrer un pourcentage.

Si la valeur d'une cellule était de 37%, comment puis-je remplir 37% de la cellule par le bas avec une couleur?

Mala Singh de notre division graphique a proposé cette solution intéressante pour produire l'effet souhaité. Mala a construit une feuille de calcul où chaque ligne est en fait composée de 2 lignes fusionnées. Les cellules B2 et B3 sont fusionnées dans une seule cellule. Lorsque la valeur de B2 est modifiée, un peu de code VBA dans le volet de la feuille de calcul ajuste automatiquement la hauteur de la ligne 2 et de la ligne 3. La cellule C3 est colorée en bleu et la cellule C2 est colorée en blanc. L'effet est que la colonne C semble afficher un histogramme dans la cellule. Cette image montre différentes hauteurs de la barre bleue dans les cellules C2 à C13.

La première étape consiste à fusionner les cellules B2 et B3 en une seule cellule. Vous sélectionnerez les cellules B2 et B3. Dans le menu, sélectionnez Format, Cellules. Accédez à l'onglet Alignement. Cochez la case Fusionner les cellules. Cela amènera B2 et B3 à agir comme une seule cellule appelée B2.

Laissez la cellule C2 sans remplissage et utilisez n'importe quelle couleur de remplissage pour la cellule C3.

Le code de cette technique n'est pas placé dans un module normal. Il s'agit d'un code de "gestionnaire d'événements" et doit être placé sur le module de code de cette feuille de calcul particulière. Lisez l'article Macro d'événement pour ajouter un chemin et un nom de fichier à l'en-tête d'Excel pour savoir comment ouvrir le module de code d'une feuille de calcul.

Entrez le code suivant dans le module de code pour Sheet1 (ou quelle que soit la feuille avec laquelle vous travaillez).

Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target.Cells If cell.Column = 2 And cell.Row> 1 Then If cell.Value> 1 Or cell.Value < 0 Then cell.Select MsgBox ("Value must be between 0 and 100%") End If If IsEmpty(cell) Or cell.Value = 0 Then cell.Range("B1:B2").RowHeight = 25 'cell.Range("B2").Interior.ColorIndex = xlNone Else On Error Resume Next cell.Range("B1").RowHeight = 50 * (1 - cell.Value) With cell.Range("B2") .RowHeight = 50 * cell.Value '.Interior.Color = RGB(0, 0, 255) On Error GoTo 0 End With End If End If Next End Sub

Vous pouvez répéter le processus de fusion de paires de cellules dans la colonne B.

Merci à Mala Singh pour cette solution. Mala peut concevoir des solutions graphiques personnalisées pour répondre à tous les besoins. Il a contribué au chapitre sur les graphiques dans VBA et Macros pour Excel.

Articles intéressants...