Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Transfert Array -->feuille avec Resize[RESOLU grâce à Laetitia et Mapomme]

cathodique

XLDnaute Barbatruc
Bonjour,
Je m'initie aux variables Tableau et je bute sur un problème.
Sur un tutoriel, il est mis: Sous VBA, les tableaux à une dimension sont en ligne par défaut, donc pour Excel, le code que nous venons d'écrire équivaut à : Range("I1:I5") = "Toto" (soit le premier index).

En effet, comme il est conseillé en appliquant la fonction transpose, on transfert le tableau en colonne sur la feuille.

Étant donné que le tableau est par défaut en ligne, je ne trouve pas comment le transférer sur la feuille en ligne. NB: je voudrais aussi utiliser la fonction Resize.
VB:
Sub lesArrayCestSimple1() 'première approche
Dim Tb() As Variant
Dim i As Byte
Cells.Clear

Tb = Array("Toto", "Zaza", "Mimi", "Nono", "Babu")
For i = 1 To UBound(Tb, 1) 'UBound retourne la limite supérieure
'de la dimension voulue d'un tableau
   Cells(i, 1) = Tb(i) 'on remplit en colonne
   Cells(5, i + 2) = Tb(i) 'on remplit en ligne
Next i

'Transfert Tb sur la feuille
'------------------------------
'transfert en colonne fonctionne
Range("e10").Resize(UBound(Tb)) = Application.Transpose(Tb)
'transfert en ligne ne fonctionne pas, renvoie le 1er index
Range("f10").Resize(UBound(Tb)) = Tb
Stop
End Sub
Merci pour votre aide.
 

laetitia90

XLDnaute Barbatruc
bonjour Cathodique

on peut comme cela !!
VB:
Dim t
t = Array("Toto", "Zaza", "Mimi", "Nono", "Babu")
[f10].Resize(1, 5) = t

ou encore
VB:
[f10].Resize(1, 5) = Array("Toto", "Zaza", "Mimi", "Nono", "Babu")

tu peus enlever le 1 aussi pas utile dans ce cas la

[f10].Resize(, 5)
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Merci beaucoup Laetitia90. Je vais pouvoir avancer sur le tuto.

Au vu de ce que tu m'as proposé et qui fonctionne bien. J'ai fait comme ci-dessous et ça fonctionne.
VB:
[A16].Resize(, UBound(Tb)) = Tb

Encore merci et bon week-end à tous.
 

cathodique

XLDnaute Barbatruc
Un très grand merci Mapomme pour ton fichier et tes explications.

Très gentil de ta part, c'est beaucoup plus clair. Ma petite tête commence à mieux intégrer les tableaux VBA.

Encore merci.

Bon week-end.
 

laetitia90

XLDnaute Barbatruc
re , Mapomme

bien ton explication l'ami mapomme

attention il faut suivre les recommandations de notre ami
option base est important
[A16].Resize(, UBound(Tb)) = Tb avec option base 1 ....autrement manquera le dernier index

sans option base declaré
[A16].Resize(, UBound(TB) + 1) = TB
 

Discussions similaires

Réponses
7
Affichages
369
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…