Bonjour lilie,
j'ai fait ton exo de façon classique, sans TCD ; lien fichier :
https://www.cjoint.com/c/NCEqCV3ZDW0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pour la plage K5:O8, note bien que c'est entièrement vide ;
fais Ctrl e ➯ travail effectué ; vérifie tous les résultats.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
les anciens résultats sont effacés automatiquement par la
macro pour éviter toute interférence.
fais Alt F11 pour voir le code VBA ; puis fais de nouveau
Alt F11 pour revenir sur Excel.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
code VBA de Module1 (28 lignes) :
Option Explicit
Sub Essai()
Dim c As Range, m&, a$, b$, e$, f$, q%, r%, d1&, d2&, d3&, i&, j&, k As Byte
m = Rows.Count: Application.ScreenUpdating = 0
d3 = Cells(m, 12).End(3).Row: If d3 > 4 Then Range("K5:O" & d3) = Empty
d1 = Cells(m, 3).End(3).Row: If d1 = 4 Then Exit Sub
d2 = Cells(m, 7).End(3).Row: If d2 = 4 Then Exit Sub
For i = 5 To d1
a = Cells(i, 3): q = Cells(i, 4): Cells(i, 12) = a: Cells(i, 13) = q
Set c = Range("G5:G" & d2).Find(a, , -4163, 1, 1)
If c Is Nothing Then
Cells(i, 11) = Cells(i, 1): Cells(i, 14) = 0: Cells(i, 15) = "faux"
Else
For j = 5 To d2
b = Cells(j, 7): f = Cells(j, 6)
For k = 1 To 2
e = Cells(i, k)
If a = b And f = e Then
r = Cells(j, 8): Cells(i, 11) = f: Cells(i, 14) = r
Cells(i, 15) = IIf(q = r, "ok", "faux"): Exit For
End If
Next k
Next j
End If
Next i
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
j'ai vu ICI que JHA a fait ton exo avec PowerQuery. ;)
rhodo