Apprendre la programmation en VBA pour EXCEL par la pratique - Troisième partie : Résoudre le problème du voyageur
Un tutoriel de Laurent Ott
Le 2017-04-22 18:52:39, par laurent_ott, Rédacteur
Chers membres du club,
j'ai le plaisir de vous présenter le tome 3 de ce mémento qui aborde le problème du voyageur de commerce avec une méthode d'approximation basée sur des principes simples.
Ce cours est une suite de la série sur « apprendre la programmation en VBA pour Excel par la pratique ». Après le tome 1, qui a donné les bases avec un exemple d'implémentation d'un algorithme de QuickRanking, et le tome 2 qui a introduit la programmation graphique, dans ce tome 3, il s'agira d'aborder un problème relativement complexe : le parcours du voyageur de commerce.
Bonne lecture et n'hésitez pas à apporter vos commentaires.
Retrouvez les meilleurs cours et tutoriels pour apprendre Microsoft Excel
j'ai le plaisir de vous présenter le tome 3 de ce mémento qui aborde le problème du voyageur de commerce avec une méthode d'approximation basée sur des principes simples.
Ce cours est une suite de la série sur « apprendre la programmation en VBA pour Excel par la pratique ». Après le tome 1, qui a donné les bases avec un exemple d'implémentation d'un algorithme de QuickRanking, et le tome 2 qui a introduit la programmation graphique, dans ce tome 3, il s'agira d'aborder un problème relativement complexe : le parcours du voyageur de commerce.
Bonne lecture et n'hésitez pas à apporter vos commentaires.
-
laurent_ottRédacteurPar habitude de programmation, tout simplement (et tout bêtement) !
Je viens de tester et effectivement, SELECT CASE semble bien plus rapide que IF dans une boucle répétée plusieurs milliers de fois. Mais la différence est infime sur un appel ponctuel. En tout cas merci pour cette remarque, j'en tiendrai compte dans mes prochains programmes.
D'après mes tests, le second n'est pas plus rapide. Ici, comme la variable "Milieu" est déclarée Entier Long, la valeur calculée renvoyée sera toujours un entier (donc la partie entière), et donc pas besoin d'utiliser \ dans ce cas.le 03/10/2018 à 15:59 -
eriiicMembre expertBonjour,Milieu = (Début + Fin) / 2
Pourquoi avoir utiliser le / en lieu et place du \? Étant donné qu'on a besoin de la partie entière de la division, le second n'est il pas plus rapide?
Avec Début = 1 et Fin = 6, soit une somme impaire :
(Début + Fin) / 2 = 3.5, qui sera arrondi à 4 lors de la conversion si Milieu est typé Entier
(Début + Fin) \ 2 = 3, résultat de la division entière, et restera à 3.
Il faut penser à en tenir compte.
ericle 04/10/2018 à 11:27 -
laurent_ottRédacteurBonjour.
Je te conseille d'ouvrir une discussion sur le forum EXCEL. Tu pourras joindre tes fichiers au format xlsx (pas de xlsm) et on pourra voir plus facilement ce qui bloque.le 13/10/2017 à 11:18 -
Patrice740Expert confirméIl ne s'agit pas de VBA mais d'une formule à placer en A1 d'une feuille de calcul et à tirer jusqu'en A10000 :
=ALEA.ENTRE.BORNES(0;10000)
Edit : avec les raccourcis clavier, c'est plus simple de la placer en A10000 et de la copier jusqu'en A1le 18/01/2018 à 18:05 -
laurent_ottRédacteurBonjour.
Tu peux ouvrir une discussion sur le forum EXCEL : https://www.developpez.net/forums/f6...ros-vba-excel/ en cliquant sur le bouton "ajouter une discussion" après t'être identifié(e).
Ou me contacter en messagerie privée : en cliquant sur mon nom. D'ailleurs tu constateras dans ton "tableau de bord", rubrique "boîte de réception", que j'avais répondu à ton précédent message.
Et tu y trouveras la réponse à cette nouvelle question.
A Bientôt.le 25/01/2018 à 18:27 -
OjanenMembre du ClubMerci beaucoup pour l'ensemble de ces tutoriels très enrichissants !le 30/01/2018 à 14:04
-
DelludoCandidat au ClubBonjour, merci beaucoup, je débute sur excel, cela fait une semaine que je me forme comme je peuux avec ce que je trouve sur internet et franchement votre Pdf est vraiment bien.le 15/02/2018 à 18:41
-
geoffmCandidat au ClubJe l'ai regardé en diagonale, ça semble pas mal ce guide.
Je n'ai plus besoin de lire un guide introductif mais moi ce qui m'a permis de décoller rapidement c'est le guide de Ben Beitler, http://www.excel-spreadsheet.com/vba/vbacode.htm
Très didactique et il va droit au but.le 06/04/2018 à 0:10 -
FilippoMembre éclairéBonjour Laurent,
merci beaucoup pour ce mémento.
C'est super.le 18/09/2018 à 14:09 -
maliano20Nouveau membre du ClubPermettez-moi de vous remercier d'abord pour ces excellents documents.
Code : 1
2If ValRecherchée <= TabDonnées(Début) Then TableauRecherchePosition = Début: Exit Function If ValRecherchée >= TabDonnées(Fin - 1) Then TableauRecherchePosition = Fin: Exit Function
Code : Milieu = (Début + Fin) / 2
le 03/10/2018 à 14:56