Extraction Une colonne d'un Array

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 !

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous

J'ai déjà été confronté plusieurs fois à ce problème mais par manque de temps (et fainéantise), j'ai toujours contourné.. mais la. j'aimerais bien savoir si c'est possible de faire "plus rapide"

voici le sujet:
après avoir déclaré un tablo() as variant
je colle toutes mes datas de la feuille dans ce tablo ==> tablo=range().value

je bricole ces datas ou pas..
et d'habitude il suffit de faire range("E1").resize() =tablo pour récupérer l'ensemble des données traitées
mais.. de temps en temps, je ne souhaite récupérer qu'UNE seule Colonne de ce tableau
ce que je suis "contraint" de faire c'est une boucle
for i=lbound(tablo) to ubound(tablo)
range("E" &i)= tablo(i,2) ==> 2 étant le numéro de la colonne que je souhaite
next i

y a t il un moyen de récupérer directement SANS boucle TOUTE la colonne?
un truc du genre
Range("E1")=Tablo.column(2)

ci joint un petit fichier pour base de travail..
 

Pièces jointes

Bonsoir Nicole, Laetitia90, Vgendron

Merci déjà à Nicole d'avoir complété la réponse de Laetitia90.
Pour ces trois essais.🙂

Sur 50000 lignes, vos trois méthodes se traitent en moins de 0.5 secondes.

Pour la première méthode, en boucle for...next, c'est nettement plus long : 28s !
Mais, et on arrive à réduire à 2s en utilisant avant la boucle :
Application.Calculation = xlCalculationManual
(et en rajoutant l'instruction Application.Calculation = xlCalculationAutomatic en fin de code).

Ce n'est pas tout le temps le cas mais bien souvent, cette petite ligne apporte satisfaction pour ceux qui, et je m'inclus dedans, sont toujours instinctivement porté sur le "for...next".
Dans le cas présent, c'est pas mal (sur le timing).

Bonne nuit
zebanx
 
re tous 🙂& toutes 🙂 ,bonjour Nicole🙂
il y a tellement de methode pour ecrire cela < 65000 item ou sup...🙂
en régle géneral si on fait rien sur une colonne un simple copier coller largement suffisant
l'ami zebanx 🙂!!!c'est trés bien monte bien en Pce dans le vba
 
Bonjour le fil, le forum

@laetitia90
Je sais que ne je suis pas de ce siècle
Mais même en me creusant mes derniers méninges
"l'ami zebanx 🙂!!!c'est trés bien monte bien en Pce dans le vba"
J'ai rien compris à cette phrase 😉

PS: Au final, c'est quelle solution qu'il faut privilégier ?
Et sinon au pif, cet oiseau là ne peut servir ici par hasard?
CreateObject("System.Collections.ArrayList")
ou sa petite soeur
Ce lien n'existe plus

EDITION; Merci la caféine!
Je viens d'avoir une révélation
leti
Ta phrase ce serait pas :""l'ami zebanx 🙂!!!C'est très bien, monte bien en puissance dans le vba" ?
J'ai bon ?
 
Dernière édition:
Bonjour à tous,

une petite modification de la fonction de nicole permet de se passer du transpose() et de sa limite à 65k :
VB:
Function ExtraitCol(a, col)
  ReDim b(LBound(a) To UBound(a), 1 To 1)
  For i = LBound(a) To UBound(a)
     b(i, 1) = a(i, col)
  Next i
  ExtraitCol = b
End Function
Tant qu'à faire... 🙂
eric
 
Bonjour eriiiiic

Et la petite sœur ou son petit frère? (voir mon précédent message)
Me-fourvoie-je?
Suis-je à côté de la plaque?

@leti
Ton like vaut pour un bon? Je suppute que oui car qui ne dit mot, consent et le silence est d'or.
Donc je vais me recoucher 😉
 
Bonjour à tous,

Que de grands intervenants pour un simple copier-coller de colonne (#6) 😀
Et l'on peut supposer que toute intervention < 1s n'intéresse pas JOB75, Pierre-Jean...😉

J'ai bien envie quand même de déclarer Laetitia90 gagnante : le copier-coller de la colonne B vers la colonne H, c'est indéniablement... une méthode à retenir 😎 qui va à l'essentiel sur la question posée :
y a t il un moyen de récupérer directement SANS boucle TOUTE la colonne?
CQFD !


Bon we (chers(ères) pourfendeurs(-euses) de code !)
D'autres codes la semaine prochaine (celle-ci fut un peu creuse me semble-t-il...).
 
Hellooo à toutes et tous !
je vois que le sujet vous inspire :-D
@Staple1600 l'idée du ArrayList est à garder pour d'autres sujets plus complexes que j'ai de temps en temps..
ici, un "simple" copier coller me va pour l'instant.

@eriiiic : le piège du Array... effectivement.. c'est un flou qui persiste chez moi.. table, tableau, array...Francais Anglais....
j'aurais du mettre quoi pour etre moins ambigu?

sinon: c'est moi ou le post de nicole a disparu??
en tout cas, merci à toutes et tous
 
- 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
7
Affichages
252
Réponses
33
Affichages
3 K
Réponses
10
Affichages
444
Retour