J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5
J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit
Function RandomNumber(Lowest As Long, Highest As Long)
' Generates a random whole number within a given range
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sub Comparaison()
Dim i As Integer
i = 0
Randomize
For i = 1 To 4
Label1:
Range("B3").Offset(0, i).Value = Int(Rnd * 19)
If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or
Range("A5").Value Or Range("A6").Value Then GoTo Label1
Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas été
touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne
s'arrete jamais!!!
je ne comprend plus rien
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jac
Bonjour Guillaume,
et si tu essayais de faire ça simplement :
For i = 3 To 6 1 cells(i,2) = Int(Rnd * 19) if cells(i,2) = cells(3,1) then goto 1 if cells(i,2) = cells(4,1) then goto 1 if cells(i,2) = cells(5,1) then goto 1 if cells(i,2) = cells(6,1) then goto 1 Next i
C'est sûr que c'est moins pro des des if imbriqués, et/ou de Or, mais au moins c'est clair et net.
Dis-moi si ça résoud ton problème.
Jac
Guillaume a exprimé avec précision :
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
Bonjour Guillaume,
et si tu essayais de faire ça simplement :
For i = 3 To 6
1 cells(i,2) = Int(Rnd * 19)
if cells(i,2) = cells(3,1) then goto 1
if cells(i,2) = cells(4,1) then goto 1
if cells(i,2) = cells(5,1) then goto 1
if cells(i,2) = cells(6,1) then goto 1
Next i
C'est sûr que c'est moins pro des des if imbriqués, et/ou de Or, mais
au moins c'est clair et net.
Dis-moi si ça résoud ton problème.
Jac
Guillaume a exprimé avec précision :
For i = 1 To 4
Label1:
Range("B3").Offset(0, i).Value = Int(Rnd * 19)
If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or
Range("A5").Value Or Range("A6").Value Then GoTo Label1
Next
For i = 3 To 6 1 cells(i,2) = Int(Rnd * 19) if cells(i,2) = cells(3,1) then goto 1 if cells(i,2) = cells(4,1) then goto 1 if cells(i,2) = cells(5,1) then goto 1 if cells(i,2) = cells(6,1) then goto 1 Next i
C'est sûr que c'est moins pro des des if imbriqués, et/ou de Or, mais au moins c'est clair et net.
Dis-moi si ça résoud ton problème.
Jac
Guillaume a exprimé avec précision :
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
Alain
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _ Range("B3").Offset(0, i) = Range("A4").Value Or _ Range("B3").Offset(0, i) = Range("A5").Value Or _ Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation du GoTo est a proscrire car elle conduit à une construction mal structuré, appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison() Dim i As Integer, v As Variant Randomize
For i = 1 To 4 Do While True v = Int(Rnd * 19) If v <> Range("A3").Value And v <> Range("A4").Value And _ v <> Range("A5").Value And v <> Range("A6").Value Then Exit Do Loop Range("B3").Offset(0, i).Value = v Next End Sub
"Guillaume" wrote in message news:#
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5 J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit Function RandomNumber(Lowest As Long, Highest As Long) ' Generates a random whole number within a given range Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function Sub Comparaison() Dim i As Integer i = 0 Randomize
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne s'arrete jamais!!! je ne comprend plus rien
Merci de m'aider
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _
Range("B3").Offset(0, i) = Range("A4").Value Or _
Range("B3").Offset(0, i) = Range("A5").Value Or _
Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation du
GoTo est a proscrire car elle conduit à une construction mal structuré,
appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire
sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison()
Dim i As Integer, v As Variant
Randomize
For i = 1 To 4
Do While True
v = Int(Rnd * 19)
If v <> Range("A3").Value And v <> Range("A4").Value And _
v <> Range("A5").Value And v <> Range("A6").Value Then Exit
Do
Loop
Range("B3").Offset(0, i).Value = v
Next
End Sub
"Guillaume" <guimaric@cegetel.net> wrote in message
news:#FbZUQQcKHA.2188@TK2MSFTNGP04.phx.gbl...
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5
J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit
Function RandomNumber(Lowest As Long, Highest As Long)
' Generates a random whole number within a given range
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sub Comparaison()
Dim i As Integer
i = 0
Randomize
For i = 1 To 4
Label1:
Range("B3").Offset(0, i).Value = Int(Rnd * 19)
If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or
Range("A5").Value Or Range("A6").Value Then GoTo Label1
Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas
été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne
s'arrete jamais!!!
je ne comprend plus rien
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _ Range("B3").Offset(0, i) = Range("A4").Value Or _ Range("B3").Offset(0, i) = Range("A5").Value Or _ Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation du GoTo est a proscrire car elle conduit à une construction mal structuré, appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison() Dim i As Integer, v As Variant Randomize
For i = 1 To 4 Do While True v = Int(Rnd * 19) If v <> Range("A3").Value And v <> Range("A4").Value And _ v <> Range("A5").Value And v <> Range("A6").Value Then Exit Do Loop Range("B3").Offset(0, i).Value = v Next End Sub
"Guillaume" wrote in message news:#
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5 J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit Function RandomNumber(Lowest As Long, Highest As Long) ' Generates a random whole number within a given range Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function Sub Comparaison() Dim i As Integer i = 0 Randomize
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne s'arrete jamais!!! je ne comprend plus rien
Merci de m'aider
Nectoux Guillaume
Je vais essayer ça ce soir. Merci a tous
"Alain" a écrit dans le message de news:
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _ Range("B3").Offset(0, i) = Range("A4").Value Or _ Range("B3").Offset(0, i) = Range("A5").Value Or _ Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation du GoTo est a proscrire car elle conduit à une construction mal structuré, appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison() Dim i As Integer, v As Variant Randomize
For i = 1 To 4 Do While True v = Int(Rnd * 19) If v <> Range("A3").Value And v <> Range("A4").Value And _ v <> Range("A5").Value And v <> Range("A6").Value Then Exit Do Loop Range("B3").Offset(0, i).Value = v Next End Sub
"Guillaume" wrote in message news:#
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5 J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit Function RandomNumber(Lowest As Long, Highest As Long) ' Generates a random whole number within a given range Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function Sub Comparaison() Dim i As Integer i = 0 Randomize
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne s'arrete jamais!!! je ne comprend plus rien
Merci de m'aider
Je vais essayer ça ce soir. Merci a tous
"Alain" <valain@live.com> a écrit dans le message de news:
B4B92C91-103B-4C72-AF47-5468B1FF3B28@microsoft.com...
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _
Range("B3").Offset(0, i) = Range("A4").Value Or _
Range("B3").Offset(0, i) = Range("A5").Value Or _
Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation
du GoTo est a proscrire car elle conduit à une construction mal structuré,
appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire
sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison()
Dim i As Integer, v As Variant
Randomize
For i = 1 To 4
Do While True
v = Int(Rnd * 19)
If v <> Range("A3").Value And v <> Range("A4").Value And _
v <> Range("A5").Value And v <> Range("A6").Value Then Exit
Do
Loop
Range("B3").Offset(0, i).Value = v
Next
End Sub
"Guillaume" <guimaric@cegetel.net> wrote in message
news:#FbZUQQcKHA.2188@TK2MSFTNGP04.phx.gbl...
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et
5
J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit
Function RandomNumber(Lowest As Long, Highest As Long)
' Generates a random whole number within a given range
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sub Comparaison()
Dim i As Integer
i = 0
Randomize
For i = 1 To 4
Label1:
Range("B3").Offset(0, i).Value = Int(Rnd * 19)
If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or
Range("A5").Value Or Range("A6").Value Then GoTo Label1
Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas
été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne
s'arrete jamais!!!
je ne comprend plus rien
Le If est mal construit et devrait plutôt ressembler a ceci:
If Range("B3").Offset(0, i) = Range("A3").Value Or _ Range("B3").Offset(0, i) = Range("A4").Value Or _ Range("B3").Offset(0, i) = Range("A5").Value Or _ Range("B3").Offset(0, i) = Range("A6").Value Then
Quoique ton code va fonctionner après avoir corriger le If l'utilisation du GoTo est a proscrire car elle conduit à une construction mal structuré, appelé dans le jargon "code spaghetti" et il y a toujours moyen de faire sans...
Un exemple parmi tant d'autre de ce que ton code pourrait être sans GoTo:
Sub Comparaison() Dim i As Integer, v As Variant Randomize
For i = 1 To 4 Do While True v = Int(Rnd * 19) If v <> Range("A3").Value And v <> Range("A4").Value And _ v <> Range("A5").Value And v <> Range("A6").Value Then Exit Do Loop Range("B3").Offset(0, i).Value = v Next End Sub
"Guillaume" wrote in message news:#
Bonjour
J'ai 5 valeurs dans A3 A4 A5 A6 et A6 qui sont respectivement 1 2 3 4 et 5 J'ai ecrit cette macro la (qui n'a aucun intéret que d'apprendre)
Option Explicit Function RandomNumber(Lowest As Long, Highest As Long) ' Generates a random whole number within a given range Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function Sub Comparaison() Dim i As Integer i = 0 Randomize
For i = 1 To 4 Label1: Range("B3").Offset(0, i).Value = Int(Rnd * 19) If Range("B3").Offset(0, i) = Range("A3").Value Or Range("A4").Value Or Range("A5").Value Or Range("A6").Value Then GoTo Label1 Next
End Sub
Je pensais que la boucle tournerais tant que pour i=1 une valeur n'a pas été touvée puis pour i=2 puis i=3 puis i=4 puis on sort de la boucle.
Or le programme fait tourner constamment des chiffres dans C3 mais ne s'arrete jamais!!! je ne comprend plus rien