XL 2010 VBA - n ième valeur dans un tableau de données

Airone784

XLDnaute Occasionnel
Bonjour,

Voici mon bout de code :

VB:
Sub n_valeur()

Dim tableau()

For I = 3 To Sheets("Volume").Range("N3").End(xlDown).Row
j = j + 1
ReDim tableau(j)


tableau(j) = Sheets("Volume").Range("N" & I)

'MsgBox tableau(j)
Next I

For s = 1 To UBound(tableau)

valeur = Application.WorksheetFunction.Small(tableau, s)
MsgBox valeur
Next s
End sub

Je souhaite déterminer et exploiter la n_ième valeur d'un tableau de données mais je ne trouve pas le bon code sachant que je ne suis pas habitué à utiliser les tableaux de données sous VB mais je sais que leur utilisation rend le code plus efficace.
Je ne trouve pas ma solution sur le forum.

Sauriez vous me dire comment je peux récupérer la nième valeur d'un tableau ??

Merci d'avance.

Bonne journée.
 

Airone784

XLDnaute Occasionnel
Bonjour

Sans un fichier exemple annonyme, ça va être difficile.
Déjà si tu mets
ReDim tableau(j)
dans une boucle, tu écrases ton tableau à chaque passage de la boucle.

Cordialement

Bonjour,

Exact, je viens d'ajouter preserve et mon code fonctionne du coup!!! Ce qui donne pour les gens que ça pourrait intéresser un jour :

VB:
Sub n_valeur()
Dim tableau()

For I = 3 To Sheets("Volume").Range("N3").End(xlDown).Row
j = j + 1
ReDim preserve tableau(j)

tableau(j) = Sheets("Volume").Range("N" & I)

'MsgBox tableau(j)

Next I

For s = 1 To UBound(tableau)
valeur = Application.WorksheetFunction.Small(tableau, s)
MsgBox valeur
Next s

End sub

Merci pour la remarque et bonne fin de journée
 

Efgé

XLDnaute Barbatruc
Re
Inutile de boucler pour remplir le tableau:
VB:
Sub n_valeur_2()

Dim Valeur&
Dim tableau As Variant

'Avec la feuille Volume
With Sheets("Volume")
    'Récupération des valeurs de la plage dans le tableau
    tableau = .Range(.Cells(3, 14), .Cells(3, 14).End(4))
'Fin d'utilisation de la feuille
End With

'Pour chaque ligne du tableau
For i = 1 To UBound(tableau, 1)
    'Récupération de la petite.valeur i eme
    Valeur = Application.WorksheetFunction.Small(tableau, i)
    Debug.Print i & vbTab & Valeur 'vérification dans la fenêtre Exécution
'Prochaine ligne du tableau
Next i

End Sub

Cordialement
 

Airone784

XLDnaute Occasionnel
Re
Inutile de boucler pour remplir le tableau:
VB:
Sub n_valeur_2()

Dim Valeur&
Dim tableau As Variant

'Avec la feuille Volume
With Sheets("Volume")
    'Récupération des valeurs de la plage dans le tableau
    tableau = .Range(.Cells(3, 14), .Cells(3, 14).End(4))
'Fin d'utilisation de la feuille
End With

'Pour chaque ligne du tableau
For i = 1 To UBound(tableau, 1)
    'Récupération de la petite.valeur i eme
    Valeur = Application.WorksheetFunction.Small(tableau, i)
    Debug.Print i & vbTab & Valeur 'vérification dans la fenêtre Exécution
'Prochaine ligne du tableau
Next i

End Sub

Cordialement
Bonne solution aussi effectivement et surement plus efficace en terme de rapidité d'exécution.

Merci!
 

Discussions similaires

Réponses
11
Affichages
238

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26