J'essaie d extraire des données stockées dans un tableau vba avec la méthode JOIN pour les "concatener" entre elles avec des points virgules .Mais cela ne fonctionne pas , j'ai joint un petit fichier à titre d'exemple .C'est un tableau excel de 5 lignes et 3 colonnes que je stoch dans un tableau vba et ce que je veux faire c'est ressortir ces données de cette façon : a;b;c;d;e;f;g;h;i;j;k;l;m ect.... . Avez-vous une idée ? Merci de votre aide.
X est un range (correspondant à une ligne) de la plage du Range("A1:C5").
Juste si on avait voulu concaténer par colonne au lieu de par ligne, on aurait utiliser utiliser :
for each x in Range("A1:C5").columns
or each x in Range("A1:C5") ne permet de contrôler le sens de lecture du tableau. C'est le VBA (avec Excel en arrière fond qui décide comment il parcourt le tableau).
@mapomme
Merci pour les explications
C'est donc de la pomme, sans aRay, Charles !
(pardon, je viens de finir ma bière)
Tant qu'on y est on pourrait dégainer du Dictionary ?
ou pire (peut-être) du System.Collections.ArrayList ?
(je dis cela juste pour occuper ce samedi soir pluvieux)
re
oui entre crochet c'est une évaluation du contenu des crochet
VB:
Sub test()
Set x = [A1]
MsgBox TypeName(x)
'c 'est la meme chose que
Set x = Evaluate("A1")
MsgBox TypeName(x)
End Sub
@Efgé
gagnant ou pas je suis étonné vu ta capture des temps aussi courts
je viens de tester chez moi 2013 32 sur 900 000 lignes ben bye bye ! ça ne s'arrête plus
j'ai été obligé de claquer excel dans les taches
d'accord j'ai que 4 giga de proc et 4 de ram mais quand même ,il faut combien pour avoir des temps pareils 40 GIGA de proc et 200 de ram ??
re @mapomme
oui là chez toi aussi c'est evaluate qui gagne
par contre je le redis sur 900 000 lignes et 3 colonne comment vous faites pour avoir des temps pareils
je suis sur que chez moi si je l'arrête pas je dépasse les 10 minutes
ca me perturbe au plus au point ça meme si je travaille sur le pc portable il ne devrait pas y avoir une si grande différence
Je ne vois pas le gain de [A1] par rapport à Cells(1).Resize(10000,3)
?
formule EVALUATE sur [A1].Resize(900000, 3) :0,38 SEC
formule VARIABLE TABLEAU sur [A1].Resize(900000, 3) :0,16 SEC
formule Cells(1).Resize(900000, 3) :0,36 SEC
formule TABLEAU sur Cells(1).Resize(900000, 3) :0,16 SEC
PS: je crains que la malédiction du chiffre 13 soit sortie de la boite de Pandore
(cf message#13)
@mapomme
Comment tu expliques mes résultats ???
(cf message#26)
Je n'ai que 6 Go de RAM
(et c'est un vieux PC : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz 3.00 GHz )
C'est quand même pas le fait d' être en 365 64 bits ?
@mapomme
mais ca ma toujours étonné
mème avec le gamer(paix a son âme il n'avait pas qu'a boire mon café un matin difficile)
je n'avais pas des delay aussi courts pourtant c'etait une fusée avec 32 de ram utilisable et la carte graphique avec sa propre mémoire (8G)
meme avec le patch LAA pour 2013 je reste loin