Tableau VBA nombre aléatoire

Résolu/Fermé
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011 - 20 nov. 2011 à 16:12
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011 - 20 nov. 2011 à 18:41
Bonjour,

Je dois réaliser dans le cadre d'un cours un petit programme en VBA qui me permet de trouver une somme maximale.

Pour ce faire, je dois en premier lieu initialiser un tableau d'une taille aléatoire (entre 1 et 1000 cases).

Dans chacune de ces cases, je dois initialiser (générer) un nombre aléatoire entre -100 et 100. Or, mon problème est que le message d'erreur (l'indice n'appartient pas à la sélection apparait a chaque fois et je ne sais pas comment corriger cette erreur. Svp, quelqun peut-il m'aider?

Merci sincèrement d'avance pour votre temps

(voici donc mes lignes de programmations)

Randomize
intTaille = Int(Rnd * (1000 + 1 - 1) - 1)
ReDim intNombreAVerifier(intTaille)


For i = 0 To intTaille - 1 Step 1
intNombreAInitialiser(i) = Int(Rnd * (100 + 1 - (-100)) - 100) 'C'est ici que sa ne marche plus
Next i



3 réponses

bonjour

essaye:
intNombreAInitialiser(i) =Int(201* Rnd) - 100
Int(201 * Rnd) te renvoie de 0 à 200 et comme tu fais -100, tu auras de -100 à +100

Bonne suite
0
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011
20 nov. 2011 à 16:49
Merci du conseil le problème maintenant est que je ne parviens pas a afficher mes données générées aléatoirement, le programme s'exécute, mais rien n'apparait ....

For i = 1 To i = intTaille Step 1
intNombreAInitialiser(i - 1) = Int(Rnd * 201) - 100
Range("A" & i).Value = intNombreAInitialiser(i)
Next i
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
20 nov. 2011 à 16:52
C'est ce qu'il fait : 100 + 1 - (-100) = 201
mais il redimensionne intNombreAVerifier et affecte intNombreAInitialiser d'où l'erreur !
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
20 nov. 2011 à 16:49
Essaies ce code :
Option Explicit
Option Base 1
Sub xxx()
Dim intTaille As Integer
Dim intNombreAVerifier() As Single
Dim i As Integer

  Randomize
  intTaille = Int(Rnd * 1000) + 1
  ReDim intNombreAVerifier(intTaille)
  For i = 1 To intTaille
    intNombreAVerifier(i) = Int(Rnd * 201) - 100
  Next i

End Sub

0
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011
20 nov. 2011 à 16:58
Merci Patrice et égalementPaf pour vos solutions, elles fonctionnent bien puisque VBA ne plante pas, mais je ne réussi pas a faie afficher les nombres générés dans excel....

Ce que je veux dire, c'est que une fois un nombre généré, ce dernier doit aller dans une case d'excel...

J'ai essayé avec
Range("A" & i).Value = intNombreAInitialiser(i)

mais rien n'apparait....
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
20 nov. 2011 à 17:42
C'est normal, intNombreAInitialiser n'existe pas !
Code :
Option Explicit
Option Base 1
Sub xxx()
Dim intTaille As Integer
Dim intNombreAVerifier() As Single
Dim i As Integer

  Randomize
  intTaille = Int(Rnd * 1000) + 1
  ReDim intNombreAVerifier(intTaille)
  For i = 1 To intTaille
    intNombreAVerifier(i) = Int(Rnd * 201) - 100
    Cells(i, 1).Value = intNombreAVerifier(i)
  Next i

End Sub

-1
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011
20 nov. 2011 à 18:26
MERCI!!!!! tu me sauves la vie!!!!!
0
Débutant informatique Messages postés 9 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 11 décembre 2011
20 nov. 2011 à 18:41
Eille pendant que j'y suis, je dois faire un timer dans VBA mais en label ou on voit le temps défiler de trois minutes et qui est déclenché par un bouton qui est dans le même userform que le label.

La réponse est peut-être simple mais honnêtement, je suis perdu dans le tout!

merci d'avance
0