Monsieur Excel
Pour tout savoir faire sur Excel !

30 avril 2012

Graphe à bulles à catégories (a)

Nore article « Utilisation d’un graphe à bulles » du 18 avril 2012 a inspiré nos lecteurs, en particulier « cduigou » et « jpr73 »  qui ont posté des commentaires à la fin de l’article.

Les deux solutions proposées aboutissent – avec deux approches très différentes – à la création d’un nouveau graphe : le graphe à bulles à catégories.

Aujourd’hui, nous analysons la solution proposée par « jpr73 ».

Avant de lire a suite, si vous ne l’avez pas déjà fait, lisez donc l’article « Utilisation d’un graphe à bulles » du 18 avril 2012. Nous prendrons en effet comme point de départ le graphe obtenu à la fin de cet article.

La première étape consiste à transformer ce graphe, en nuage de points avec trois séries colorées, en un graphe à bulles. Rien de plus simple : clic droit dans le graphique, puis la commande « Modifier le type de graphe », et enfin sélection du premier graphe à bulles. Les bulles sont trop grosses : il faut donc utiliser la commande « Mettre en forme une série de données », puis choisir un diamètre des bulles à l’échelle de 40.

La seconde étape revient à donner son poids à chaque point. En effet, le graphe actuel n’utilise pas directement les valeurs de la colonne C. On le vérifie en cliquant dans une valeur de la série verte ; la barre de formule affiche alors :
=SERIE(Bulles!$G$1;Bulles!$A$2:$A$16;Bulles!$G$2:$G$16;3;
{1.1.1.1.1.1.1.1.1.1.1.1.1.1.1})

Tous les poids sont en effet à 1 : il suffit donc de modifier le dernier argument pour prendre en charge les poids réels et obtenir :
=SERIE(Bulles!$G$1;Bulles!$A$2:$A$16;Bulles!$G$2:$G$16;3;Bulles!$C$2:$C$16)

Immédiatement, les bulles des deux autres séries se réduisent à des points, ce qui est normal car leurs poids sont toujours à la valeur 1. Il ne reste plus qu’à faire la même modification dans la formule des deux autres séries pour obtenir le résultat désiré, un graphe à bulles à catégories !


Le graphe final, reproduit ci-dessus, a ensuite subi trois petites modifications d’ordre esthétique :
  • modification des deux axes pour qu’ils démarrent à 0 ;
  • remplacement des couleurs par des couleurs primaires ;
  • ajout d’un filet noir d’épaisseur 1.
Remarque – Votre palette de graphes Excel est donc à présent enrichie par un nouveau graphe, le graphe à bulles à catégories !


26 avril 2012

Les trois outils de tracé manuel

Les trois derniers outils de la famille « Lignes » de la commande « Insertion – Formes » permettent de tracer des formes à la main.

Tracé avec l’outil « Courbe »

Quand l’outil « Courbe » est activé, le curseur prend la forme d’une grande croix fine. Chaque clic avec ce curseur détermine un point d’inflexion et une courbe enveloppe ces points d’inflexion. Si le dernier point est proche du point initial, la courbe se referme sur elle-même. Sinon, pour terminer, il sufit de faire un double clic sur le dernier point.

Tracé avec l’outil « Forme libre »

Quand l’outil « Forme libre» est activé, le curseur prend la forme d’une petite croix fine. Chaque clic avec ce curseur détermine un sommet, un segment de droite joignant chaque sommet au somme précédent. Si le dernier point est proche du point initial, la forme se referme. Sinon, pour terminer, il suffit de faire un double clic sur le dernier point.

Tracé avec l’outil « Dessin à main levée »

Quand l’outil « Dessin à main levée » est activé, le curseur prend la forme d’un crayon. On dessine alors en écrivant avec le crayon comme si l’on avait un crayon à la main. Si ce n’est que c’est bien plus difficile de tracer une forme propre qu’avec un véritable crayon !

Nous voyons ci-dessous un exemple des résultats obtenus avec les trois outils. Notez au passage que l’on peut facilement, avec un clic droit sur la forme obtenue, « Modifier le texte » qu’il suffit ensuite de centrer horizontalement et verticalement pour obtenir le même résultat que ci-dessous.

22 avril 2012

Deux façons de dessiner…

Il y a essentiellement deux façons de dessiner dans Excel.

La première consiste à relier des points entre eux, les coordonnées X-Y des points ayant été saisies dans Excel. On peut alors tracer des dessins schématiques, avec des segments de droite reliant les divers points, ou des dessins plus continus, en utilisant des « courbes lissées ».

Je vous conseille de lire à ce sujet les articles “Dessiner une image point par point » du 6 août 2008 et « Amélioration du look du chien précédent… » du 10 août 2008. Vous verrez alors comment nous avons pu créer les deux images ci-dessous.

Remarque – La notion de « courbes droites » est encore une création originale des concepteurs et/ou des traducteurs d’Excel. Pour ma part, l’expression « avec des segments de droite » me semble plus appropriée…

L’autre façon de dessiner, sans utiliser de coordonnées X-Y, revient à utiliser les formes  « Courbe »,  « Forme libre » et « Dessin à main levée », dont nous parlerons prochainement.

18 avril 2012

Utilisation d’un graphe à bulles

Dans l’article « Graphe X/Y avec mesure de force » du 4 avril, nous avons vu comment créer un graphe en nuage de points la couleur et la forme des points identifieraient la « force » indiquée par une troisième colonne de données numériques. Il serait utile que vous lisiez cet article avant de lire celui-ci.

Un lecteur, dans son commentaire, a demandé s’il ne serait pas plus utile – dans une telle situation – de faire appel à un graphe à bulles. Nous allons donc, dans cet article, comparer les deux solutions.

Création du graphe à bulles

Pour créer le graphe à bulles, il suffit de sélectionner les données en A2:C16, et d’insérer – via les commandes « Autres graphiques » puis « Bulles », le premier type de graphe à bulles.

Pour obtenir le résultat représenté à droite dans la copie d’écran ci-dessous, nous avons modifié le quadrillage naturel en prenant un pas de 10, ajouté un quadrillage vertical – lui aussi par pas de 10 – et enfin défini un diamètre des bulles à l’échelle de 30…

Comparaison des deux solutions

Le graphique à bulles est évidemment bien plus simple à créer, puisqu’il ne nécessite pas la création des formules des colonnes E à F.

Il présente en outre l’avantage que le diamètre des bulles est vraiment proportionnel aux valeurs de la colonne C, et que l’on n’est pas ainsi limité à trois catégories.

Cela peut aussi se révéler un inconvénient si l’on souhaite effectivement faire apparaître trois familles comme dans le cas de notre graphique original.

En conclusion, vous avez là deux solutions différentes, chacune avec ses avantages et ses inconvénients !

13 avril 2012

Ecrire une date en texte (F)

Il y a quatre jours, nous avons vu comment écrire une date en texte, avec un texte en anglais. Aujourd’hui, nous nous attaquons au problème de l’écriture de la date en français. Il ne suffit hélas pas de traduire simplement les termes anglais dans leur équivalent en français.

Nous avons ainsi en France – cela a été évité dans certains pays francophones ! – la particularité des nombres entre 70 et 80, et des nombres entre 90 et 100.

Et il y a d’autres pièges encore… Si vous vous êtes attaqués à la francisation de la macro, vérifiez bien ce que donne votre solution pour les dix premières dates de l’exemple présenté il y a quatre jours : ces dix dates comportent la plupart des pièges de la francisation…

RemarqueL'utilisation de la fonction substitue() dans les dernières lignes de la macro résout plusieurs problèmes particuliers.

08 avril 2012

Ecrire une date en texte (US)

En fouinant sur Internet, j’ai trouvé récemment une macro pour transformer une date en texte. Il m’a fallu la modifier un peu pour qu’elle fonctionne sur un Excel en français. Voici le résultat, où nous avons un certain nombre de dates et leur traduction en texte (US) :

Voici le code de la macro :

Function DateToWords_US(ByVal DateIn As Variant) As String

' Auteur : Rick Rothstein ?

' Correction du mois : Hervé Thiriez

Dim Mois As String

Dim Yrs As String, Hundreds As String, Decades As String

Dim Tens As Variant, Ordinal As Variant, Cardinal As Variant

Ordinal = Array("First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth", "Ninth", _

"Tenth", "Eleventh", "Twelfth", "Thirteenth", "Fourteenth", "Fifteenth", "Sixteenth", _

"Seventeenth", "Eighteenth", "Nineteenth", "Twentieth", "Twenty-first", "Twenty-second", _

"Twenty-third", "Twenty-fourth", "Twenty-fifth", "Twenty-sixth", "Twenty-seventh", _

"Twenty-eighth", "Twenty-ninth", "Thirtieth", "Thirty-first")

Cardinal = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", _

"Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")

Tens = Array("Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")

If TypeOf Application.Caller Is Range Then

' The date serial number that Excel's worksheet thinks is for 2/29/1900

' is actually the date serial number that VB thinks is for 2/28/1900

If Format([DateIn], "m/d/yyyy") = "2/28/1900" Then

DateToWords_US = "Twenty-nineth of February, One Thousand Nine Hundred"

Exit Function

ElseIf DateIn < DateSerial(1900, 3, 1) Then

If TypeOf Application.Caller Is Range Then DateIn = DateIn + 1

End If

End If

DateIn = CDate(DateIn)

Yrs = CStr(Year(DateIn))

Decades = Mid$(Yrs, 3)

If CInt(Decades) < 20 Then

Decades = Cardinal(CInt(Decades))

Else

Decades = Tens(CInt(Left$(Decades, 1)) - 2) & "-" & Cardinal(CInt(Right$(Decades, 1)))

If Right(Decades, 1) = "-" Then Decades = Left(Decades, Len(Decades) - 1)

End If

Hundreds = Mid$(Yrs, 2, 1)

If CInt(Hundreds) Then

Hundreds = Cardinal(CInt(Hundreds)) & " Hundred "

Else

Hundreds = ""

End If

Mois = Format$(DateIn, "mmmm")

Select Case Mois

Case "janvier": Mois = "January"

Case "février": Mois = "February"

Case "mars": Mois = "March"

Case "avril": Mois = "April"

Case "mai": Mois = "May"

Case "juin": Mois = "June"

Case "juillet": Mois = "July"

Case "août": Mois = "August"

Case "septembre": Mois = "September"

Case "octobre": Mois = "October"

Case "novembre": Mois = "November"

Case "décembre": Mois = "December"

End Select

DateToWords_US = Ordinal(Day(DateIn) - 1) & " of " & Mois & ", " & _

Cardinal(CInt(Left$(Yrs, 1))) & " Thousand " & Hundreds & Decades

End Function

Un petit exercice pour vous distraire : essayez de modifier cette macro pour qu’elle donne le texte de la date en français…

Remarque – Attention ! Le français est une langue plus complexe et il y aura des pièges à contourner…

04 avril 2012

Graphe X/Y avec mesure de force

Un de mes clients m’a posé récemment – cet après-midi, en fait ! – la question suivante. Il disposait des données reproduites en A1:C16, qu'il fallait représenter en nuage de points (aussi appelé graphe X/Y) avec en colonne C une mesure de la « force » de chaque point.

Le but du jeu était d’obtenir le graphe représenté ci-dessous, dans lequel un point où la force est inférieure ou égale à 33 est considéré comme « Faible », un point où elle se situe entre 34 et 66 comme « Moyen », et un point où elle dépasse 66 comme « Fort ».

Voici les formules que j’ai saisies dans la ligne 2, puis tirées vers le bas :

- en E2 : =SI($C2<=33;$B2;NA())

- en F2 : =SI(ET($C2>33;$C2<=66);B2;NA())

- en G2 : =SI($C2>66;$B2;NA())

Pour créer le graphe, sélectionnez A1:A16, puis – en maintenant la touche [Ctrl] enfoncée – le bloc E1:G16 et insérer un graphe en nuage de points.

Vous obtenez alors – à la présentation près, que j’ai un peu améliorée – le résultat ci-dessous.