OVH Cloud OVH Cloud

copier un sous tableau de vba ds excel

8 réponses
Avatar
xloki
bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !

8 réponses

Avatar
j
par exemple :
zaza = Array(5, 7, 8, 5, 1)
Range("b1:b5") = WorksheetFunction.Transpose(zaza)


http://jacxl.free.fr/



"greg" a écrit dans le message de news:

bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !


Avatar
Frédéric Sigonneau
Bonsoir,

Sur une autre approche, sans boucle mais au prix d'une bidouille pas terrible,
et qui nécessite que la colonne IV de ta feuille ne contienne aucune donnée :

Sub test()
Dim Arr(100, 100)

'remplissage du tableau
For i = 0 To 100
Arr(i, 0) = i & " Dim1"
Arr(i, 1) = i & " Dim2"
Next i

'bidouille
Columns("C:C").Insert Shift:=xlToRight
Range("C1:D101").Value = Arr
Columns("C:C").Delete

End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !


Avatar
xloki
merci mais je pense que ça ne marche que si array n'a qu'une ligne,
mon problème est en fait d'extraire une ligne (ou une colonne) du
tableau...


"" wrote in message news:...
par exemple :
zaza = Array(5, 7, 8, 5, 1)
Range("b1:b5") = WorksheetFunction.Transpose(zaza)


http://jacxl.free.fr/



"greg" a écrit dans le message de news:

bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !




Avatar
xloki
merci !
je préférerai en effet éviter les "bidouilles"...
et là sauf erreur, si par ex mon tableau fait 300 colonnes, et qu'on
veut la colonne 280 on est coincés...


Frédéric Sigonneau wrote in message news:...
Bonsoir,

Sur une autre approche, sans boucle mais au prix d'une bidouille pas terrible,
et qui nécessite que la colonne IV de ta feuille ne contienne aucune donnée :

Sub test()
Dim Arr(100, 100)

'remplissage du tableau
For i = 0 To 100
Arr(i, 0) = i & " Dim1"
Arr(i, 1) = i & " Dim2"
Next i

'bidouille
Columns("C:C").Insert Shift:=xlToRight
Range("C1:D101").Value = Arr
Columns("C:C").Delete

End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !




Avatar
Pascal Engelmajer
salut,
je ne comprends pas le problème posé
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"greg" a écrit dans le message de news:

merci !
je préférerai en effet éviter les "bidouilles"...
et là sauf erreur, si par ex mon tableau fait 300 colonnes, et qu'on
veut la colonne 280 on est coincés...


Frédéric Sigonneau wrote in message
news:...

Bonsoir,

Sur une autre approche, sans boucle mais au prix d'une bidouille pas
terrible,


et qui nécessite que la colonne IV de ta feuille ne contienne aucune
donnée :



Sub test()
Dim Arr(100, 100)

'remplissage du tableau
For i = 0 To 100
Arr(i, 0) = i & " Dim1"
Arr(i, 1) = i & " Dim2"
Next i

'bidouille
Columns("C:C").Insert Shift:=xlToRight
Range("C1:D101").Value = Arr
Columns("C:C").Delete

End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !






Avatar
xloki
salut,
j'vais essayer d'ête plus clair :
j'ai un tableau à deux dimensions sous VB, et je voudrais copier l'une
des colonnes dans une colonne donnée de ma feuille excel.
pour faire ça, on peut faire une simple boucle et écrire chaque
élément de la colonne avec range un par un, mais c'est très long.
si mon tableau n'avait qu'une colonne (ou une ligne, on peut
transposer), on pourrait également faire un range et en une commande
rapide, ça serait fait.
de même, si on voulait copier tout le tableau d'un coup.
là le pb est qu'on veut copier une seule des colonnes du tableau.
si c'est la première, ça pose pas de problème (range fait ça bien),
c'est embêtant qd c'est une autre colonne, et que l'on ne veut pas
copier tout le tableau puis effacer les colonnes en trop.

voilà, j'espère (un peu mais pas trop ;-)) que ct un peu p+ clair... !



"Pascal Engelmajer" wrote in message news:<#s$...
salut,
je ne comprends pas le problème posé
--
Amicalement.
bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième colonne de
ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !








Avatar
Pascal Engelmajer
salut,
je comprends mieux.
il semble que l'on ne puisse pas éviter une boucle.
on peut cependant faire cette boucle entre le tableau origine (colonne 2) et
un tableau de Variants.
ça donne à peu près ceci
Dim tab2 As Variant
'plage est la plage de cellule cible ici une colonne
tab2 = [plage].Value 'initialise le tableau noter ubound=1
For i= 1 To [plage].count
tab2(i, 1) = tab1(i-1, 1) 'tab1 la table dont on veut copier la 2e
colonne (ici ubound=0)
Next
Application.ScreenUpdating = False
[plage].Value = tab2
Application.ScreenUpdating = True


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"greg" a écrit dans le message de news:

salut,
j'vais essayer d'ête plus clair :
j'ai un tableau à deux dimensions sous VB, et je voudrais copier l'une
des colonnes dans une colonne donnée de ma feuille excel.
pour faire ça, on peut faire une simple boucle et écrire chaque
élément de la colonne avec range un par un, mais c'est très long.
si mon tableau n'avait qu'une colonne (ou une ligne, on peut
transposer), on pourrait également faire un range et en une commande
rapide, ça serait fait.
de même, si on voulait copier tout le tableau d'un coup.
là le pb est qu'on veut copier une seule des colonnes du tableau.
si c'est la première, ça pose pas de problème (range fait ça bien),
c'est embêtant qd c'est une autre colonne, et que l'on ne veut pas
copier tout le tableau puis effacer les colonnes en trop.

voilà, j'espère (un peu mais pas trop ;-)) que ct un peu p+ clair... !



"Pascal Engelmajer" wrote in message
news:<#s$...

salut,
je ne comprends pas le problème posé
--
Amicalement.
bonjour,

j'ai un tableau ss vba, par ex

Dim tableau(100,100)

(...)

et je souhaiterais par ex copier les valeurs de la deuxième
colonne de





ce tableau ds la troisième colonne de ma feuille excel.

comment faire ça rapidement sans utiliser une boucle ?

merci !










Avatar
xloki
ah cool, merci, j'aime bien cette solution...

"Pascal Engelmajer" wrote in message news:<#...
salut,
je comprends mieux.
il semble que l'on ne puisse pas éviter une boucle.
on peut cependant faire cette boucle entre le tableau origine (colonne 2) et
un tableau de Variants.
ça donne à peu près ceci
Dim tab2 As Variant
'plage est la plage de cellule cible ici une colonne
tab2 = [plage].Value 'initialise le tableau noter ubound=1
For i= 1 To [plage].count
tab2(i, 1) = tab1(i-1, 1) 'tab1 la table dont on veut copier la 2e
colonne (ici ubound=0)
Next
Application.ScreenUpdating = False
[plage].Value = tab2
Application.ScreenUpdating = True


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel