chaine d' "indirection" dans VBA ???? Help !

  • Initiateur de la discussion Initiateur de la discussion rémi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

rémi

Guest
bonjour,

Quelqu'un peux il me dire s'il existe une fonction ds vb pour désigner indirectement une variable à l'aide d'une chaine de caractères ?? (fonction existante - et trés utile - en turbo pascal)

Exemple :

Je cherche à remplacer ceci :

R1.Caption = Cells(a, 17 + (2 * 1)).Value
R2.Caption = Cells(a, 17 + (2 * 2)).Value
R3.Caption = Cells(a, 17 + (2 * 3)).Value
R4.Caption = Cells(a, 17 + (2 * 4)).Value
R5.Caption = Cells(a, 17 + (2 * 5)).Value
R6.Caption = Cells(a, 17 + (2 * 6)).Value
R7.Caption = Cells(a, 17 + (2 * 7)).Value
R8.Caption = Cells(a, 17 + (2 * 8)).Value
R9.Caption = Cells(a, 17 + (2 * 9)).Value
R10.Caption = Cells(a, 17 + (2 * 10)).Value
R11.Caption = Cells(a, 17 + (2 * 11)).Value
R12.Caption = Cells(a, 17 + (2 * 12)).Value

par ceci :

For n = 1 To 12
#("R"&cstr(n)).Caption = Cells(a, 17 + (2 * n)).Value
Next n

où #("R"&cstr(n)) devrait désigner R1 à R12 en fonction de n....


NB: n'ai aucune idée de la syntaxe sous vb... je reproduit ici la syntaxe de la chaine d'indirection sur Ti92 - 89
 
bonjour Remi

je ne suis pas sur que cela repondra totalement à ta demande mais , ci dessous un exemple pour lequel j'ai remplacé R par un Label .
le principe est d'effectuer une boucle sur les objets cible ( MSForms.label dans l'exemple )


Private Sub UserForm_Initialize()
Dim Ctrl As Control
Dim val As Byte
Dim n As Byte
Dim a as Byte

a=1

For Each Ctrl In UserForm1.Controls
If TypeOf Ctrl Is MSForms.Label Then
n = n + 1
Ctrl = Cells(a, 17 + (2 * n))
End If
Next

End Sub


bonne soirée
michel
lapin4.gif
 
Salut tout le monde,

voici une autre methode inspiree de celle de Michel au cas ou tu aurais d'autres labels que R1,...,R21

for n = 1 To 12
userform1.Controls("R" & n) = Cells(a, 17 + (2 * n))
next n

A++, Sylsyl.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
493
Réponses
0
Affichages
1 K
Retour