Tableau VBA vers une feuille de calcul

Résolu/Fermé
BoneroPross Messages postés 27 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 21 mars 2011 - 16 janv. 2010 à 15:28
BoneroPross Messages postés 27 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 21 mars 2011 - 17 janv. 2010 à 10:10
Bonjour,
je suis neophite en programmation en VBA. je tiens tout d'abord a remercier tous ceux qui animent ce site et contribuent à l'alimenter de reponses aux questions posées par les uns et les autres.

mon probleme est le suivant:

jai un tableau en vba x() dont je peux transferer les elements vers une plage de feuille de calcul.
Mais seul le 1er element du tableau x(1) est reellement transferé vers les cellules de ma plage.
je precise que je ne veux pas utiliser de loop pour ce transfert .
SVP aidez moi.

Sub TableauVbaVersFeuilleDeCalcul()
'je veux transferer les elements de mon tableau VBA vers une plage _
de feuille de calcul.

Dim x(1 To 5) As Double 'mon tableau VBA.
Dim i As Integer
For i = 1 To 5
x(i) = Rnd
Debug.Print x(i) 'juste pour visualiser.
Next i

Worksheets("feuil5").Activate

Dim Plage As range
Set Plage = range("B1:B5")
Plage.Value = x ' Mais seul le 1er element du tableau ie x(1)est recopié dans les cellules de ma plage.

End Sub

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 janv. 2010 à 16:27
Bonjour,

essaies:
Worksheets("feuil5").Activate
 Range("B1:B5") = Application.Transpose(x)


ou (moi je préfère mais...)
Worksheets("feuil5").Activate
range("B1").resize(ubound(x),1)=Application.Transpose(x)
1
BoneroPross Messages postés 27 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 21 mars 2011
16 janv. 2010 à 17:12
ah okkk,
thanks a lot Michel.
en fait un tableau unidimensionnel en VBA est " TOUJOURS" consideré comme une plage "à une ligne" sur une feuille de calcul d'où l'utilisation de Application.worksheetfunction.transpose(x).

Pour preuve , cette instruction marche bien.

Worksheets("feuil5").Activate
Dim i As Integer
For i = 1 To 5
x(i) = Rnd
Debug.Print x(i) 'juste pour visualiser.
Next i

Range("A1:E1").value = x


i understood where my mistake was coming from.
ps. ta 2nde solution est plus elegante ;-)
0