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

VBA : Nom relatif de variable ?

Besnard68

XLDnaute Occasionnel
Bonjour le Forum,

Sans utiliser les cellules d'une feuille excel (et donc en restant purement VBA), est-il possible, dans une procédure, de formuler le nom d'une variable à partir de 2 composantes ?

Je souhaiterais ainsi alléger l'écriture de la procédure en utilisant, par exemple, une boucle For / Next.

Je m'explique avec un exemple :

J'ai 5 variables (F10, F11, F12, F13 et F14)
Je souhaite leur affecter à chacune et respectivement, la valeur des cellules C10, C11, C12, C13 et C14.

Peut-on donc simplifier les lignes suivantes en faisant 'jouer' le F, qui reste fixe, et l'autre partie, qui varierait de 10 à 14 :

F10 = sheets("Feuil1").range("C10").value
...
F14 = sheets("Feuil1").range("C14").value.

Ici l'exemple ne comporte que 5 variables et c'est gérable en l'état, mais plus, ça devient relativement lourd à traiter.


Merci pour votre aide.

Cordialement
 

Papou-net

XLDnaute Barbatruc
Re : VBA : Nom relatif de variable ?

Bonjour Besnard68,

Dans ton cas, il me paraît plus simple de créer un tableau de variables :

Dim F(5) as variant

puis de les exploiter dans une boucle :

For n = 0 To 4
F(n) = Range("C" & n + 10).Value
Next

Pour simplifier la boucle, tu pourrais dimensionner ton tableau avec le nombre correpondant à l'indice maximal de tes cellules (Dim F(14)), mais tu risques alors de créer un tableau surdimensionné inutilement. Exemple :

Dim F(14) as variant

For n = 10 To 14
F(n) = Range("C" & n).Value
Next

Espérant t'avoir aidé.

Cordialement.
 

Besnard68

XLDnaute Occasionnel
Re : VBA : Nom relatif de variable ?

Bonsoir Staple1600 et Papou-net,

Je ne peux que m'incliner devant votre perspicacité.

Un grand merci à vous deux

Ce qu'il y a de bien, c'est que celui qui s'en donne la peine, peux vraiment progresser avec l'aide du forum.
Vous nous donnez les clés d'accès et nous motivez pour comprendre et surtout approfondir les cas.

Alors j'ai approfondi et je précise 2 choses :

- La 1ère : Pour ta solution Staple : Il faut bien penser à définir la dimension du tableau avec Dim, sinon ça ne marche pas [ dans mon exemple : Dim Tablo(14) ],

- La 2ème : Pour répondre à ta réflexion, Papou-net, de tableau qui serait surdimensionné inutilement, pour y palier et faire juste ce qu'il faut, j'ai vu que l'on peux formuler comme ceci : Dim Tablo(10 to 14).

En tous cas, encore un grand merci parce que ça marche du feu de Dieu.

Bonne soirée à vous 2

Cordialement
 

Papou-net

XLDnaute Barbatruc
Re : VBA : Nom relatif de variable ?

Merci pour ta précision, Besnard68,

Je n'étais pas certain que cette possibilité existe (pour ne l'avoir jamais utilisée), mais je l'appliquerai à l'avenir.

Tu illustres parfaitement ma devise personnelle :

"Apprendre pour savoir, savoir pour comprendre, comprendre pour partager !"

Encore merci.
 

Spitnolan08

XLDnaute Barbatruc
Re : VBA : Nom relatif de variable ?

Bonjour le fil,

Une précision pour les dimensions d'un tableau. Il est possible de modifier dynamiquement la dernière dimension d'un tableau en utilisant les instructions :
Redim Tablo(0 to 5) ou Redim Tablo(6) qui remet le tablau vierge

RedimPreserve
Tablo(0 to 5) ou RedimPreserve Tablo(6)qui conserve les données déjà entrées

A condition que le tableau ait été déclaré ainsi :
Dim Tablo() as ... sans indication de la dimension

Cordialement
 

Besnard68

XLDnaute Occasionnel
Re : VBA : Nom relatif de variable ?

Bonjour Spitnoland08, bonjour le forum,

Merci pour cette information.

Cependant, une petite question :

Cela signifie t'il que l'instruction 'Redim Tablo(0 to 5)' serait non fonctionnelle si elle était positionnée après une précédente instruction 'RedimPreserve Tablo (0 to 5)' ?





Merci d'avance pour ta réponse.

Cordialement


PS : Comme le retranscrit si bien Papou-net, le partage sur ce forum n'est vraiment pas un vain mot.
 

Spitnolan08

XLDnaute Barbatruc
Re : VBA : Nom relatif de variable ?

Re,
Cela signifie t'il que l'instruction 'Redim Tablo(0 to 5)' serait non fonctionnelle si elle était positionnée après une précédente instruction 'RedimPreserve Tablo (0 to 5)' ?
Non, mais mon propos n'était pas d'être exhaustif sur ces instructions mais de vous les faire connaître pour que vous sachiez qu'il existe des possibilités plus étendue et que vous ayez la curiosité d'aller voir l'aide VBE dont voici un extrait :
Bonne lecture.

Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…