Lecture tableau d'Excel dans VBA

Bonjour à tous,

Je cherche à lire un tableau présent sur une feuille Excel dans VBA, en fonction de 3 "critères". J'ai besoin que les valeurs de mon tableau soient organisées en fonction de mes 9 colonnes (P1 à P9), des 3 années (1 à 3) et des 12 mois de chaque année.

Malgré plusieurs tentatives je n'arrive pas à lire l'ensemble des valeurs de mon tableau:

  • soit pour chaque année j'obtiens les valeurs de l'année 1 (janvier(année1)=janvier(année2)=janvier(année3), idem pour les autres mois).
  • soit tous les mois d'une année donnée sont identique (janvier(année1)=février(année1)..., janvier(année2)=février(année2)...)

Bref, je vous ai mis mon exemple en pièce jointe. (Tableau + code)

16exemple.xlsm (17.07 Ko)

Si vous avez des idées pour corriger mon code, je suis prenneuse ^^

Bonne journée à tous !

Bonjour,

Tu n'es pas obligée de faire un tableau 3D. Tu peux rester sur un tableau 2D, la lecture et l'écriture d'une plage est 1000 fois plus rapide (au moins) que cellule par cellule.

Ta ligne de donnée sera : an * 12 + mois, avec mois qui varie de 0 à 2.

Et prends l'habitude de mettre des noms de variables 'parlants'...

Regarde si ça te va.

eric

24exemple.xlsm (16.61 Ko)

Merci eriiic,

Le problème avec ta méthode, c'est que je ne peux plus choisir d'utiliser la valeur du mois 4 de l'année 2, si? (Dans ce cas cela porrait vraiment simplifier mon travail).

En réalité, je travaille sur 21 ans, et non pas 3. Je réalise ce tableau, pour pouvoir ensuite utiliser ses valeurs dans d'autres calculs dans lesquels je dois intégrer des conditions (par exemple: valeur du tableau si Année=2 et Mois=8).

J'ai donc essayer une autre méthode, qui commence à me prendre la tête :

27exemple.xlsm (18.91 Ko)

J'utilise "Do ...Loop Until":

J'ai donc identifié les tableaux Mois () et Annee (). Puis avec la fonction "Do ...Loop Until", je "regroupe" ces deux tableaux avec le tableau Valeur () (qui correspond aux valeurs de mon tableau, pour les colonnes P1 à P9).

Mais je n'arrive toujours pas à mes fins !! Je ne sais pas vraiment où est l'erreur.

Si quelqu'un a une idée plus concluante que la mienne, ou des corrections (^^) !

Le problème avec ta méthode, c'est que je ne peux plus choisir d'utiliser la valeur du mois 4 de l'année 2, si?

Ben si, je te l'ai écrit :

Ta ligne de donnée sera : an * 12 + mois, avec an qui varie de 0 à 2

(par erreur j'avais écrit "avec mois qui varie de 0 à 2" au lieu de "an qui...")

Que tu travailles sur 3 ou 150 ans ne change rien

Tu as testé et regardé le code au moins ?

...
If valeurs((an - 1) * 12 + mois, p) = "NA" Then
    valeurs((an - 1) * 12 + mois, p) = -999

Et si tu veux adresser directement la cellule c'est :

cells((an - 1) * 12 + mois+1, p+2)=...

eric

Je n'ai pas encore testé ton code sur mon projet ^^

Je voulais d'abord comprendre ton raisonnement ! Et vu que je ne suis pas douée sur VBA (je débute à peine), je suis restée sur ta petite confusion mois/an ...

Mais oui, j'ai regardé et fait tourné ton code dans le classeur que tu m'a envoyé Je ne compte pas attendre bêtement que tu travailles pour moi, mais je suis longue à la déttente xD

Bref, j'essaye ça tout de suite et je te tiens au courant.

Merci eriiic. A plus tard.

Ca marche ^^

Merci beaucoup ! Et à très bientôt je pense xD

Rechercher des sujets similaires à "lecture tableau vba"