Correction de syntaxe avec variable

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JLuc
Le #4359151
*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

Didier NOVARIN
Le #4359131
Bonsoir JLuc
Cela plante erreur 13
Je te remercie
Didier

"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





JLuc
Le #4359011
*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"
*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



AV
Le #4358841
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
LSteph
Le #4358751
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




Didier.NOVARIN
Le #4357251
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" 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




AV
Le #4357181
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

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

"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




Didier NOVARIN
Le #4357091
Merci beaucoup également à toi Lsteph
Didier

"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




Publicité
Poster une réponse
Anonyme