maitrise des tableaux

F

Flo

Guest
il me manque un peu de pratique en VBA, je ne trouve malhereusement pas de réponse sur le forum à ces deux pb:

Assigner les valeurs d'une colone d'une feuille de calcul à un tableau de VBA sans utiliser de boucle for

ex avec boucle for:
for i=0 to 100
tableau(i, 2) = Sheets('Feuil1').Range('A100').Value
next i



Initialiser un tableau
car ma methode ci dessous est longue, mais je ne trouve pas la syntaxe qui aille:
' C <- F
transfert(0, 0) = 'C'
transfert(0, 1) = 'F'
'D <- G
transfert(1, 0) = 'D'
transfert(1, 1) = 'G'
' E <- C
transfert(2, 0) = 'E'
transfert(2, 1) = 'C'
' F <- O
transfert(3, 0) = 'F'
transfert(3, 1) = 'O'
' G <- I
transfert(4, 0) = 'G'
transfert(4, 1) = 'I'
' J <- Q
transfert(5, 0) = 'J'
transfert(5, 1) = 'Q'
' K <- T
transfert(6, 0) = 'K'
transfert(6, 1) = 'T'
' L <- U
transfert(7, 0) = 'L'
transfert(7, 1) = 'U'


Merci en tous cas pour vos conseils
Flo
 

Hervé

XLDnaute Barbatruc
Supporter XLD
Bonsoir flo

J'ai pas trop compris ta demande, alors je me suis arreté sur une phrase : 'Assigner les valeurs d'une colone d'une feuille de calcul à un tableau de VBA sans utiliser de boucle for'

tu peux essayer ceci :

dim tablo as variant

tablo=range('a1:a100')

mais c'est une réponse limité à ma compréhension du problème :unsure:

salut
 

Bebere

XLDnaute Barbatruc
bonsoir Flo,Hervé

ta boucle devrait être comme suit

dim tableau as variant

avec indice 0
redim tableau(99,1)'tableau 100 lignes,1 colonne
for i=0 to 99
tableau(i, 1) = Sheets('Feuil1').Range('A' & i+1).Value
next i

avec indice 1
redim tableau(100,1)'tableau 100 lignes,1 colonne
for i=1 to 100
tableau(i, 1) = Sheets('Feuil1').Range('A' & i).Value
next i


tu obtiens un tableau de x lignes,1 colonne
lignes
indice bas 0 ou 1 ou lbound(tableau,1)
indice haut x ou ubound(tableau,1)
colonne
indice bas 0 ou 1 ou lbound(tableau,2)
indice haut 1 ou ubound(tableau,2)
à bientôt :)
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Flo, Hervé, Bebere,

Effectivement, je suis, pour ma part, tout à fait d'accord avec Hervé :
Dim Tablo As Variant

Tablo=Range('A1:A100').Value
Ce code me semble tout à fait approprié à la situation pour la première question, surtout que l'objectif était clairement d'éviter une boucle...

Pour la seconde question, moi je tenterais :
Dim transfert(7, 1) As String * 1
Dim L As Byte, C As Byte
      For L = 0 To 7
            For C = 0 To 1
                  transfert(L, C) = Mid('CFDGECFOGIJQKTLU', L * 2 + 1 + C, 1)
            Next C
      Next L
Cordialement,
 

Discussions similaires