Variable tableau - remplissage avec beaucoup de données

Bonjour,

mon sujet concerne le remplissage des variables tableau sous VBA.

Il s'agit de créer un tableau 2D sous VBA (2 colonnes et n lignes), et de le remplir par des données sans avoir à rentrer mes données une à une. (j'ai environ 120 lignes, donc 240 données à saisir manuellement).

Je ne sais pas si cela est possible, en tout cas j'aimerais savoir s'il existe une syntaxe pour le faire.

Mes données viennent de tables Excel, mais l'idée est de ne pas avoir de feuille Excel et tout faire sur VBA pour pouvoir exporter le module VBA ensuite. Donc mon souhait n'est pas d'automatiser la copie des données de ma table Excel vers ma variable VBA.

Merci de votre aide.

Bonne journée

Bonjour Hubert41 le forum

bah là pour te comprendre il faut faire fort, perso a part que tu as 240 données ce qui est une rigolade le reste!!!!!

de plus exporter du VBA là ????

Bref un fichier des explications dedans claires si possible et on va faire

a+

Papou

Salut paritec, merci d'avoir répondu.

Alors j'ai peut-être pas assez été clair. J'ai pas de fichier à joindre, du moins c'est pas intéressant.

Tu peux imaginer la chose suivante :

Dans une feuille excel j'ai deux colonnes de chiffres, à gauche température, à droite pression....

Mon code je le commence comme ça:

"Dim WaterPresTempTable(118, 2)"

Mais malheureusement c'est tout ce que j'ai et je ne veux pas remplir une à une les cases de mon tableau.

Quand je parle d'exporter, c'est en terme de module, c'est-à-dire qu'après je peux donner le module, sans besoin d'avoir à donner un classeur excel...

Merci

Hubert41

Bonjour

Essayes

Dim WaterPresTempTable

WaterPresTempTable=Range("A2:B" & Range("A" & Rows.count).End(xlUp).Row)

Mais avec un fichier reprenant la structure réelle de ton fichier cela aurait été plus simple

Bonjour Banzai64,

en fait je ne souhaite pas passer par la table Excel qui contient les données, je veux rentrer les données dans le code VBA.

C'est comme si j'avais trouvé un tableau à 2 colonnes sur internet, ce qui n'est pas loin de la réalité. Et ce que je souhaite c'est créer une variable tableau sous VBA qui contienne ces données.

Merci

Hubert41

Bonjour

Tu changes les règles

Hubert41 a écrit :

Dans une feuille excel j'ai deux colonnes de chiffres, à gauche température, à droite pression....

Hubert41 a écrit :

C'est comme si j'avais trouvé un tableau à 2 colonnes sur internet, ce qui n'est pas loin de la réalité

Et ce tableau tu le récupères comment ?

Bonjour Hubert41 Banzai le forum

oui en gros tu veux faire mais sans faire et pourtant il faudrait faire!!!!

Bref tu ne sais pas ce que tu veux. (en gros) ou alors tu t'expliques vraiment très mal (toujours en gros)

a+

papou

Salut,

Je ne code pas sous VBA d'habitude, mais pour un projet de cours je dois m'y coller. Je pense que ça peut venir de là le fait que je m'exprime mal.

Je veux créer sous VBA un tableau de 118 lignes à deux colonnes (ça je sais faire), et je veux le remplir avec des données qui sont dans un tableau. Mais je veux que tout ça soit sur le module VBA.

Si tu codes avec matlab c'est possible et ça s'appelle un vecteur, et c'est simple à remplir, si vous voulez je cherche l'équivalent VBA, du genre:

Dim Montableau(118,2)

Montableau(colonne1)=[donnéea1,donnéea2,donnéea3,...,donnéea118]

Montableau(colonne2)=[donnéeb1,donnéeb2,donnéeb3,...,donnéeb118]

Ensuite j'écrirai des formules utilisant ces données et tout ça en restant sous VBA. Ce qui me donnera une fonction prête à utiliser sous excel, et pas besoin d'avoir un classeur excel stockant toute ces données

Alors je sais ça paraît bizarre et en terme de rapidité de code je sais pas si c'est optimal. L'avantage a que si je le passe à un pote ensuite il importe le module et il utilise la fonction "clé en main" et pas besoin pour lui d'avoir une feuille excel avec toute les données.

En espérant avoir apporter un peu de clareté.

Merci

Hubert41

Re Huvert41 le forum

oui j'ai parfaitement compris (maintenant) ce que tu veux, mais de toutes façons c'est fait pour être utilisé avec excel? si oui je ne vois pas l'intérêt

par contre ce que t'avais donné Banzai

WaterPresTempTable=Range("A2:B" & Range("A" & Rows.count).End(xlUp).Row)

est trés représentatif de ce qu'il faut faire en une ligne il rempli le tableau de 236 données.

Maintenant toi tu ne veux pas un tableau mais une mémoire et là garder un tableau en mémoire ???? après fermeture du classeur c'est peut-être possible mais moi je ne sais pas le faire.

Tu peux toujours écrire comme sous matlab aa(i,1)= donnée1 aa(i,2) = donnée2 etc mais pour moi c'est pas la solution, mais cela revient a remplir à la main tes 236 valeurs et à compiler un tableau à l'ouverture du fichier avec la macro bref pas bien pour mon compte

a+

papou

Oui papou, exactement c'est de l'avoir en mémoire, ce qui est certainement très moche en terme de code VBA.

Cela dit je suis preneur si quelqu'un connait la syntaxe, si toutefois elle existe.

Merci pour votre aide en tout cas.

Hubert41

Re hubert41 le forum

Franchement je ne sais pas si c'est possible mais je cherche et je reviens vers toi

a+

papou

Re Hubert41 le forum

pour le moment je n'ai rien trouvé pour faire ce que tu souhaites je commence a douter sérieusement

a+

papou

Bonjour

Si j'ai enfin compris (pas sur)

Option Explicit
Option Base 1

Sub test()
Dim WaterPresTempTable(118, 2)
Dim Colonne(2)
Dim J As Long
Dim I As Integer

  Colonne(1) = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, _
                 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, _
                 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, _
                 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, _
                 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, _
                 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118)

  Colonne(2) = Array(118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, _
                     105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, _
                     90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, _
                     74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, _
                     58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, _
                     42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, _
                     26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, _
                     10, 9, 8, 7, 6, 5, 4, 3, 2, 1)

  For J = 1 To UBound(WaterPresTempTable)
    For I = 1 To 2
      WaterPresTempTable(J, I) = Colonne(I)(J)
    Next I
  Next J

End Sub

Bonjour à tous

Hubert41 à parlé de valeurs en mémoire pas d'une suite de 118 numéros sur deux colonnes, enfin moi c'est pas ce que j'ai compris

il veux 118 lignes sur 2 colonnes mais pas obligatoirement des valeurs

a+

Papou


Re Bonjour Banzaï le forum

si effectivement tu as raison la même chose que toi en plus court

a+

papou

Option Explicit
Option Base 1
Public WaterPresTempTable

Sub tableau()
    Dim i&, n&
    n = 118
    ReDim WaterPresTempTable(118, 2)
    For i = 1 To n
        aa(i, 1) = i: aa(i, 2) = n + 1 - i
    Next i
End Sub

Bonjour

Bonjour Paritec

J'ai noté

Banzai64 a écrit :

Si j'ai enfin compris (pas sur)

En plus dans un message

Hubert41 a écrit :

Montableau(colonne1)=[donnéea1,donnéea2,donnéea3,...,donnéea118]

Montableau(colonne2)=[donnéeb1,donnéeb2,donnéeb3,...,donnéeb118]

je me suis un peu inspiré de ça

Wait & See

Re Banzai le forum

oui ok mais je ne vois pas si simple que cela, en fait il veux un tableau en mémoire mais qui n'ai pas de source, donc la macro doit être la source du tableau!!! ???

Si tel est le cas et qu'il faut entrer toutes les valeurs comme tu l'as fait dans des Array, là franchement je ne vois pas l'intérêt du moins dans excel., enfin je cherche toujours si une méthode existe pour charger un tableau et pouvoir le conserver.

Sans que le fichier soit fermé c'est sans souci mais après fermeture là pour le moment je n'ai rien trouvé qui me donne une possibilité.

enfin comme tu dis attendons le retour d'hubert41

a+

Bon week-end

Papou

Bonjour paritec et Banzai64,

Merci à vous pour vos réponses, je n'ai pas été très réactif ce week-end.

il veut un tableau en mémoire mais qui n'ai pas de source, donc la macro doit être la source du tableau

C'est exactement ça, mes données ne correspondent pas à une suite logique, ce sont des pressions et des températures, (courbe des pressions de saturation de la vapeur d'eau)

Je me rends compte qu'il n'est pas vraiment possible de faire ça, le mieux est que j'utilise une modélisation de la courbe, je perdrai en précision mais si je veux m'affranchir du classeur excel avec toutes les données c'est la meilleure façon.

J'apprécie votre contribution.

Bonne journée

Hubert41

Rechercher des sujets similaires à "variable tableau remplissage beaucoup donnees"