VBA rapidité select case/if else
Résolu/Fermé
ed555
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
-
15 oct. 2012 à 23:04
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018 - 25 oct. 2012 à 09:42
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018 - 25 oct. 2012 à 09:42
A voir également:
- Select case vba exemple
- Url exemple - Guide
- Tableau word exemple - Guide
- Sommaire word exemple - Guide
- Tableau croisé dynamique excel exemple - Guide
- Planning en 12h exemple - Télécharger - Outils professionnels
2 réponses
eriiic
Messages postés
24597
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2024
7 235
Modifié par eriiic le 16/10/2012 à 00:28
Modifié par eriiic le 16/10/2012 à 00:28
Bonsoir,
J'aurai tendance à dire que c'est du pareil au même bien que seul un test pourrait y répondre.
En moyenne tu feras la moitié des tests avant de trouver le bon.
Le Select Case à l'avantage de la lecture facilitée.
Ce que tu pourrais faire, si c'est possible, c'est de trouver des grands groupes.
Par exemple tu dois tester des nombres de 1 à 100 (50 tests en moyenne)
Tu fais 4 tests <=25, 26 à 50 etc. Et à l'intérieur tu testes individuellement les valeurs concernées. tu passeras à 2+13=15 tests en moyenne, soit plus de 60% de gain.
Ou bien déterminer la probabilité de True à chaque test et les faire dans cet ordre. Si 60% de ta base a "ok", 30% "en cours" et les 10% suivant 50 messages d'anomalie divers autant tester en premier "ok" puis "en cours", dans 90% des cas tu ne feras que 2 tests.
Ca peut se faire aussi bien par if ou select.
Il y a aussi les techniques classiques pour accélérer : déclarer et typer ses variables (pas en variant si possible, en long tant qu'on peut pour les numériques), travailler en mémoire plutôt que sur les feuilles. Utiliser si besoin les dictionary.
Et puis il y a peut-être une autre façon d'aborder le problème. Mais sans éléments...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
J'aurai tendance à dire que c'est du pareil au même bien que seul un test pourrait y répondre.
En moyenne tu feras la moitié des tests avant de trouver le bon.
Le Select Case à l'avantage de la lecture facilitée.
Ce que tu pourrais faire, si c'est possible, c'est de trouver des grands groupes.
Par exemple tu dois tester des nombres de 1 à 100 (50 tests en moyenne)
Tu fais 4 tests <=25, 26 à 50 etc. Et à l'intérieur tu testes individuellement les valeurs concernées. tu passeras à 2+13=15 tests en moyenne, soit plus de 60% de gain.
Ou bien déterminer la probabilité de True à chaque test et les faire dans cet ordre. Si 60% de ta base a "ok", 30% "en cours" et les 10% suivant 50 messages d'anomalie divers autant tester en premier "ok" puis "en cours", dans 90% des cas tu ne feras que 2 tests.
Ca peut se faire aussi bien par if ou select.
Il y a aussi les techniques classiques pour accélérer : déclarer et typer ses variables (pas en variant si possible, en long tant qu'on peut pour les numériques), travailler en mémoire plutôt que sur les feuilles. Utiliser si besoin les dictionary.
Et puis il y a peut-être une autre façon d'aborder le problème. Mais sans éléments...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
25 oct. 2012 à 00:19
25 oct. 2012 à 00:19
Bonjour,
Le plus simple c'est de le tester toi-même.
Au début de la fonction tu met
Et juste avant la sortie de la fonction
Tu teste sur ta fonction avec des IF/else et avec des select case.
Et comme cela... tu n'auras plus qu'un seul son de cloche. :D
A+
Le plus simple c'est de le tester toi-même.
Au début de la fonction tu met
Dim T T=Timer
Et juste avant la sortie de la fonction
MsgBox Timer - T
Tu teste sur ta fonction avec des IF/else et avec des select case.
Et comme cela... tu n'auras plus qu'un seul son de cloche. :D
A+
ed555
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
25 oct. 2012 à 09:42
25 oct. 2012 à 09:42
merci lermite222,
ce qui me gêne un peu avec le timer c'est qu'en fonction des processus qui tournent sur ton ordi, tu n'as pas forcément le même résultat pour deux tests identiques.
finalement j'ai pu contourner le problème !
bonne journée, ed
ce qui me gêne un peu avec le timer c'est qu'en fonction des processus qui tournent sur ton ordi, tu n'as pas forcément le même résultat pour deux tests identiques.
finalement j'ai pu contourner le problème !
bonne journée, ed
24 oct. 2012 à 08:23
24 oct. 2012 à 09:29
24 oct. 2012 à 09:33