Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Creation d'un tableau de longueur variable

2 réponses
Avatar
NGTB
Bonjour / bonsoir,
j'ai besoin de créer un tableau à une dimension via une macro.
Je ne connais pas le nombre de cellules de ce tableau, vu que ce
nombre est susceptible de varier.
le débogueur me refuse la validité de l'instruction " Dim
tableau2valeur(combien) As String " au motif que combien n'est pas
une constante.
Je puis arriver au résultat désiré en passant par les instructions
" Dim tableau2valeur() As String
ReDim tableau2valeur(bas) "
Le procédé me chagrine : le tableau ne sera employé qu'une fois après
cela. et je trouve le procédé inélégant.
Puis-je faire autrement ?
Merci

2 réponses

Avatar
MichDenis
Bonjour NGTB,

Voici 2 façons de faire pour référencer un tableau avec
le contenu d'une plage de cellules...

La deuxième méthode est beaucoup plus rapide !
(ce n'est qu'un exemple, je ne sais pas ce que tu veux
mettre dans le tableau)

'------------------------------------
Sub test()

Dim tableau2valeur() As String
Dim C As Range, A As Long

With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
nblignes = .Rows.Count
ReDim tableau2valeur(1 To nblignes)
For Each C In .Cells
A = A + 1
tableau2valeur(A) = C.Value
Next
End With
End With
End Sub

'------------------------------------
Sub test1()
Dim tableau2valeur() As Variant
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
tableau2valeur = .Value
End With
End With
End Sub
'------------------------------------




"NGTB" a écrit dans le message de groupe de discussion :

Bonjour / bonsoir,
j'ai besoin de créer un tableau à une dimension via une macro.
Je ne connais pas le nombre de cellules de ce tableau, vu que ce
nombre est susceptible de varier.
le débogueur me refuse la validité de l'instruction " Dim
tableau2valeur(combien) As String " au motif que combien n'est pas
une constante.
Je puis arriver au résultat désiré en passant par les instructions
" Dim tableau2valeur() As String
ReDim tableau2valeur(bas) "
Le procédé me chagrine : le tableau ne sera employé qu'une fois après
cela. et je trouve le procédé inélégant.
Puis-je faire autrement ?
Merci
Avatar
NGTB
On Mon, 25 May 2009 17:55:49 -0400, "MichDenis"
wrote:

Bonjour NGTB,



Bonsoir et merci de me repondre aussi vite.

Voici 2 façons de faire pour référencer un tableau avec
le contenu d'une plage de cellules...



J'en ai une troisieme mais elle me semble si scolaire et
vraiment peu adaptée à la syntaxe du VBA.

La deuxième méthode est beaucoup plus rapide !



A inconvenients egaux, je vais opter pour celle-ci donc.

(ce n'est qu'un exemple, je ne sais pas ce que tu veux
mettre dans le tableau)



Des chaines de caracteres simples (en fait, des noms de
feuilles). Donc après adaptation, cela donne :




'------------------------------------
Sub test1()
Dim tableau2valeur() As _String _
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
tableau2valeur = .Value
End With
End With
End Sub
'------------------------------------


Il y a tres longtemps que je n'ai pas "saigne" du code et ma
plus grande experience est en C ou javascript (C surtout). Mais elle
date du siecle dernier.
Ce que j'aime bien avec l'instruction redim, c'est
l'impossibilite de depasser l'indice maximal ainsi determine. Sauf
erreur de ma part, cela n'est pas le cas dans ton code (que je vais
conserver pour remplir plus vite mon tableau.
Passer par une déclaration et une modification de cette
déclaration me paraissait beaucoup pour un tableau amene a stocker au
plus cinq ou six valeurs.
Merci beaucoup du coup de main ; je ne maitrise pas encore
trop les "End(xlUp)" et autres subtilites du meme genre.