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
|
Option Explicit
Sub Recherche()
'====================================================================================
' Déclaration des variables
'====================================================================================
Dim ShTemp As Worksheet, ShSpectre As Worksheet
Dim LigneSpectre As Long, PremiereLigneSpectre As Long, DerniereLigneSpectre As Long
Dim PremiereLigneTemp As Long, DerniereLigneTemp As Long, ColObjet As Long, ColCouleur As Long, ColResultat As Long, DerniereColonneTemp As Long
Dim AireTemp As Range, CelluleTemp As Range
On Error GoTo Fin
Set ShTemp = Sheets("Temp")
Set ShSpectre = Sheets("Spectre")
With ShTemp
PremiereLigneTemp = 4
ColObjet = 1
ColCouleur = 3
ColResultat = 5
DerniereLigneTemp = .Cells(.Rows.Count, ColObjet).End(xlUp).Row
If DerniereLigneTemp < PremiereLigneTemp Then GoTo Fin
Set AireTemp = .Range(.Cells(PremiereLigneTemp, ColObjet), .Cells(DerniereLigneTemp, ColObjet))
End With
'====================================================================================
' Recherche des données grâces aux références
'====================================================================================
With ShSpectre
PremiereLigneSpectre = 20
DerniereLigneSpectre = 33
For Each CelluleTemp In AireTemp
For LigneSpectre = PremiereLigneSpectre To DerniereLigneSpectre ' Zone de recherche des références et requirements
If Trim(CelluleTemp) = Trim(.Cells(LigneSpectre, 3)) And Trim(CelluleTemp.Offset(0, ColCouleur - ColObjet)) = Trim(.Cells(LigneSpectre, 5)) Then
.Range(.Cells(LigneSpectre, 9), .Cells(LigneSpectre, 15)).Copy Destination:=CelluleTemp.Offset(0, ColResultat - ColObjet)
End If
Next LigneSpectre
Next CelluleTemp
End With
'====================================================================================
' Suppression des cellules vides et déplacement dans la feuille principale
'====================================================================================
With ShTemp
DerniereColonneTemp = 13 ' .UsedRange.SpecialCells(xlCellTypeLastCell).Column
With .Range(AireTemp.Offset(0, ColResultat - ColObjet), AireTemp.Offset(0, DerniereColonneTemp - ColObjet))
.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
End With
End With
GoTo Fin
Fin:
Set AireTemp = Nothing
Set ShTemp = Nothing
Set ShSpectre = Nothing
End Sub |
Partager