Stocker des variables à chaque éxécution de macro

Bonjour,

après avoir fait un petit tour sur le forum je n'ai pas trouvé de réponse à ma question c'est pour cette raison que je m'adresse à vous.

Je vous explique mon projet. Je travaille sur une macro sous Excel 2013 qui me permettra de faire du dimensionnement de structure en béton armé (calcul des efforts et choix des quantités d'acier à mettre en place).

Aujourd'hui ca calcule, seulement mes variables se réinitialisent à chaque éxécution de la macro ce qui est normal. J'aimerais qu'à la fin de chaque éxécution de ma macro mes variables soient stockées dans un tableau (toutes sur la même ligne) de manière à ce qu'elles ne soient pas perdues.

Cela me permettra d'avoir mes résultats ensuite sur une feuille Excel (je sais comment faire afficher un tableau sur le feuille Excel) pour rédiger mes notes de calcul ou alors d'utiliser toutes les forces trouvées de manière à avoir une idée de la sollicitation totale de la structure. (Principe de superposition : on calcule pour les différents forces isolées puis on somme pour avoir la sollicitation due à l'ensemble des forces)

Je ne vous ai pas joint le fichier car il est en chantier (l'architecture est faite mais tout ne fonctionne pas encore). Je me suis donc dit que ce ne serait pas tellement utile.

Voilà ce que j'aimerais :

Si un ou plusieurs d'entre vous pouvaient me donner la syntaxe d'un code par exemple qui donne une valeur aléatoire à une variable (car ce n'est pas ce qui m'intéreesse ici) et la stock dans une ligne de tableau quand la macro est finie (là je suis intéressé !) ce serait super. Je me chargerais d'adapter ensuite la taille du tableau et la syntaxe à mes propres variables.

J'avais pensé à indicier mes variables et à chaque fin d'éxécution remplir une ligne du tableau avec les variables de l'indice en cours puis incrémenter l'indice de 1 mais cela dépasse mes compétences.

Je vous souhaite une bonne journée.

Merci d'avance.

NewComer (un nom pas choisi au hasard )

bonjour

si vos données sont dans un tableau c'est plus facile a stocké après dans une feuille

voici un exemple de code

Sub test()
Dim donnee()
Dim i As Integer

ReDim donnee(5)
donnee(0) = 125
donnee(1) = 138
donnee(2) = 14478
donnee(3) = 1545
donnee(4) = 135484

For i = 0 To 4
Sheets(1).Cells(1, i + 1) = donnee(i)
Next

End Sub

le plus interessant pour vous c'est la boucle for...

Attention un tableau commence a 0

Fred

Bonjour Fred2406 et merci.

Cependant là c'st toi qui rentre les valeurs dans le tableau à la main non ?

Moi j'aimerais retrouver dans le tableau les valeurs prises par mes variables dans la première ligne à la première éxécution dans la deuxième ligne pour la deuxième éxécution et ainsi de suite.

Merci pour le temps accordé.

NewComer

Bonjour,

et bien il te suffit de stocker la valeur de tes variables à la ligne

Range("a65536").End(xlUp).row +1

qui correspond à la première ligne vide de la feuille

(si ta colonne A reçoit une valeur à chaque fois)

Re

si ta varaible vba est un tableau tu fait comme ce que j'ai noté...

en remplecant le 1 par

Sheets(1).Range("A65536").End(xlUp).Row + 1

et oui j'ai rentré a la main les données à la main pour faire un essai

sinon si ta variable n'est pas un tableau tu peux faire :

Sub test()
Dim i As Integer
Dim var1, var2, var3, var4, var5
var1 = 1254
var2 = 457623
var3 = 46545613
var4 = 54564
var5 = 46574564

Sheets(1).Cells(Sheets(1).Range("A65536").End(xlUp).Row + 1, 1) = var1
Sheets(1).Cells(Sheets(1).Range("A65536").End(xlUp).Row, 2) = var2
Sheets(1).Cells(Sheets(1).Range("A65536").End(xlUp).Row, 3) = var3
Sheets(1).Cells(Sheets(1).Range("A65536").End(xlUp).Row, 4) = var4
Sheets(1).Cells(Sheets(1).Range("A65536").End(xlUp).Row, 5) = var5

End Sub

a toi de remplacer les var1,var2,..... par le nom de tes variables ...

cela commencera a la ligne 2 de la feuille 1 dans cet exemple ce qui te permettra de mettre une entete

Fred

Petit passage,

il manque le "+1" des lignes des variables 2 à 5 (le copier/coller démoniaque ! )

BAhhh non

il ne manque pas de +1 sinon sur la colonne A il y a la donnée sur la ligne 2 par exemple et toutes les autres données sont sur la ligne suivante si je laisse le +1

comme sur chaque instruction je recupere la dernière ligne utilisée sur la colonne A...

Sheets(1).Range("A65536").End(xlUp).Row

Fait l'essai Guitouille...

Fred

ah, désolé, j'avais compris qu'ils voulait juste stocker les variables à chaque utilisation de la macro.

J'avais pensé à indicier mes variables et à chaque fin d'éxécution remplir une ligne du tableau avec les variables de l'indice en cours

Merci à vous.

En effet Guitouille je souhaite stocker les variables à chaque utilisation de la macro :

  • Ligne 1 du classeur : toutes les variables de la première éxécution
  • Ligne 2 du classeur : toutes les variables de la deuxième éxécution

et ainsi de suite.

NewComer

Si c'est ce que tu voulais Newcomer

met le post en résolu

Merci

Fred

C'est fait autant pour moi !

Merci à vous !

NewComer

Re bonjour,

je reviens vers vous car j'ai mis le code en place avec mes variables et ça roule parfaitement !!

Je voulais vous préciser que c'est la version proposée par Fred avec le "+1" seulement pour la variable 1 qui fonctionne. Si je rajoute "+1" comme disait Guitouille j'ai les variables une cellule plus bas à partir de la deuxième colonne du coup ce n'est pas aligné.

Encore merci à vous !

NewComer

Rechercher des sujets similaires à "stocker variables chaque execution macro"