OVH Cloud OVH Cloud

nom du array variable

8 réponses
Avatar
-=lolol=-
Bonjour à tous,

dans une sub, j'ai :
If MonTest = true then TabloStandard(1, 1) = 8

comment remplacer le nom du tableau (TabloStandard) par le nom du variable
contenant ce nom ?

Merci pour votre aide
@+lolo

8 réponses

Avatar
michdenis
Bonjour Lolol,

Je n'ai pas vraiment saisi le sens de ta question. Une variable (array-Tableau) est déjà une variable, pourquoi vouloir remplacer
son nom par un autre ...

Sauf que tu peux mettre dans une variable donnée, un élément d'un tableau comme ceci :

Dim Temp as variant

If MonTest = true then
TabloStandard(1, 1) = 8
Temp = TabloStandard(1, 1)
End if


Salutations!



"-=lolol=-" a écrit dans le message de news:
Bonjour à tous,

dans une sub, j'ai :
If MonTest = true then TabloStandard(1, 1) = 8

comment remplacer le nom du tableau (TabloStandard) par le nom du variable
contenant ce nom ?

Merci pour votre aide
@+lolo
Avatar
-=lolol=-
Bonjour michdenis,

Je n'ai pas vraiment saisi le sens de ta question.


excuse moi, je précise ... j'essaye de :-(

dans une sub, j'ai un premier test qui doit me donner le nom du tableau à
utiliser
If LaCouleur ="Bleu" then NomTablo = "Tablo1"
If LaCouleur ="rouge" then NomTablo = "Tablo2"

plus loin je voudrais utiliser le contenu de ma variable "NomTablo" pour
désigner le tableau à utiliser et écrire dans la zone (1,1) de ce tableau

If MonTest = true then NomTablo(1, 1) = 8

donc si premier test = bleu, je voudrais écrire 8 dans Tablo1(1,1)
et si le premier test = rouge, je voudrais écrire 8 dans Tablo2(1,1)

j'espère être plus clair
merci pour ta patience
@+lolo

Avatar
michdenis
Tu peux utiliser un select case

Select case LaCouleur
case is = "Bleu"
Tablo1(1,1) = "MaValeur"
case is = "Rouge"
Tablo(2) = "MaValeur"
end select


Salutations!




"-=lolol=-" a écrit dans le message de news:
Bonjour michdenis,

Je n'ai pas vraiment saisi le sens de ta question.


excuse moi, je précise ... j'essaye de :-(

dans une sub, j'ai un premier test qui doit me donner le nom du tableau à
utiliser
If LaCouleur ="Bleu" then NomTablo = "Tablo1"
If LaCouleur ="rouge" then NomTablo = "Tablo2"

plus loin je voudrais utiliser le contenu de ma variable "NomTablo" pour
désigner le tableau à utiliser et écrire dans la zone (1,1) de ce tableau

If MonTest = true then NomTablo(1, 1) = 8

donc si premier test = bleu, je voudrais écrire 8 dans Tablo1(1,1)
et si le premier test = rouge, je voudrais écrire 8 dans Tablo2(1,1)

j'espère être plus clair
merci pour ta patience
@+lolo

Avatar
-=lolol=-
Bonjour michdenis,

Tu peux utiliser un select case

Select case LaCouleur
case is = "Bleu"
Tablo1(1,1) = "MaValeur"
case is = "Rouge"
Tablo(2) = "MaValeur"
end select


oui, évidement, c'est ce que je fais :-)
... mais le traitement ne se borne pas à Tablo1(1,1) = "MaValeur", j'ai une
multitude de lignes presque identiques suivant les "case" qui ne varient que
du nom du Tablo ...

Merci pour ton aide
@+lolo

Avatar
anonymousA
bonjour,

un truc dans le genre , si ca peut aider . Un exemple ci-dessous à
adapter bien sur

tableau1 = Range("A1:A50")
tableau2 = Range("D10:C50")
tableau3 = Range("S10:B2")

FV = Array(tableau1, tableau2, tableau3)

temp = "Bleu"
gg temp, FV

tableau1 = FV(0)
tableau2 = FV(1)
tableau3 = FV(2)

End Sub
Sub gg(couleur, ParamArray tabl())

coul = Array("Rouge", "Bleu", "Vert")

tabl(0)(WorksheetFunction.Match(couleur, coul, 1) - 1)(1, 1) =
"MaValeur"

End Sub

A+
Avatar
-=lolol=-
Bonjour anonymousA,

merci pour ton aide
... mais je comprends rien :-(
presque rien, bouhhhh !

tableau1 = Range("A1:A50")
tableau2 = Range("D10:C50")
tableau3 = Range("S10:B2")


tu remplis les trois tableaux => ok

FV = Array(tableau1, tableau2, tableau3)


tu crées un 4ième tableau contenant le nom des 3 précédents => ok

temp = "Bleu"


variable => ok

gg temp, FV


applel de fonction avec paramêtres => ok


tableau1 = FV(0)
tableau2 = FV(1)
tableau3 = FV(2)


tu re-rempli les tableaux => plus flou déjà :-(

Sub gg(couleur, ParamArray tabl())
coul = Array("Rouge", "Bleu", "Vert")
tabl(0)(WorksheetFunction.Match(couleur, coul, 1) - 1)(1, 1) > "MaValeur"


... et la je comprends plus rien ... je vais chercher une corde pour me
pendre si il ne reste plus que ça !

peux tu préciser s'il te plais ?
par avance merci
@+lolo

Avatar
anonymousA
Sub gg(couleur, ParamArray tabl())
'couleur a recu la valeur de la variable temp donc p.e dans l'exemple
la couleur Bleu

'on déclare un tableau de strings correspondant à un ordre
préétabli fonction de l'ordre suivi pour l'array FV.
'En effet on va se servir de cet ordre pour associer un array (
tableau1 ou tableau2 ou tableau3) avec une couleur
'on voit bien que FV(0) correspond à tableau1 et coul(0) correspond à
"Rouge", ils ont donc le même indice dans leurs Arrays respectifs
coul = Array("Rouge", "Bleu", "Vert")

'ici WorksheetFunction.Match(couleur, coul, 1) va détécter , en
fonction de la valeur de couleur , dans l'array coul quel est le N°
d'index dans la suite "Rouge", Bleu", "Vert". Une fois le N° d'index
trouvé, il suffit de lui retirer 1 (WorksheetFunction.Match(couleur,
coul, 1) - 1) pour rechercher le array de FV correspondant car les
Array sont toujours de base 0 sauf déclaration contraire.
Ici l'écriture tabl(0)tabl(0)(WorksheetFunction.Match(couleur, coul,
1) - 1)(1, 1) est équivalente avec temp="Bleu" à
tab(0)(1)(1,1) qui correspond donc à la 1ere case du tableau N°2 de
l'array FV soit donc tableau2 , tableau que l'on souhaitait mettre à
jour

tabl(0)(WorksheetFunction.Match(couleur, coul, 1) - 1)(1, 1) =
"MaValeur"

Enfin , le fait de réaffecter les tableaux par les instructions
suivantes est rendu nécéssaire par le fait que tabl est ByRef mais ce
qui est monté en mémoire pour la procédure appelée ce ne sont pas
les tableaux (tableau1, tableau2...) mais le tableau FV. Donc si FV est
bien modifié par l'affectation
tabl(0)(WorksheetFunction.Match(couleur, coul, 1) - 1)(1, 1) =
"MaValeur" , le tableau (tableau2 p.e) lui-même source de FV ne l'est
pas et il faut bien lui transférer la nouvelle valeur.
Comme par ailleurs, il n'est pas possible de désigner un tableau tel
que tableau1 p.e autrement que par son nom , il devient alors
impératif (même si dans l'absolu on sait quel tableau devrait être
à mettre à jour ) de tous les mettre à jour ce qui garantit qu'au
moins celui qui devait absolument l'être, le sera.

tableau1 = FV(0)
tableau2 = FV(1)
tableau3 = FV(2)

L'interet de ces procédures , c'est leur relative concision et la
possibilité de bricoler ce que l'on veut dans la procédure gg. Au
passage, ca fait pas de mal de se colleter un peu avec ParamArray qui
est pas vraiment le truc dont on se sert tous les jours.

A+
Avatar
-=lolol=-
Bonjour anonymousA,
pioufffff ou ouarf (au au choix) :-)
je retourne lire ta prose ... pour la 4ième fois :-(
mille mercis
@+lolo