Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Noms de variables dynamiques

2 réponses
Avatar
JM
Bonjour.

Je vais essayer de m'expliquer, c'est pas simple...

Jai des variables :

MarseilleMin = 15
MarseilleMax = 17

ParisMin = 21
ParisMax = 28

GrenobleMin =1
GrenobleMax = 14
Etc.

J'ai aussi une variable MATERIAL qui récupère le nom de la ville, c'est à
dire qui peut contentir les chaînes "Marseille", "Paris", "Grenoble"

Je voudrais utiliser mes variables XXXXMin, etc. dans le code, en ayant le
nom de la ville (les XXXX) dynamique. Par exemple :

MATERIAL = Cells(LigneO, ColonneO + 5).Value '(MATERIAL contient Marseille
par exemple)
C = Cells(LigneO, ColonneO + 6).Value ' C conteint 15.22 par exemple

J'ai besoin de savoir si la valeur de C est bien comprise entre les bornes
autorisées (15 - 17). Mais dans mon tableau Excel, le nom de la ville peut
être différent pour chaque ligne, et donc les bornes min et max pour C
changent à chaque ligne, fonction de la ville.

Je voudrais donc écrire un truc du genre :

If C > MATERIAL & "Min" AND C < MATERIAL & "Max" Then

Mon problème, c'est que je ne sais pas comment faire pour que MATERIAL & Min
soit reconnu comme la variable MaseilleMin ou ParisMin. Bien entendu, un
MsgBox MATERIAL & "Min" renvoie bien MarseilleMin, mais pas 15, c'est à dire
une chaîne de caractères et pas une variable.

C'est possible ?

Mille mercis à vous !

2 réponses

Avatar
JLuc
Bonjour.

Je vais essayer de m'expliquer, c'est pas simple...

Jai des variables :

MarseilleMin = 15
MarseilleMax = 17

ParisMin = 21
ParisMax = 28

GrenobleMin =1
GrenobleMax = 14
Etc.

J'ai aussi une variable MATERIAL qui récupère le nom de la ville, c'est à
dire qui peut contentir les chaînes "Marseille", "Paris", "Grenoble"

Je voudrais utiliser mes variables XXXXMin, etc. dans le code, en ayant le
nom de la ville (les XXXX) dynamique. Par exemple :

MATERIAL = Cells(LigneO, ColonneO + 5).Value '(MATERIAL contient Marseille
par exemple)
C = Cells(LigneO, ColonneO + 6).Value ' C conteint 15.22 par exemple

J'ai besoin de savoir si la valeur de C est bien comprise entre les bornes
autorisées (15 - 17). Mais dans mon tableau Excel, le nom de la ville peut
être différent pour chaque ligne, et donc les bornes min et max pour C
changent à chaque ligne, fonction de la ville.

Je voudrais donc écrire un truc du genre :

If C > MATERIAL & "Min" AND C < MATERIAL & "Max" Then

Mon problème, c'est que je ne sais pas comment faire pour que MATERIAL & Min
soit reconnu comme la variable MaseilleMin ou ParisMin. Bien entendu, un
MsgBox MATERIAL & "Min" renvoie bien MarseilleMin, mais pas 15, c'est à dire
une chaîne de caractères et pas une variable.

C'est possible ?

Mille mercis à vous !


Et en utilisant une table de trois entrees ?

Dim VillesMinMax(1 To 50, 1 To 3)
VillesMinMax(1,1) = "Marseille"
VillesMinMax(1,2) = 15
VillesMinMax(1,3) = 17
VillesMinMax(2,1) = "Paris"
VillesMinMax(2,2) = 21
VillesMinMax(2,3) = 28
....
' Que tu peux remplir grace a des donnees sur une feuille
Dim VillesMinMax(1 To 1, 1 To 3)
NbDonnees = Sheets("Feuil1").Range("A" & Rows.Count).End(xlup).row
Redim VillesMinMax(1 To NbDonnees, 1 To 3)
For x = 1 To NbDonnees
VillesMinMax(x,1) = Sheets("Feuil1").Range("A" & x)
VillesMinMax(x,2) = Sheets("Feuil1").Range("B" & x)
VillesMinMax(x,3) = Sheets("Feuil1").Range("C" & x)
Next


' Ensuite tu cherche la position de la ville
For x = 1 To UBound(VillesMinMax, 1)
If VillesMinMax(x, 1) = "Marseille" Then
position = x
End If
Next
' Apres :
If C > VillesMinMax(VillesMinMax, 2) AND _
C < VillesMinMax(VillesMinMax, 3) Then
' Le reste de ton code
...

--
JLuc

Avatar
JM
Pas pensé à ça. Merci, je vais voir si ça peur s'appliquer.

Merci encore.


"JLuc" a écrit dans le message de
news:
Bonjour.

Je vais essayer de m'expliquer, c'est pas simple...

Jai des variables :

MarseilleMin = 15
MarseilleMax = 17

ParisMin = 21
ParisMax = 28

GrenobleMin =1
GrenobleMax = 14
Etc.

J'ai aussi une variable MATERIAL qui récupère le nom de la ville, c'est
à


dire qui peut contentir les chaînes "Marseille", "Paris", "Grenoble"

Je voudrais utiliser mes variables XXXXMin, etc. dans le code, en ayant
le


nom de la ville (les XXXX) dynamique. Par exemple :

MATERIAL = Cells(LigneO, ColonneO + 5).Value '(MATERIAL contient
Marseille


par exemple)
C = Cells(LigneO, ColonneO + 6).Value ' C conteint 15.22 par exemple

J'ai besoin de savoir si la valeur de C est bien comprise entre les
bornes


autorisées (15 - 17). Mais dans mon tableau Excel, le nom de la ville
peut


être différent pour chaque ligne, et donc les bornes min et max pour C
changent à chaque ligne, fonction de la ville.

Je voudrais donc écrire un truc du genre :

If C > MATERIAL & "Min" AND C < MATERIAL & "Max" Then

Mon problème, c'est que je ne sais pas comment faire pour que MATERIAL &
Min


soit reconnu comme la variable MaseilleMin ou ParisMin. Bien entendu, un
MsgBox MATERIAL & "Min" renvoie bien MarseilleMin, mais pas 15, c'est à
dire


une chaîne de caractères et pas une variable.

C'est possible ?

Mille mercis à vous !


Et en utilisant une table de trois entrees ?

Dim VillesMinMax(1 To 50, 1 To 3)
VillesMinMax(1,1) = "Marseille"
VillesMinMax(1,2) = 15
VillesMinMax(1,3) = 17
VillesMinMax(2,1) = "Paris"
VillesMinMax(2,2) = 21
VillesMinMax(2,3) = 28
....
' Que tu peux remplir grace a des donnees sur une feuille
Dim VillesMinMax(1 To 1, 1 To 3)
NbDonnees = Sheets("Feuil1").Range("A" & Rows.Count).End(xlup).row
Redim VillesMinMax(1 To NbDonnees, 1 To 3)
For x = 1 To NbDonnees
VillesMinMax(x,1) = Sheets("Feuil1").Range("A" & x)
VillesMinMax(x,2) = Sheets("Feuil1").Range("B" & x)
VillesMinMax(x,3) = Sheets("Feuil1").Range("C" & x)
Next


' Ensuite tu cherche la position de la ville
For x = 1 To UBound(VillesMinMax, 1)
If VillesMinMax(x, 1) = "Marseille" Then
position = x
End If
Next
' Apres :
If C > VillesMinMax(VillesMinMax, 2) AND _
C < VillesMinMax(VillesMinMax, 3) Then
' Le reste de ton code
...

--
JLuc