Afectation d'une plage a un tableau VBA

Résolu
ccm81 Messages postés 11033 Statut Membre -  
pijaku Messages postés 13513 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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. 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
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > 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