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]

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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:
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.
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
516
Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…