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) :
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.
Re : Comparaison de cellules, et probleme de méthodologie de developpement
Bonjour handek94
Et bienvenue sur XLD
Peux-tu poster un fichier exemple ( une dizaine de lignes par feuille est suffisant) avec des données anonymes ??
Cela nous evitera de partir sur de fausses pistes
Re : Comparaison de cellules, et probleme de méthodologie de developpement
J'ai repris quelques lignes de mon fichier, en modifiant bien evidemment les valeurs, qui sont dans mon cas confidentiels.
J'ai de plus supprimé les autres colonnes inutilisé.
Tout celà sur 54.000 et 63.000 ligne
Re : Comparaison de cellules, et probleme de méthodologie de developpement
Bonjour le Fil
Ci dessous un code à tester.
Attention les numéro de sécurité sociale doivent être des nombres.
Code:
Sub travdem()
Dim Cellule As Range
Dim Nomfeuille1 As String
Dim Nomfeuille2 As String
Dim Col As String
Dim c As Variant
'parametre
' pour boucler sur la colonne 1
Nomfeuille1 = "Feuil1"
Nomfeuille2 = "Feuil2"
Col = "b"
For Each Cellule In Sheets(Nomfeuille1).Range(Col & "2:" & Col & Sheets(Nomfeuille1).Range(Col & Sheets(Nomfeuille1).Rows.Count).End(xlUp).Row)
If Cellule <> "" Then
With Worksheets(Nomfeuille2).Range("a1:a" & Worksheets(Nomfeuille2).Range("b" & Worksheets(Nomfeuille2).Rows.Count).End(xlUp).Row)
Set c = .Find(Cellule.Value, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
Call MsgBox("Salaire 1 :" & Cellule.Offset(0, 2).Value _
& vbCrLf & "Salaire2 :" & c.Offset(0, 1).Value _
, vbExclamation, Application.Name)
End If
'a = c.Value
End With
End If
Next Cellule
End Sub