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
16568
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
14 mai 2022
3 280
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