VBA vecteur en argument

Bonjour,

Je débute en VBA et pour m'entrainer j'ai décidé de commencer par un algo classique: le bubblesort auquel j'envoie un vecteur et qui me le renvoie trié par ordre croissant. trouver la sol sur internet est facile mais je ne comprends pas mon erreur.

Voici mon code qui me renvoie des #valeur!

Function bubblesort(vecteurarg) ' prend un vecteur et range par ordre croissant

Dim i, j, n As Integer
Dim vectbis() As Double 'vecteur où je vais copier des valeurs
vectcopy = vecteurarg

n = UBound(vectcopy, 1)
ReDim vectbis(n) As Double

For j = n - 1 To 1 Step -1

For i = 1 To j

If (vectcopy(i) < vectcopy(i + 1)) Then
vectbis(i) = vectcopy(i)
vectcopy(i) = vectcopy(i + 1)
vectcopy(i + 1) = vectbis(i)
End If

Next i

Next j

bubblesort = vectcopy

End Function

Merci d'avance à celui ou ceux qui pourront m'éclairer. pour leur temps

3 réponses

  1. en fait je suis sûr que c'est une erreur stupide de déclaration ou de redéclaration de mon vecteur passé en argument... Dois-je ajouté quelque chose dans Function bubblesort(vecteurarg), ai je besoin de créer vectcopy ou puis je manipuler directement vecteurarg... svp je m'arrache les cheveux là pour le coup! c'est frustrant!!! :)
    1. Bonsoir,
      Je pense que tu ne peux pas écrire : vectcopy = vecteurarg
      Il faut affecter les valeurs une par une :
      vectcopy(i) = vecteurarg(i)
      @+
      1. Bonjour Gord21,

        Merci beaucoup pour la réponse, je suis tout à fait d'accord avec toi ce qui m'a amené à mon 2è souci... pour faire cette boucle afin de copier j'ai besoin de récupérer la taille du vecteur passé en argument et j'obtiens des #valeur! si j'écris:

        n = UBound(vecteurarg, 1)

        donc à priori vectcopy(i) = vecteurarg(i) tombe à l'eau...

        qu'en penses tu?
    2. Bonjours,

      Pour copier tout essaye

      vectcopy() = vecteurarg ()
      1. Bonjour Iama,

        J'ai essayé mais cela n'a pas l'air de fonctionner, en tout cas pas sur ma machine! Merci quand même!
      2. Domage sur la mienne ça marche
        vectcopy() = vecteurarg()
      3. ok super! merci beaucoup alors! ça me rassure! c'est ma version d'excel qui est un peu pourrie!! pendant que j'y suis: n = UBound(vecteurarg, 1) devrait marcher aussi non?

        merci pour ton temps!
      4. Je ne m'y connais pas trop en VB, mais je pense que ceci est du au fait que tu n'as pas déclaré la variable vectcopy avant de l'utiliser
      5. hello Geo373,

        merci de ton aide, je regarderai ceci plus tard mais je garde ta remarque en tête et je te tiens au courant!

        bon week end