Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utiliser une fonction dans une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

J'avais trouvé sur ce forum une fonction originale permettant d'avoir un graphique sur une plage de cellules déterminée.

La fonction est la suivante :

LineChart(Points As Range, Echelle_mini As Long, Echelle_maxi As Long, Optional ByVal Axe = 1, Optional ByVal Couleur% = 2, Optional Maplage As Range = Nothing)

Supposons que je veux qu'apparaisse une courbe dans la plage B45:O45, la syntaxe en B45 sera la suivante :
B45=LineChart(INDIRECT(Y35);MIN(INDIRECT(Y35));MAX(INDIRECT(Y35));1;2;B45:O45)

Dans la cellule Y35 est récupérée l'adresse de la plage des valeurs nécessaires à la courbe, d'où les INDIRECT(Y35) dans le paramétrage de la fonction.

Ça marche parfaitement bien.

Maintenant je voudrais qu'une macro introduise directement cette fonction toujours dans la cellule B45. Comment m'y prendre ??

Un grand merci pour m'aider à résoudre ce problème.

Très bonne fin de soirée à toutes & à tous.
 
Re : Utiliser une fonction dans une macro

Buenas tardes Magic Doctor
Cómo esto vaya ?

Pour la macro, tu peux essayer

Code:
Range("B45").FormulaLocal = "=LineChart(INDIRECT(Y35);MIN(INDIRECT(Y35));MAX (INDIRECT(Y35));1;2;B45:O45)"

Asta la vista 😉

PS : désolé j'ai un peu oublié mon espagnol 😀😛
 
Re : Utiliser une fonction dans une macro

Buenas noches Bruno M45,

Je réponds avec un peu de retard (décalage horaire / déjeuner + petite sieste).
Fini la rigolade australe, le p... d'hiver commence.

Bueno, muchas gracias por esta solución que funciona como lo deseaba. En d'autres termes plus gaulois : ça marche au poil !

En revanche, je me demandais si ça fonctionnerait sur un Excel en Français ou dans une autre langue. Je m'explique :

je dois en fait écrire :

Range("B45").FormulaLocal = "=LineChart(INDIRECTO(Y35);MIN(INDIRECTO(Y35));MAX(INDIRECTO(Y35));1;2;B45:O45)"

car INDIRECT (en Français ou en Anglais) est INDIRECTO en Espagnol (travaillant évidemment avec Excel dans cette langue)

Ainsi la fonction LineChart (MAGNIFIQUE !! et qui continue de me stupéfaire à chaque fois...) est bien interprétée et fonctionne correctement.
Mais si j'utilise maintenant un Excel dans une autre langue que l'espagnol, je me demande s'il ne risque pas d'y avoir alors une confusion en raison de cet INDIRECTO... À moins que ce soit automatiquement traduit ??
Enfin, si tu me lis, j'aimerais avoir ton avis à ce sujet.

Muy buenas noches.
 
Re : Utiliser une fonction dans une macro

Re,

Oui c'est très clair tu auras un problème 🙁
"INDIRECTO()" ne sera pas compris par Excel

Après cela peut faire parti d'un paramètre supplémentaire
Avec un petit code qui permet de trouver la langue sur le poste

Ensuite tu fais un truc du style
Code:
Sub Exemple()
  Dim sInd As String
  If Langue = "Français" Then
    sInd = "INDIRECT"
  ElseIf Langue = "Espagnol" Then
    sInd = "INDIRECTO"
  End If
  Range("B45").FormulaLocal = "=LineChart(" & sInd & "(Y35);MIN(" & sInd & "(Y35));MAX (" & sInd & "(Y35));1;2;B45:O45)"
End Sub

Voilà 😉

A+
 
Re : Utiliser une fonction dans une macro

Bonsoir Magic_Doctor, BrunoM45, le Forum,

Sauf erreur :

  • pour insérer une formule Excel par VBA, il faut déjà remplacer les ";" (points virgules) par des "," (virgules) dans la dite formule quand on est dans l'éditeur VBA.
  • Toujours dans l'éditeur VBA, l'utilisation conjointe d'une fonction exprimée en anglais (donc avec INDIRECT dans ton cas) et de la propriété .Formula (au lieu de .FormulaLocal) te permettra d'obtenir la fonction traduite automatiquement dans la bonne langue sur la feuille de calcul.
Tu devrais donc retrouver automatiquement INDIRECTO dans ta cellule avec le code comme suit :
Code:
Range("B45").Formula = "=LineChart(INDIRECT(Y35),MIN(INDIRECT(Y35)),MAX (INDIRECT(Y35)),1,2,B45:O45)"
Cordialement,
 
Re : Utiliser une fonction dans une macro

Bonsoir ou plutôt bonjour Bruno M45, myDearFriend & le forum,

Merci pour vos solutions. Effectivement, celle de myDearFriend résoud efficacement le problème en faisant en sorte que les différents paramètres de la fonction soient automatiquement traduits.

Un grand merci pour votre coup de main à tous les deux.

Très bonne journée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

R
  • Question Question
Réponses
1
Affichages
1 K
P
Réponses
2
Affichages
690
paff3211
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…