Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 Gosselien,

J'ai regardé ton programme mais j'ai constaté qu'il y a des doublons
Je recherche en colonne A tous les nombre de 1 à 1000000, sans doublons, et inscrits aléatoirement.


Merci!

René
 

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…