Tableau VBA vers une feuille de calcul [Résolu/Fermé]

Messages postés
27
Date d'inscription
samedi 16 janvier 2010
Statut
Membre
Dernière intervention
21 mars 2011
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2835
0
Merci
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)
BoneroPross
Messages postés
27
Date d'inscription
samedi 16 janvier 2010
Statut
Membre
Dernière intervention
21 mars 2011
-
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 ;-)
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2835
0
Merci
bonjour
sur un tableau à 2 dimensions c'est valable aussi
par ex tablo(1 to5, 1 to 3)
range("B1").resize(5,3)===> transpose etc
range("B1").resize(3,5) ===> tablo
BoneroPross
Messages postés
27
Date d'inscription
samedi 16 janvier 2010
Statut
Membre
Dernière intervention
21 mars 2011
-
merci pr tes explications