VBA : conversion string en énum

  • Initiateur de la discussion Initiateur de la discussion Llaume
  • Date de début Date de début

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 !

Llaume

XLDnaute Nouveau
Bonjour,

Je stock des paramètres dans des cellules d'une feuilles, ceux-ci font partie d'une énumération Excel (XlChartType par exemple).

J'aurais voulu dans ma macro utiliser directement ce paramètre. Pour cela, il faut convertir la valeur de la cellule (String) en une valeur d'énumération.

Malgré mes recherches, je n'ai pas réussi à effectuer cela.

Merci de votre aide,
Bonne journée
 
Re : VBA : conversion string en énum

Bonjour,

Voici un exemple d'application :

Code:
MaVariable = Sheets(1).Range("A1").Value
'MaVariable est par exemple "xlLineStacked".
'C'est une des valeurs de l'énumération XlChartType,
'mais comme elle est récupérée depuis une cellule, c'est pour le moment une String.

'Là, il faut convertir MaVariable, pour pouvoir faire ensuite :
ActiveChart.SeriesCollection("Ma série").ChartType = MaVariable
 
Re : VBA : conversion string en énum

Bonjour,

A ma connaissance, pas de moyen de conversion direct, si tu n'as pas 50 possibilités, tu peux essayer un code comme ceci :

Code:
Dim x As Integer, MaVariable As String
MaVariable = "xlLineStacked"
If MaVariable = "xlLineStacked" Then x = 63
    ElseIf MaVariable = "xlLine" Then x = 4
    ElseIf MaVariable = "xl3DPie" Then x = -4102
    Else
        Exit Sub
End If
ActiveChart.SeriesCollection("Ma série").ChartType = x

tu peux de la même manière utiliser également un "select case"...

bonne journée
@+
 
Re : VBA : conversion string en énum

Merci de ta réponse. J'utilisais en effet un select case jusqu'à maintenant, notamment pour d'autres paramètres. Mais là, le nombre de valeurs possible pour ChartType me fait vraiment dire que c'est quand même moche et qu'il y a probablement un autre moyen.


Ce lien n'existe plus sur le site de microsoft ne peut pas m'aider ?
 
Dernière édition:
Re : VBA : conversion string en énum

Peut-être comme ceci
S'il y a beaucoup de valeur
Code:
Dim d As New Dictionary  'Ref microsoft scripting runtime
d.Add "xlLineStacked", 63
d.Add "xlLine", 4
d.Add "xl3DPie", -4102

ActiveChart.SeriesCollection("Ma série").ChartType  = d.Item(MaVariable)
Tu peux mettre ton dictionnaire dans un module public...

Ou encore
Quand il y a peu de valeur
Code:
ActiveChart.SeriesCollection("Ma série").ChartType  = Switch(MaVariable = "xlLineStacked", 63, MaVariable = "xlLine", 4, MaVariable = "xl3DPie", -4102)
 
Re : VBA : conversion string en énum

Bonjour,

Je suis en effet allé voir ton lien. C'est une très bonne astuce j'en convient. Cela dit, elle n'est pas adapté à ma macro qui va être diffusée et qui doit rester largement lisible. Elle est un peu trop fourbe pour que je l'utilise dans ce projet.

Mais j'ai gardé cette astuce de côté, sait-on jamais 😉

Bonne journée.
 
Re : VBA : conversion string en énum

Bonjour à tous,

sur ta feuille excel, pourquoi ne pas proposé une "combobox" avec les différentes constantes, et dans une colonne masquée de cette même combo, stocker les valeurs associées....

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

Retour