Bonjour Benoit,
merci de ta réponse rapide. j'essaie de comprendre ton code mais y a quelques trucs qui m'échappent...
Function SaveArray(pathWk$)
Dim wk As Workbook, sh As Worksheet
Dim ii&
'Ouverture du fichier.
Set wk = Workbooks.Open(pathWk)
Set sh = wk.Sheets(1)
'Enregistrement de la dernière ligne.
ii = sh.Cells.Find("*", , , , xlByRows, xlPrevious).Row
==> ca définit le numéro de la dernière ligne non vide?
'Enregistrement du tableau.
With sh
SaveArray = .Range(.Cells(5, "B"), .Cells(ii, "L")).Value
End With
==> B et L sont les noms des colonnes? est ce équivalent à cells(5,2) et cells(ii, 12)?
'Fermeture du classeur.
wk.Close False
End Function
Ensuite, arrfileA et B sont les fameux tableaux virtuels rempli par ta fonction savearray?
Et là, tu résumes en 10 lignes mon code de 25 lignes c'est bien ca? Par contre tu compares les lignes i et i des 2 fichiers, il n'y a pas de recherche si?
pour la recherche j'insère le tout dans une autre boucle "for" qui pour chaque ligne i du fileA fait défiler les lignes k du fileB jusqu'à réunir toutes les conditions
For i = LBound(arrFileB) To UBound(arrFileB) ==> Lbound et Ubound sont les 1e et dernieres lignes? (Pour ma culture, cette fonction marche t elle aussi avec Lbound(sheets("nomfeuille")? )
For i = LBound(arrFileA) To UBound(arrFileA)
For k = LBound(arrFileB) To UBound(arrFileB)
If arrFileA(i, 2) = arrFileB(k, 2) And arrFileA(i, 3) = arrFileB(k, 3) And arrFileA(i, 4) = arrFileB(k, 4) And arrFileA(i, 11) <> arrFileB(k, 11) Then
With ThisWorkbook.Sheets(1)
ii = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1 ==> tu définies la première ligne vide de la feuille 1 qui sera remplie via le for ci dessous? mais je ne comprends pas les 4 virgules à la suite
For j = 1 To 8
.Cells(ii, j).Value = arrFileA(i, j + 1)
Next j
.Cells(ii, 9).Value = arrFileA(i, 11)
.Cells(ii, 10).Value = arrFileB(k, 11)
End With
End If
Next k
Next i
End Sub
Petite question pour ma culture: dans la fonction "if", est ce que l'ordre des conditions à une importance? car dans mon cas:
arrFileA(i, 2) = arrFileB(i, 2) sera vraie beaucoup plus souvent que arrFileA(i, 4) = arrFileB(i, 4)
Merci de ton aide