VBA vecteur en argument
wesley78
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
wesley78 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
wesley78 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- VBA vecteur en argument
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
3 réponses
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!!! :)
Bonsoir,
Je pense que tu ne peux pas écrire : vectcopy = vecteurarg
Il faut affecter les valeurs une par une :
vectcopy(i) = vecteurarg(i)
@+
Je pense que tu ne peux pas écrire : vectcopy = vecteurarg
Il faut affecter les valeurs une par une :
vectcopy(i) = vecteurarg(i)
@+
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?
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?