1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| Private Sub CommandButton3_Click()
'Evite de voir les opérations intermédiaire sur les fichiers
Application.ScreenUpdating = False
'déclarations des variables
Dim i As Long
Dim j As Long
Dim l As Integer
Dim Trouve As Long
Dim Time1 As Date, Time2 As Date
Dim appExcel As Excel.Application
Dim test2 As Excel.Workbook
Dim tests2 As Excel.Worksheet
Dim test As Excel.Workbook
Dim tests As Excel.Worksheet
'parametrage d'appel des fichiers
Set appExcel = CreateObject("Excel.Application") 'creation de l'objet permettant d'ouvrir le fichier excel
Set test2 = appExcel.Workbooks.Open("W:\Entit\DIR IND\PA\GD\Habib\ONSAN\test2.xlsx") 'classeur
Set tests2 = test2.Worksheets("Documents") 'feuille
Set test = appExcel.Workbooks.Open("W:\Entit\DIRIND\PA\GD\Habib\ONSAN\test.xlsx")
Set tests = test.Worksheets("Feuil1")
i = 4 'initialisation du compteur à 4 car la ligne 1,2,3 contient l'en-tête de chaque donnée
Time1 = Now()
For i = 4 To len(tests2)
While (tests2.Cells(i, 1).Value <> "" And (tests2.Cells(i, 5).Value <> "" Or tests2.Cells(i, 4).Value <> "" Or tests2.Cells(i, 22).Value <> "" Or tests2.Cells(i, 23).Value <> "")) ' tant que dans le fichier test la cellule en (ligne i, colonne A E D V W) n'est pas vide
j = 2
Time2 = Now()
'si la cellule du fichier test2 correspond à celle de test alors
For j = 2 To len(tests)
If (tests2.Cells(i, 1).Value = _
tests.Cells(j, 2).Value And (tests.Cells(j, 3).Value = tests2.Cells(i, 5).Value + ";" + tests2.Cells(i, 4).Value + ";" + tests2.Cells(i, _22).Value + ";" + tests2.Cells(i, 23).Value)) Then
Trouve = 1
'On copie le code à la ligne actuelle dans une nouvelle colonne
'tests.Cells(i, 3).Value = '_
'tests2.Cells(j, 2).Value
'j = j + 1
tests.Cells(j, 1).Interior.Color = 2
'tests2.Cells(j, 2).Interior.Color = 2
'sinon on passe à la ligne suivante de icatfiltre
Else
'j = j + 1
tests2.Cells(j, 1).Interior.Color = 27
'j = j + 1
End If
Next j
i = i + 1
Wend
Next i
'on ferme le classeur
test.Close
Debug.Print "TestListe :" & Format$(Time2 - Time1, "hh:mm:ss")
Application.ScreenUpdating = True
End Sub |
Partager