Ecrire un tableau dans une feuille de calcul - VB/VBA/VBS - Programmation
Marsh Posté le 04-05-2017 à 15:29:47
Bonjour,
Merci de baliser les parties de code afin d'améliorer la lisibilité du message.
De base les tableaux commencent à l'indice 0 et non 1. Il faut utiliser l'Option base afin de changer le comportement.
Tant qu'à déclarer les variables, autant déclarer i.
Et enfin, les valeurs d'un tableau s'accèdent grâce à l'indice. Votre dernière ligne ne veut donc rien dire...
Code :
|
Marsh Posté le 04-05-2017 à 16:45:30
Bonjour,
p'tit rappel : une variable tableau créée depuis un Range a forcément pour premier indice 1 …
Marsh Posté le 04-05-2017 à 19:06:46
Option base 1 c'est parfait merci !
MaybeEijOrNot a écrit :
|
Là tu fais une boucle pour écrire le tableau dans la feuille
Mais en faisant une boucle on accède plein de fois à la feuille, ce qui prend plus de temps.
Le but c'est de dire :
Code :
|
Le concept c'est de faire un code qui s'exécute super rapidement. Genre 100 fois plus rapidement.
Mais apparemment quelque chose cloche dans mon implémentation...
Marsh Posté le 04-05-2017 à 19:29:16
Peut être en plaçant la boucle de lecture dans un With Worksheet. Je ne m'y connais pas assez mais doit surement y avoir quelque chose autour du With permettant de faire cela.
Marsh Posté le 04-05-2017 à 20:22:50
En VBA Excel :
• Lecture : Variable tableau = Range
• Ecriture : Range = Variable tableau …
Marsh Posté le 04-05-2017 à 20:52:45
Marc L a écrit : |
C'est ce que j'ai essayé de faire mais ça ne m'écrivait que le premier élément du tableau, et ça le répétait sur toutes les lignes !
Marsh Posté le 05-05-2017 à 00:19:51
C'est juste que la variable tableau ne correspond pas au Range !
Compare dans l'autre sens avec une variable tableau alimentée par la même plage de cellules via la fenêtre des Variables locales …
Une plage de cellules correspondant à une matrice de deux dimensions, lignes par colonnes.
Sinon poster le code exactement entrepris accompagné au moins d'une explication claire et complète quant à sa finalité …
Marsh Posté le 05-05-2017 à 12:21:49
Du coup, quel est le moyen le plus adapté dans son cas? WorksheetFunction.Transpose?
Marsh Posté le 05-05-2017 à 12:38:15
Oui soit via Application.Transpose (mais limitée en nombre d'éléments)
soit tout simplement définir une variable tableau en deux dimensions comme un Range !
Marsh Posté le 04-05-2017 à 12:08:13
Bonjour
J'ai une problématique en apparence très très simple, mais avec le code que je fais tourner ça ne fonctionne pas du tout, je sollicite donc votre aide sur mon code.
J'aimerais tout simplement écrire un tableau dans une feuille excel, et le faire d'un seul coup parce que sinon le temps passé est beaucoup trop long :
D'abord, quand j'utilise le code basique :
Tout fonctionne
Par contre, quand je passe sur mon vrai code, j'ai besoin d'utiliser un tableau de taille variable
J'utilise donc redim preserve.
Sur mon vrai code, excel m'écrit 17 000 fois le premier élément du tableau.
J'ai essayé de faire un code intermédiaire : simplifié mais avec le redim preserve, et là c'est encore mieux : le truc n'écrit rien du tout
A priori, ce truc devrait écrire entre A1 et A10 les valeurs 1, 2, 3, ... 10
en fait il ne m'écrit rien du tout
Comment faire pour résoudre ce problème ?
J'avais déjà écrit du code VBA qui faisait ça sans avoir tous ces problèmes, j'ai peut-être oublié un léger détail mais je ne vois pas lequel..
Merci!
Edit : j'ai remplacé le as string par "as single" dans mon code ci dessus, et maintenant ça écrit quelque chose : uniquement des 0. Alors que la valeur 0 est carrément absente de mon "contenucolonne". Je n'y comprends plus rien..
Message édité par Laska- le 04-05-2017 à 19:05:17