Détection erreur VBA
Résolu/Fermé
A voir également:
- Détection erreur VBA
- Erreur 0x80070643 - Guide
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 1004 vba ✓ - Forum Excel
- Vba erreur automation référence future non valide ✓ - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
Bonsoir
Il me semble que vous aviez déjà posté cette demande il y a quelque jours.
Et vous y avoir répondu.
sauf erreur de ma part.
Sinon montrez un fichier plus simple et plus compréhensible pour vous aider.
Cordialement
Il me semble que vous aviez déjà posté cette demande il y a quelque jours.
Et vous y avoir répondu.
sauf erreur de ma part.
Sinon montrez un fichier plus simple et plus compréhensible pour vous aider.
Cordialement
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
4 oct. 2012 à 17:40
4 oct. 2012 à 17:40
Bonjour
Si tu veux la rapidité , essaies ce code
maquette:
https://www.cjoint.com/?3JerOfHg7Ms
Si tu veux la rapidité , essaies ce code
Option Explicit Option Base 1 Sub comparer_matricule() Dim Derlig As Long, Dico As Object, Lig As Long, Mat, Nom As String Dim T_sh3(), T_out(), cptr As Long Dim start As Single start = Timer Application.ScreenUpdating = False With Sheets(1) Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row Set Dico = CreateObject("scripting.dictionary") For Lig = 1 To Derlig Mat = .Cells(Lig, "A") Nom = .Cells(Lig, "B") If Not Dico.exists(Mat) Then Dico.Add Mat, Nom Next End With With Sheets(3) Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row T_sh3 = Application.Transpose(.Range("A1:A" & Derlig).Value) End With cptr = 1 ReDim T_out(2, cptr) For Lig = 1 To Derlig If Dico.exists(T_sh3(Lig)) Then ReDim Preserve T_out(2, cptr) T_out(1, cptr) = T_sh3(Lig) T_out(2, cptr) = Dico.Item(T_sh3(Lig)) cptr = cptr + 1 End If Next With Sheets(2) .Range("A1:B10000").Clear .Range("A1").Resize(cptr - 1, 2) = Application.Transpose(T_out) .Range("A1:B" & cptr - 1).Borders.Weight = xlThin .Select End With Application.ScreenUpdating = True MsgBox "durée : " & Timer - start & " secondes" End Sub
maquette:
https://www.cjoint.com/?3JerOfHg7Ms
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
4 oct. 2012 à 17:49
4 oct. 2012 à 17:49
Essai avec 8100 lignes en feuil1 et 2700 en lignes en feuill3
durée: <=0,9 seconde (proc: 3Ghz, RAM: 512 Mo)
durée: <=0,9 seconde (proc: 3Ghz, RAM: 512 Mo)
4 oct. 2012 à 17:33