Hello,
modifier cette variable en ajoutant ou supprimant les chaines à exclure en respectant la même syntaxe
varexcluarray = Array("Olive", "Salade")
Voici :
Sub synthese()
Const strsh_synth As String = ("Synthèse")
Dim strname_sheet As String
Dim wkssh_temp As Worksheet
Dim rngsheet As Range
Dim varcells As Variant, vartab_temp As Variant, varexcluarray As Variant
Dim lnglast_row_synth As Long, lnglastcol_synth As Long, i As Long, lngnb_indi As Long, _
lngrow_sh_synth As Long, y As Long, lngcol_sh_synt2 As Long
Dim bytcol_sh_synt As Byte, bytf_row_sh_synt As Byte
Dim objmondico As Object, objmondico2 As Object
bytcol_sh_synt = 1
bytf_row_sh_synt = 3
varexcluarray = Array("Olive", "Salade")
With Sheets(strsh_synth)
lnglastcol_synth = Sheets(strsh_synth).Cells(bytf_row_sh_synt - 1, Columns.Count).End(xlToLeft).Column
Set objmondico = CreateObject("Scripting.Dictionary")
Set objmondico2 = CreateObject("Scripting.Dictionary")
vartab_temp = .Range(.Cells(bytf_row_sh_synt - 1, bytcol_sh_synt + 1), .Cells(bytf_row_sh_synt - 1, lnglastcol_synth))
For i = LBound(vartab_temp, 2) To UBound(vartab_temp, 2)
objmondico(vartab_temp(1, i)) = ""
Next i
vartab_temp = .Range(.Cells(bytf_row_sh_synt - 2, bytcol_sh_synt + 1), .Cells(bytf_row_sh_synt - 2, lnglastcol_synth))
For i = LBound(vartab_temp, 2) To UBound(vartab_temp, 2)
objmondico2(vartab_temp(1, i)) = ""
Next i
End With
lngnb_indi = objmondico.Count
For Each wkssh_temp In ThisWorkbook.Worksheets
If wkssh_temp.Name <> strsh_synth Then
With Sheets(strsh_synth)
lnglast_row_synth = .Cells(Rows.Count, bytcol_sh_synt).End(xlUp).Row
Set rngsheet = .Range(.Cells(bytf_row_sh_synt, bytcol_sh_synt), .Cells(lnglast_row_synth, bytcol_sh_synt))
For Each varcells In rngsheet
If varcells = wkssh_temp.Name Then lngrow_sh_synth = varcells.Row
Next varcells
y = 2
lngcol_sh_synt2 = bytcol_sh_synt + 1
For i = 1 To objmondico2.Count
Set rngsheet = wkssh_temp.Range(wkssh_temp.Cells(y, bytcol_sh_synt + 1), wkssh_temp.Cells(y, bytcol_sh_synt + lngnb_indi))
If Not wkssh_temp.Cells(y, bytcol_sh_synt) = varexcluarray(0) Then
.Cells(lngrow_sh_synth, lngcol_sh_synt2).Resize(, lngnb_indi).Value2 = rngsheet.Value2
y = y + 1
lngcol_sh_synt2 = lngcol_sh_synt2 + lngnb_indi
Else:
For Each varcells In varexcluarray
If wkssh_temp.Cells(y, bytcol_sh_synt) = varcells Then y = y + 1
Next varcells
End If
Next i
End With
End If
Next wkssh_temp
End Sub