re
Voici déjà le code pour la macro "Formule"
Sub Formule()
Dim Lg As Integer
Dim i As Byte
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Menu" And _
Sheets(i).Name <> "BudgetTotal" And _
Sheets(i).Name <> "Tarif" Then
With Sheets(i)
On Error Resume Next
Sheets(i).ShowAllData 'libère les filtres
On Error GoTo 0
Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row - 1
'--- formules Colonne O ---
.Range("o3:o" & Lg) = "=" & _
"IF(AND(K3="""",M3="""",A3=1),""Aucune intervention nécéssaire""," & _
"IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,TEXTE)," & _
"IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,TEXTE),"""")))"
.Range("p3:p" & Lg) = "=" & _
"IF(AND(k3="""",A3=1),""""," & _
"IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,UNITE)," & _
"IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,UNITE),"""")))"
.Range("r3:r" & Lg) = "=" & _
"IF(AND(k3="""",A3=1),""""," & _
"IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,PRIX)," & _
"IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,PRIX),"""")))"
.Range("s3:s" & Lg) = "=" & _
"IF(OR(Q3<>"""",R3<>""""),ROUND(Q3*R3,0),"""")"
End With
End If
Next
End Sub
Je vois pour les masquages demandés car on peut se passer de ta lettre A.
Amicalement