REM ***** BASIC OpenOffice 3.x ***** REM ** La question 5.c est à faire directement dans la feuille de calcul (menu Données, Trier) REM ** après génération des listes de nombres aléatoirement dans la feuille de calcul Sub ExecTriBulles rem Macro à exécuter directement dans l'éditeur Basic de OOo rem Saisie Texte = InputBox ( "Veuillez entrer une liste à ordonner : ","Saisie","3,-1,2" ) rem traitement texte vers liste Liste()=split( Texte,"," ) rem On transforme le texte en liste de textes ListeTexteEnNombre( Liste() ) rem voir ci-dessous ' alternative aléatoire à la saisie : ' Liste=ListeAleatoire(213,945,300) rem traitement TriBulles( Liste() ) rem voir ci-dessous rem Sortie Texte= join( Liste(),"," ) rem On rassemble la liste sous forme d'un seul texte MsgBox ( texte , 256, "Résultat du tri" ) End Sub Function ListeTexteEnNombre( Liste() ) rem Transforme une liste de textes en liste de nombres nListe=UBound( Liste ) rem remplace chaque texte par sa valeur numérique (Single) For i=0 to nListe Liste(i)=CSng( Liste(i) ) Next i End Function Function TriBulles( A() ) rem Tri simplement la liste A n=UBound(A()) rem rang du dernier élément et non longueur de la liste For i=0 to n-1 For j=0 to n-1 if A(j)>A(j+1) Then c=A(j) A(j)=A(j+1) A(j+1)=c endif Next j Next i rem résultat rem aucun : la liste est modifiée ! End Function Function ListeAleatoire(min,max,nombre) rem Génère une liste de (nombre) valeurs entières aléatoire entre min et max Dim L(nombre-1) For i=0 to nombre-1 L(i)=int(rnd()*(max+1-min))+min Next i ListeAleatoire=L End Function