Utiliser les mêmes valeurs aléatoires dans deux Sub différentes
Bonjour à tous,
Je suis débutante sur VBA et j'aurai besoin de votre aide. Je souhaiterai coder des valeurs aléatoires dans un fichier CSV dans une première Sub puis dans une deuxième Sub je voudrais récupérer ces données pour les rentrer dans un tableau. Or je n'arrive pas à faire comprendre au code que les valeurs obtenues dans la première Sub sont celles que je souhaite utiliser dans la seconde Sub. Donc voila je suis bloquée.
Je vous mets le code pour que vous puissiez mieux comprendre car ce que j'ai écrit plus haut n'est peut-être pas très clair...
Merci d'avance pour toutes réponses.
Sub liste()
Dim c, d, e As Integer
Dim b As Double
Dim fic As String
fic = "D:\"
Dim i As Integer
Open "testprojetinfo.csv" For Output As #1
For i = 2 To 97
Randomize
b = 0.5 * Rnd + 6.2
c = Int(10 * Rnd) + 0
d = Int(12 * Rnd) + 0
e = Int(55 * Rnd) + 0
machaine = CStr(b) + ";" + CStr(c) + ";" + CStr(d) + ";" + CStr(e)
Print #1, machaine
Next i
Close #1
End Sub
Sub listes()
Dim c, d, e As Integer
Dim b As Double
Open "testprojetinfo.csv" For Output As #1
For i = 2 To 97
Cells(i, 1) = i - 1
Cells(i, 2) = b
Cells(i, 3) = c
Cells(i, 4) = d
Cells(i, 5) = e
Next i
Close #1
End Sub
Bonjour,
Si les 2 macros sont dans le même module,
tu dois les déclarer "Private" avant la première Sub: Elles seront ainsi visibles dans tout le module.
Private c as integer, d as integer, e as integer
Private b as double
Subliste
........
Sublistes
......Si les 2 sub ne sont pas dans le même module, il faut les déclarer "Public", pour quelles soient visibles dans tout le projet.
Autre chose:
dim c, d, e as integerdéclare e comme integer, mais c et d comme variant; il faut préciser le type chaque fois, sinon Variant est attribué par défaut.
Cordialement
bonjour,
proposition de correction de tes codes
Sub liste()
Dim c, d, e As Integer
Dim b As Double
Dim fic As String
fic = "D:\"
Dim i As Integer
Open fic & "testprojetinfo.csv" For Output As #1
For i = 2 To 97
Randomize
b = 0.5 * Rnd + 6.2
c = Int(10 * Rnd) + 0
d = Int(12 * Rnd) + 0
e = Int(55 * Rnd) + 0
machaine = CStr(b) + ";" + CStr(c) + ";" + CStr(d) + ";" + CStr(e)
Print #1, machaine
Next i
Close #1
End Sub
Sub listes()
Dim ligne As String
Dim i As Long
Dim fic As String
fic = "D:\"
Open fic & "testprojetinfo.csv" For Input As #1
Do While Not EOF(1)
i = i + 1
Cells(i+1, 1) = i
Line Input #1, ligne
Cells(i + 1, 2).Resize(, 4) = Split(ligne, ";")
Loop
Close #1
End Sub