Erreur d'éxècution '13'

néné06

XLDnaute Accro
Bonsoir le Forum,

Si je place un nombre < à 65537, cela fonctionne, mais au dessus , le message "Erreur d'éxècution '13', Incompatibilité de type" arrive !

Quelle modification à apporter dans cette ligne ?
Range("A2").Resize(dico.Count) = Application.Transpose(dico.keys)

Private Sub Workbook_Open()
' ********** Tirage de valeurs différentes et écriture en colonne A et B ***************
Set dico = CreateObject("Scripting.Dictionary")
While dico.Count < 1065537
Randomize
S = Int((10000000 * Rnd)) + 1
dico(S) = S
Wend
Range("A2").Resize(dico.Count) = Application.Transpose(dico.keys)
Range("B2").Resize(dico.Count) = Application.Transpose(dico.keys)
'********** Trier la colonne B par ordre croissant **************
Columns("B:B").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'******** Instale des pointeurs pour trouver ligne en recherche VlookUp en colonne C ************
For i = 2 To 65537: Cells(i, 3) = i - 1: Next i
End Sub

D'avance Merci

A+

René
 

Pièces jointes

  • Classeur1.xlsm
    16.1 KB · Affichages: 48
  • Classeur1.xlsm
    16.1 KB · Affichages: 49
Dernière édition:

gosselien

XLDnaute Barbatruc
Re : Erreur d'éxècution '13'

Bonjour René, le forum,

un essai ici :

Sub Macro() ' 3,9570 secondes ici win7 / XL2007 Acer 2Gg ram / 2.0 Ghz pour 100.000 lignes / 175 sec pour 1.000.000 lignes
t = Timer
Dim MonTab(), Montab2(), x As Long, z As Long
Set dico = CreateObject("Scripting.Dictionary")
Set dico2 = CreateObject("Scripting.Dictionary")
While dico.Count < 1000000 '1048575
Randomize
s = Int((10000000 * Rnd)) + 1
dico(s) = dico(s) + 1
Wend
While dico2.Count < 1000000 ' 1048575
Randomize
aa = Int((10000000 * Rnd)) + 1
dico2(aa) = dico2(aa) + 1
Wend
ReDim MonTab(1 To dico.Count, 1 To 2)
For Each Cle In dico.keys
x = x + 1
MonTab(x, 1) = Cle
Next
ReDim Montab2(1 To dico2.Count, 1 To 2)
For Each Cle In dico2.keys
z = z + 1
Montab2(z, 1) = Cle
Next
Range("A2").Resize(dico.Count) = MonTab
Range("B2").Resize(dico.Count) = Montab2
MsgBox (Timer - t)
End Sub
 

néné06

XLDnaute Accro
Re : Erreur d'éxècution '13'

Bonjour le Forum,

Finalement, après quelques recherches, j'ai trouvé une méthode, par index en tableau, qui me permet de sortir un nombre n de tirages aléatoires, parmi les valeurs entre 1 et n, sans doublon et de les afficher en colonne A.
Sur mon ordinateur, pour 1 000 000 de tirages et affichage, temps = environ 8'' 5/10.

Merci pour les aides apportées!

A+

René
 

Pièces jointes

  • Tirages aléatoires.xlsm
    17.5 KB · Affichages: 28
  • Tirages aléatoires.xlsm
    17.5 KB · Affichages: 33

Discussions similaires

Réponses
14
Affichages
1 K

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus