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

optimisation de boucles

P

pierref

Guest
Bonjour,

J'ai le code suivant en vba :

For i = 1 To n
For j = 1 To n1
[debut1].Cells(i, j).Value = tab1(i, j)
Next j
For j = 1 To n2
[debut2].Cells(i, j).Value = tab2(i, j)
Next j
Next i

En fait, je fais des calculs que je stocke dans des tableaux (tab1 et tab2).
A la fin du code je souhaite écrire ces tableaux sur ma feuille excel (cf code ci dessus).
Le problème est que cette écriture prend beaucoup de temps.

Y a t-il moyen d'optimiser ce code par une écriture plus rapide ?

Par avance merci

pierref
 
P

Pascal76

Guest
Salut pierref

essaies peut-être

[début1].range(cells(1,1),cells(n,n1))=tab1

[début2].range(cells(1,1),cells(n,n2))=tab2

Cela devrait coller ton tableau d'un coup

Tu dis si ça marche

Pascal
 
J

jmt0

Guest
Salut pascal,

Pour les formule j'avaistrouvés pareil, mais j'arrivait pas a utiliser mon resultat.

a quoi correspondeles tab1 surement a des tableaux, mais tu t'en serve comment apres?
 
P

Pascal76

Guest
Salut jmt0

Les tab1 et tab2 sont des variables tableaux qui se remplissent par calcul pendant la macro. Une fois recopiées sur la feuille excel le but est atteint.

Est-ce que cela répond à ta question ?

Pascal
 
P

pierref

Guest
heu.... pas facile.. le fichier fait 10 meg et pour remplir tab1 et tab2 il faut le fichier entier...

La solution ne serait elle pas :

[début1].range(cells(1,1),cells(n,n1))=tab1(1 to n, 1 to n+1)


??

je vais essayer


merci
 
P

Pascal76

Guest
c'est la cellule où doivent commencer à se mettre tes données ?
Dans ce cas là normal que la formule ne fonctionne car cela fait Range.Range et là ça doit pas le faire !

je cherche

Pascal
 
P

Pascal76

Guest
ReRe

essaies

x= Range("début1").Row
y = Range("début1").Column

Range("début1", Cells(x+n-1, y+n1-1)) = tab1

Tu l'appliques pour tes 2 tableaux

Tu me tiens au courant

Pascal
 
P

pierref

Guest
je crois que je vais faire une petite variante a ton idée :

dim rang as string

rang = "K1:L" & nb
range(rang) = montab

en tout cas, ca va vraiment plus vite !!

merci pour tout

a+
 
P

Pascal76

Guest
Content que tu gagnes du temps

pour ton dernier post, tu n'as pas besoin de passer par une variable

range("K1:L" & nb)=montab doit fonctionner aussi

Bon courage pour la suite

Pascal
 

Discussions similaires

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