Bonjour
Je suis débutant en Excel et VBA.
Mon problème est assez difficile à expliquer, mais je vais tenter de faire au mieux.
Pour simplifier les choses, j'ai un fichier excel avec deux onglets.
Dans les onglets on peut trouver quelque chose comme ca :
La plupart des numéros de sécu sont les mêmes dans les deux onglets, mais pas dans le même ordre.
Je dois, à chaque fois que je trouve un numéro de sécu identique, calculer l'écart de salaire (la différence entre les salaires).
J'ai commencé simple, en faisant une macro, qui compart chaque numéro de secu du premier onglet avec tous ceux du deuxieme onglet.
Et le problème, c'est que mes deux onglets ont 54.000 ligne, et l'autre 63.000, ce qui fait que le temps d'execution est abérant si je dois comparer chaque cellule une par une.
Voilà la macro que j'ai commencé à developpé (Pour les 100 premières lignes car plus on augmente, plus le temps d'execution est long) :
Je sollicite donc tous ceux qui aurait une idée à me proposer, un algorithme plus performant que le mien par exemple, et qui me permette de traiter ce très gros fichier avec un temps d'execution plus respectable.
Merci d'avance.
Je suis débutant en Excel et VBA.
Mon problème est assez difficile à expliquer, mais je vais tenter de faire au mieux.
Pour simplifier les choses, j'ai un fichier excel avec deux onglets.
Dans les onglets on peut trouver quelque chose comme ca :
HTML:
Num secu Salaire
1028806015 1200
1098046065 2632
1587609809 3620
1870906878 1450
La plupart des numéros de sécu sont les mêmes dans les deux onglets, mais pas dans le même ordre.
Je dois, à chaque fois que je trouve un numéro de sécu identique, calculer l'écart de salaire (la différence entre les salaires).
J'ai commencé simple, en faisant une macro, qui compart chaque numéro de secu du premier onglet avec tous ceux du deuxieme onglet.
Et le problème, c'est que mes deux onglets ont 54.000 ligne, et l'autre 63.000, ce qui fait que le temps d'execution est abérant si je dois comparer chaque cellule une par une.
Voilà la macro que j'ai commencé à developpé (Pour les 100 premières lignes car plus on augmente, plus le temps d'execution est long) :
Code:
Private Sub CommandButton1_Click()
Dim i, j As Long
Dim nbEg As Integer
nbEg = 1
i = 3
j = 3
Do While j <> 100
i = 3
Do While Feuil4.Cells(j, 1).Value <> Feuil1.Cells(i, 2).Value And Feuil4.Cells(j, 1).Value <> "" And Feuil1.Cells(i, 2).Value <> ""
i = i + 1
Loop
If Feuil4.Cells(j, 1).Value = Feuil1.Cells(i, 2).Value Then
nbEg = nbEg + 1
End If
j = j + 1
Loop
MsgBox "Parmi les 100 premier num de secu : " & nbEg & " sont égaux"
End Sub
Je sollicite donc tous ceux qui aurait une idée à me proposer, un algorithme plus performant que le mien par exemple, et qui me permette de traiter ce très gros fichier avec un temps d'execution plus respectable.
Merci d'avance.