Bonjour à tous,
Dans le code suivant :
Sub CopyColors1()
Dim ws As Worksheet
Dim sText As String
Dim r As Range
Dim f As Range
Dim lRow As Long
Dim sAddress As String
Dim lColor As Long
Dim iFirstLine As Integer
Dim i As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set ws = Worksheets("BLOCKS")
iFirstLine = ws.Range("K3").End(xlDown).Row
For i = 3 To iFirstLine
sText = ws.Cells(i, 11).Value
lColor = ws.Cells(i, 11).DisplayFormat.Interior.Color
With Worksheets("Sys_Customer_DB").Range("K5:CN999")
Set r = .Find(What:=sText, LookIn:=xlValues) 'lookat:=xlWhole)
If Not r Is Nothing Then
sAddress = r.Address
Do
r.Interior.Color = lColor
Set r = .FindNext(r)
Loop While r.Address <> sAddress
End If
End With
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Je viens tout d'abord chercher la première cellule vide dans la colonne K de la feuille BLOCKS.
En suite je balaye la colonne K de la ligne 3 à la première cellule vide (non comprise), je récupère la valeur et la couleur.
Dans la feuille Sys_Customer_DB, je cherche toutes les correspondances dans la plage K5:CN999 et recopie la couleur correspondante à la valeur.
La partie qui cherche la première cellule vide de la colonne K est celle qui me pose problème.
En effet, toute la colonne K contient la formule du type : =SI(OU(E3="";G3="");"";CONCATENER(E3;"_";G3))
Donc les cellules VIDES ne le sont pas vraiment car elles contiennent la formule.
Je ne sais pas comment faire remonter la première cellule vide en apparence.
Est-ce qu'il serait possible d'utiliser quelque chose du type ".DisplayFormat" ?
Je ne pourrais malheureusement pas partager mon fichier.
Merci par avance