Nombres excel

DDiimtrri Messages postés 12 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour a tous auriez vous une commande sous excel a me faire partager pour génerer une suite de 5000 nombres compris entre 1000 ET 10000 ? ( et que les nombres ne se répète jamais , que l'on retrouve une seul fois le nombre dans les 5000 génerer) .
Merci
A voir également:

2 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
bonjour

proposition de macro:

Sub tirer_5K()
Dim numeros As Collection
Dim cptr As Integer

Set numeros = New Collection
For cptr = 1 To 5000
    tirage = Int(Rnd * 9000) + 1000
    On Error Resume Next
        numeros.Add tirage, CStr(tirage)
         If Err.Number > 0 Then cptr = cptr - 1
    On Error GoTo 0
Next

Application.ScreenUpdating = False

For cptr = 1 To numeros.Count
    Cells(cptr, 1) = numeros(cptr)
Next
End Sub
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
plus rapide!

Sub tirer_5K() 
Dim numeros As Collection 
Dim tablo 
Dim cptr As Integer 

Set numeros = New Collection 
ReDim tablo(1 To 5000) 
For cptr = 1 To 5000 
    tirage = Int(Rnd * 9000) + 1000 
    On Error Resume Next 
        numeros.Add tirage, CStr(tirage) 
         If Err.Number > 0 Then 
               cptr = cptr - 1 
            Else 
               tablo(cptr) = tirage 
        End If 
    On Error GoTo 0 
Next 

Application.ScreenUpdating = False 

Range("A1:A5000") = Application.Transpose(tablo) 
set numeros=nothing 
End Sub
0
DDiimtrri Messages postés 12 Statut Membre
 
merci beaucoup de votra aide et puis combiner cette formule : =0&ENT((1+ALEA())*100000000)
qui permet de génrerer une liste de numeros composés de chacun 9 chiffres commencant par 01 , avec ce macro ?
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Oui mais le numero n'est plus numérique de type texte

macro modifiée et complètée ( quelques trucs oubliés tout à l'heure)
Sub tirer_5K()
Dim numeros As Collection, tirage As String * 9
Dim tablo
Dim cptr As Integer

Set numeros = New Collection
ReDim tablo(1 To 5000)
Randomize
For cptr = 1 To 5000
    '0&ENT((1+ALEA())*100000000)
    tirage = "0" & Int((1 + Rnd) * 100000000)
    On Error Resume Next
        numeros.Add tirage, tirage
         If Err.Number > 0 Then
               cptr = cptr - 1
            Else
               tablo(cptr) = tirage
        End If
    On Error GoTo 0
Next

Application.ScreenUpdating = False

Range("A1:A5000") = Application.Transpose(tablo)
Set numeros = Nothing
End Sub
0