Plage de cellule vs nom de variable

  • Initiateur de la discussion SebW
  • Date de début
S

SebW

Guest
Bonjour,

J'ai un tableau avec deux colonnes: monnaies(USD, CHF...)
et taux de change (1.2,1.4)....

J'ai nommé chaque cellule taux de change par le nom de sa monnaie.
Ainsi, Range("USD").value renvoie 1.2 et ainsi de suite.

J’aimerais créer une inputBox où l’utilisateur entre la monnaie puis une msgbox lui renvoie le cours. Quelque chose du genre...
----
var = InputBox("Monnaie?")
Msgbox Range("var").value
----
Ceci ne marche pas...
si quelqu'un a une idée....
merci
sebw
 
H

Hervé

Guest
salut,


tout dabord ceci : Msgbox Range("var").value ne marche pas essai plutot :
msgbox var, tout simplement.

ensuite, je ne suis pas un expert un vba mais ce code devrait marcher( à adapter suivant tes besoins).

Public Sub essai()
usd = 1.2
chf = 1.4
Var = InputBox("monnaie ?")
Select Case Var
Case "usd"
MsgBox usd
Case "chf"
MsgBox chf
End Select
End Sub

salut
Hervé
 
S

SebW

Guest
Merci de ta réponse,

Mais en fait, je cherche à faire quelque chose de bcp plus dynamique que cela. C'est pourquoi, je n'ai pas déclaré les variables en VBA.

L'avantage de définir USD en tant que nom de cellule plutôt que comme une variable sous VBA est que je peux utiliser USD dans n'importe quel calcul de cellule par ex: =500*USD.


Bref; mon problème est de pouvoir interragir avec un utilisateur, pour que celui ci, choisisse un nom de plage de cellule et que le programme lui renvoie la valeur de cette plage.
Merci....pour toute aide
Sebw
 
L

Lord Nelson

Guest
Salut Sebw,

Tu pourrais la jouer comme ceci, si j'ai bien compris ce que tu veux faire :

Sub Taux_de_Change()
Dim Devise As String
Devise = UCase(InputBox("Choisir une devise"))
If Devise = "" Then Exit Sub
If InStr("USD*EUR*KRD*...à compléter", Devise) > 0 Then
MsgBox "Le taux de change de " & Devise & " = " & Range(ActiveWorkbook.Names(Devise)).Value
End If
End Sub

Dans cet exemple, USD, EUR et KRD correspondent à des noms de cellules dans lesquelles sont saisis les taux de change.

A+
Horatio
 
S

Sebw

Guest
Encore une petite question,

Dans ton exemple, il faut entrer manuellement les devises dans Instr(...).

Dans mon cas, j'ai une liste "dynamique" dans un formulaire que j'obtiens ainsi:

Dim plage3 As Range
With Sheets("FXRATE")
Set plage3 = Range(Sheets("FXRATE").Range("A2"), Sheets("FXRATE").Range("A2").End(xlDown))
Issuku.List = RecupDoublons(plage3.Value)
End With

J'aimerais donc tester avec Instr(...) ma liste Issuku.list.
Est-il possible de convertir cette liste en string ou quelque que chose du genre?
Merci pour toute aide

Sebw
 
L

Lord Nelson

Guest
Salut Sebw,

L'instruction Instr(...) > 0 a pour objectif de vérifier que la saisie de l'utilisateur correspond bien à une donnée exploitable, un code devise en l'occurrence.
Tu peux probablement faire ce test directement dans ta liste Issuku mais je ne connais pas la syntaxe de cet objet...
Il est également envisageable de tester la plage3 avec, par exemple :

Dim CL as Range, OK as Bolean
For Each CL in plage3
If CL = Devise then
OK = True
Exit For
End If
Next
If OK = False Then Exit Sub

Plusieurs solutions possibles, à toi de choisir.

A+
Horatio
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS