#Include HotKeySet("{ESC}","toggle") global $km_parcourus[10],$j=0,$leskilometre[10][2] global $tableaupoids[10][3] = [ _ ["Arras", "-1", "Non"], _ ["Bordeaux", "-1", "Non"], _ ["Brest", "-1", "Non"], _ ["Lyon", "-1", "Non"], _ ["Marseille", "-1", "Non"], _ ["Montpellier", "-1", "Non"], _ ["Nantes", "-1", "Non"], _ ["Paris", "-1", "Non"], _ ["Poitier", "-1", "Non"], _ ["Strasbourg" ,"-1", "Non"]] global $tableauant[10][2]=[ _ ["Arras", "Aucun"], _ ["Bordeaux","Aucun"], _ ["Brest","Aucun"], _ ["Lyon","Aucun"], _ ["Marseille", "Aucun"], _ ["Montpellier", "Aucun"], _ ["Nantes", "Aucun"], _ ["Paris","Aucun"], _ ["Poitier", "Aucun"], _ ["Strasbourg" ,"Aucun"]] global $valnoeuds[10][6]=[ _ ["Arras", "522","561","185"], _ ["Bordeaux","334","237"], _ ["Brest","298","593"], _ ["Lyon","465","303","315","494"], _ ["Marseille", "171","315","809"], _ ["Montpellier", "557","303","797","171"], _ ["Nantes", "298","334","386","561"], _ ["Paris","185","386","593","338","465"], _ ["Poitier", "338","237","557"], _ ["Strasbourg" ,"522","494","797","809"]] global $noeuds[10][6]=[ _ ["Arras", "Strasbourg","Nantes","Paris"], _ ["Bordeaux","Nantes","Poitier"], _ ["Brest","Nantes","Paris"], _ ["Lyon","Paris","Montpellier","Marseille","Strasbourg"], _ ["Marseille", "Montpellier","Lyon","Strasbourg"], _ ["Montpellier", "Poitier","Lyon","Strasbourg","Marseille"], _ ["Nantes", "Brest","Bordeaux","Paris","Arras"], _ ["Paris","Arras","Nantes","Brest","Poitier","Lyon"], _ ["Poitier", "Paris","Bordeaux","Montpellier"], _ ["Strasbourg" ,"Arras","Lyon","Montpellier","Marseile"]] $Depart=InputBox("","Ville de départ: ") $Arrive=InputBox("","Ville d'arrivée: ") $tableaupoids[_ArraySearch($tableaupoids,$Depart)][1]="0" ;Tant que le noeud ayant le poids le plus faible n'est pas le noeud d'arrivée. While _ArrayMinIndex($tableaupoids,0,0,0,1)<>_ArraySearch($tableaupoids,$Arrive) if $j=0 Then ;On cherche le noeud avec le plus petit poids $ville_faible_poids=_ArrayMinIndex($tableaupoids,0,0,0,1) Else _ArrayDisplay($leskilometre) ;mon objectif ici est le suivant: si on a déjà fais tourner une fois la boucle, on cherche la ville ayant le poids le plus faible et different de -1. Donc pour sa je classe toutes les données differantes de -1 et je les classes dans un tableau ;avec ce tableau (donc $leskilometre), je chercherais dedans la valeur la plus faible, et ensuite je récupererais cette valeur et la chercherais dans $tableaupoids. for $i=0 To 9 if $tableaupoids[$i][1]="-1" Then _ArrayDelete($leskilometre,$i) Else $leskilometre[$i+1][0]=$tableaupoids[$i][0] $leskilometre[$i+1][1]=$tableaupoids[$i][1] EndIf Next EndIf MsgBox(0,"","La ville ayant le poids le plus faible est "&$tableaupoids[$ville_faible_poids][0]&".") ;je vais boucler sur les noeuds fils for $i=1 to 5 if $noeuds[$ville_faible_poids][$i]="" Then ExitLoop Else ;donc ici les noeuds défilent MsgBox(0,"",$i&"er noeud, "&$noeuds[$ville_faible_poids][$i]&".") ;pour chaque cas, on regarde si on est déjà passé par là If $tableaupoids[$noeuds[$ville_faible_poids][$i]][2]="Non" Then ;maintenant on regarde si kilométrage de noeud fils > kilométrage de noeud pere + distance noeud pere-noeud fils , OU kilométrage de noeud fils non défini (= -1) If $valnoeuds[$ville_faible_poids][$i]>($km_parcourus+$valnoeuds[$ville_faible_poids][$i]) Or $tableaupoids[_ArraySearch($tableaupoids,$noeuds[$ville_faible_poids][$i])][1]="-1" Then ;si c est vrais, alors kilométrage de noeud fils = kilométrage de noeud pere + distance noeud pere-noeud fils et l'antécedant de noeud fils est noeud pere $km_parcourus[$i]=($km_parcourus[$i]+$valnoeuds[$ville_faible_poids][$i]) $tableauant[_ArraySearch($tableaupoids,$noeuds[$ville_faible_poids][$i])][1]=$tableaupoids[$ville_faible_poids][0] ;maintenant je mets cela à jour dans le tableau des poids $tableaupoids[_ArraySearch($tableaupoids,$noeuds[$ville_faible_poids][$i])][1]=$km_parcourus[$i] MsgBox(0,"","J'ai parcourus "&$valnoeuds[$ville_faible_poids][$i]&" kms.") ;je mets que je suis passé par le noeud pere $tableaupoids[$ville_faible_poids][2]="Oui" EndIf Else MsgBox(0,"","Déjà visité") EndIf EndIf Next $j=-2 WEnd Func toggle() Exit EndFunc