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

Correction de syntaxe avec variable

9 réponses
Avatar
Didier NOVARIN
Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub

9 réponses

Avatar
JLuc
*Bonjour Didier NOVARIN*,
Mavar = Evaluate("=index(A2:Plage,int(rand()*(27-1)+1))")
devrait convenir, dis nous

Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Didier NOVARIN
Bonsoir JLuc
Cela plante erreur 13
Je te remercie
Didier

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

*Bonjour Didier NOVARIN*,
Mavar = Evaluate("=index(A2:Plage,int(rand()*(27-1)+1))")
devrait convenir, dis nous

Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





Avatar
JLuc
*ReBonjour Didier NOVARIN*,
Est ce que ta formule fonctionne dans une cellule ?
J'aurai plutot mis :
Mavar = Evaluate("=index(A2;Plage;int(rand()*(27-1)+1))")
(des points virgule à la place des ":" et ",")


Bonsoir JLuc
Cela plante erreur 13
Je te remercie
Didier

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

*Bonjour Didier NOVARIN*,
Mavar = Evaluate("=index(A2:Plage,int(rand()*(27-1)+1))")
devrait convenir, dis nous

Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub


-- ____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
AV
Dans ta sub "Test", ta variable "Plage" renvoie une valeur numérique.
Si tu veux l'utiliser, dans ta variable "maVar" pour définir la longueur de la
plage A2:A???, tu dois modifier la syntaxe comme suit :

maVar= Evaluate("index(A2:A" & Plage & ",int(rand()*(27-1)+1))")

PS : Si la variable "Plage" est inférieure à 27, la partie qui sert à tirer un
nombre aléatoire - int(rand()*(27-1)+1) - plantera !
AV
Avatar
LSteph
Bonjour,

Si j'ai bien compris:

Sub Test()
Dim i As Long, mavar, val As Integer
Randomize

For i = 1 To [D1]
val = Int(Rnd() * (27 - 1) + 1)
mavar = Range("A2:A200").Cells(val, 1)
x = Application.Match(mavar, Range("A:A"), 0)
MsgBox mavar
MsgBox Range("B" & x)
Next i
End Sub

'ou si vraiment msg ceci:

Sub Test()
Dim i As Long, mavar, val As Integer, _
msg As String
Randomize

For i = 1 To [D1]
val = Int(Rnd() * (27 - 1) + 1)
mavar = Range("A2:A200").Cells(val, 1)
x = Application.Match(mavar, Range("A:A"), 0)
msg = msg & mavar & ": " & Range("B" & x) & vbCrLf
Next i
MsgBox msg
End Sub


Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub




Avatar
Didier.NOVARIN
Merci beaucoup AV
Cela fonctionne, je souhaite pouvoir dans ce cas mettre à la place de 27 la
valeur de la plage
Didier

maVar= Evaluate("index(A2:A" & Plage & ",int(rand()*(27-1)+1))")

"AV" a écrit dans le message de news:
eWym%
Dans ta sub "Test", ta variable "Plage" renvoie une valeur numérique.
Si tu veux l'utiliser, dans ta variable "maVar" pour définir la longueur
de la plage A2:A???, tu dois modifier la syntaxe comme suit :

maVar= Evaluate("index(A2:A" & Plage & ",int(rand()*(27-1)+1))")

PS : Si la variable "Plage" est inférieure à 27, la partie qui sert à
tirer un nombre aléatoire - int(rand()*(27-1)+1) - plantera !
AV




Avatar
AV
Cela fonctionne, je souhaite pouvoir dans ce cas mettre à la place de 27 la
valeur de la plage


En supposant qu'on est toujours dans un exercice de syntaxe ...

maVar = Evaluate("index(A2:A" & plage & ",int(rand()*(" & plage & "-1)+1))")

AV

Avatar
Didier.NOVARIN
Bonjour AV
C'est parfait !
Merci beaucoup
Bonne journée
Didier

"AV" a écrit dans le message de news:

Cela fonctionne, je souhaite pouvoir dans ce cas mettre à la place de 27
la valeur de la plage


En supposant qu'on est toujours dans un exercice de syntaxe ...

maVar = Evaluate("index(A2:A" & plage & ",int(rand()*(" & plage &
"-1)+1))")

AV




Avatar
Didier NOVARIN
Merci beaucoup également à toi Lsteph
Didier

"LSteph" a écrit dans le message de news:
%
Bonjour,

Si j'ai bien compris:

Sub Test()
Dim i As Long, mavar, val As Integer
Randomize

For i = 1 To [D1]
val = Int(Rnd() * (27 - 1) + 1)
mavar = Range("A2:A200").Cells(val, 1)
x = Application.Match(mavar, Range("A:A"), 0)
MsgBox mavar
MsgBox Range("B" & x)
Next i
End Sub

'ou si vraiment msg ceci:

Sub Test()
Dim i As Long, mavar, val As Integer, _
msg As String
Randomize

For i = 1 To [D1]
val = Int(Rnd() * (27 - 1) + 1)
mavar = Range("A2:A200").Cells(val, 1)
x = Application.Match(mavar, Range("A:A"), 0)
msg = msg & mavar & ": " & Range("B" & x) & vbCrLf
Next i
MsgBox msg
End Sub


Bonsoir,
Je souhaite utiliser correctement la variable "Plage"
dans : Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
Je vous remercie
Didier

Sub Test()
Plage = Application.CountA(Range("A2:A200"))
Num = Range("D1").Value
For i = 1 To Num
Mavar = [index(A2:Plage,int(rand()*(27-1)+1))]
x = Application.Match(Mavar, Range("A:A"), 0)
MsgBox Mavar
MsgBox Range("B" & x)
Next i
End Sub