Codage VBA Select Case ou autre manière?

Ma problématique , une petite partie du programme consiste à faire le graphe du CAC_40 et de ses MM20 et 50 qui sont préparées dans une feuille dédiée. Pour ça je passe les paramètres DateDeb et Date Fin Cac que je pilote avec une période de 1 à 7 ans depuis le ribbon.

'Création du graphe Cac_40 avec les différentes particularités.

Call Creation_Graphe_CAC_40(Titre, DateDeb_CAC, DateFin_CAC, MinScale_CAC, MaxScale_CAC)

avec en axe horizontal les dates du CAC et axe vertical les valeurs du CAC

Compte tenu, de l'évolution importante sur les 8 dernières années j'ai été amené à calculer le minScale et maxScale à forcer dans le graphe (adaptation automatique et optimisée. En amont, je calcule le min et max du CAC sur la période choisie.

Je trouve le code (ci-dessous) très long et je me dis qu'il doit y avoir une autre maniére de coder.

'Sélectionne le MinScale par pas de 500.

Select Case Min_CAC

Case 0 To 999

MinScale_CAC = 0

Case 1000 To 1499

MinScale_CAC = 1000

Case 1500 To 1999

MinScale_CAC = 1500

Case 2000 To 2499

MinScale_CAC = 2000

Case 2500 To 2999

MinScale_CAC = 2500

Case 3000 To 3499

MinScale_CAC = 3000

Case 3500 To 3999

MinScale_CAC = 3500

Case 4000 To 4499

MinScale_CAC = 4000

Case 4500 To 4999

MinScale_CAC = 4500

Case 5000 To 5499

MinScale_CAC = 5000

Case 5500 To 5999

MinScale_CAC = 5500

Case 6000 To 6499

MinScale_CAC = 6000

Case 6500 To 6999

MinScale_CAC = 6500

Case 7000 To 7499

MinScale_CAC = 7000

Case Else

MinScale_CAC = 0

End Select

'Sélectionne le MaxScale par pas de 500.

Select Case Max_CAC

Case 7000 To 7499

MaxScale_CAC = 7500

Case 6500 To 6999

MaxScale_CAC = 7000

Case 6000 To 6499

MaxScale_CAC = 6500

Case 5500 To 5999

MaxScale_CAC = 6000

Case 5000 To 5499

MaxScale_CAC = 5500

Case 4500 To 4999

MaxScale_CAC = 5000

Case 4000 To 4499

MaxScale_CAC = 4500

Case 3500 To 3999

MaxScale_CAC = 4000

Case 3000 To 3499

MaxScale_CAC = 3500

Case 2500 To 2999

MaxScale_CAC = 3000

Case 2000 To 2499

MaxScale_CAC = 2500

Case 1500 To 1999

MaxScale_CAC = 2000

Case 1000 To 1499

MaxScale_CAC = 1500

Case 500 To 999

MaxScale_CAC = 1000

Case Else

MaxScale_CAC = 500

End Select

Bonjour,

peut être pas tout compris de ton problème, perso je fixerais avec une marges les 2 échelles... A voir...

MinScale_CAC = Min_CAC - 100
MaxScale_CAC = Max_CAC + 100

bonne journée

@+

Salut, Pierrot Je te souhaite une bonne année et te remercie de me répondre.

Exemple de restitution pour des CAC 40 sur 1, 3 et 7 ans :

j'ai appliqué ta méthode pour voir le résultat et le choix de l'échelle fait par Excel. les résultats sont pour un Cac sur 3 ans:

-échelle min 2710 et le max est de 4406 avec des unités tous les 200 soit, affichage de 2910, 3110, etc, etc.

Alors qu'avec ma méthode, les résultats sont :

- échelle mini 2500 et le max est de 4500 avec des unités tous les 200 soit affichage de 2700, 2900, etc, etc.

j'ai appliqué ta méthode pour voir le résultat et le choix de l'échelle fait par Excel. les résultats sont pour un Cac sur 1 an:

- échelle min 3549 et le max est de 4359avec des unités tous les 100 soit,affichage de 3649, 3749, etc, etc.

Alors qu'avec ma méthode, les résultats sont :

- échelle mini 3500 et le max est de 4500 avec des unités tous les 100

j'ai appliqué ta méthode pour voir le résultat et le choix de l'échelle fait par Excel. les résultats sont pour un Cac sur 7 ans:

- échelle min 2434 et le max est de 5934 avec des unités tous les 500 soit, affichage de 2934, 3434, etc, etc

Alors qu'avec ma méthode, les résultats sont :

- échelle mini 2500 et le max est de 6500 avec des unités tous les 500

De fait, la lecture de l'axe vertical est plus facile à lire et interpréter.

Re,

pour avoir des chiffres ronds :

MinScale_CAC = Application.Floor(Min_CAC, 100) - 100
MaxScale_CAC = Application.Ceiling(Max_CAC, 100) + 100

Bon, le résultat attendu est parfait. C'est sur cela me raccourcit le code et j'ai appris Floor et Ceilling

J'ai fait un essai :

  • pour un Cac min de 2810 cela donne pour Floor 2800 puis -100 et MinScale = 2700
  • pour un CaC max de 4306 cela me donne un ceilling de 4400 puis +100 et MaxScale = 4500

Je solde la fiche et encore Merci.

Rechercher des sujets similaires à "codage vba select case maniere"