Afectation d'une plage a un tableau VBA

Résolu
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

2 questions en VBA

1. Comment affecter une plage à un tableau vba
quelque chose du genre Tablo = L1C1:L20C20
et comment declarer ce tabeau (qui doit etre de dimension variable)

2. Comment recuperer le n° de la 1° colonne non vide d'une ligne (d'une feuille)

merci

3 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut ccm81,
Question 1 : Je ne suis, loin de là même , pas spécialiste en variable tableau... Je débute là dedans. Je te conseille fortement ce lien :
tout sur les variables tableau ici
Tu peux toujours faire comme ceci :
Dim Tablo   
Tablo = Sheets(1).Range("A1:AZ20").Value

Question 2 :sources
'donne la lettre de la dernière colonne renseignée de la feuille de calculs    
Dercol = Split(Worksheets("Feuil2").UsedRange.Address, "$")(3)   
'Donne le numéro de la dernière Colonne de la feuille de calculs    
Dercol = Range(Split(Worksheets("Feuil2").UsedRange.Address, "$")(3) & 1).column
--
"Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
- Le Tribunal des flagrants délires- P.Desproges -
0
binet
 
Tablo = Sheets(1).Range("A1:AZ20").Value donne un tableau à 2 dimensions (genre (g(1)->g(1,0) etc). comment en faire un à une suele dimension (si on a qu'une ligne par exemple) genre (g(0) g(1) etc...)?
merci
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > binet
 
Bonjour,

Tablo = Sheets(1).Range("A1:AZ20").Value 

donne un tableau à 2 dimensions

Normal, déjà la plage est constituée de plusieurs lignes ET de plusieurs colonnes.

Sinon, il est vrai que :
Tablo = Sheets(1).Range("A1:A20").Value 

donne également un tableau à 2 dimensions en Base 1 (le premier indice du tableau est égal à 1, pas à 0).

Donc, pour obtenir un tableau à une dimension, il faut boucler sur celui-ci et le transférer dans un tableau à 1 dimension.

Exemple :
Dim Tablo, i AS Long, Tb_Out()
Tablo = Sheets(1).Range("A1:A20").Value
'redimensionne en base 0. Pour Base 1, enlever le - 1
ReDim Tb_Out(UBound(Tablo, 1) - 1)
For i = LBound(Tablo, 1) To Ubound(Tablo, 1)
    'en Base 0. Pour la Base 1 enlever le - 1
    Tb_Out(i - 1) = Tablo(i, 1)
Next i
0