Sub Ventiler()
'la zone va sans doute etre dynamique. il faut donc détecter la dernière ligne
lastline = Sheets("Plan d'action").Range("H65536").End(xlUp).Row
'on suppose ici que le tableau commence TOUJOURS en ligne 18
Set zone = Sheets("Plan d'action").Range("H18:H" & lastline)
'selon le contenu de l'intitulé xxxASSxxx ou xxxSExxx, on adresse la feuille qui va bien
For Each ele In zone
If ele Like "*ASS*" Then
Nomfeuille = "T12SA"
ElseIf ele Like "*SE*" Then
Nomfeuille = "EPPSA"
End If
With Sheets(Nomfeuille)
.Activate 'relativement bete comme opération. vu que le with sheet permet normalement de travailler sur la feuille sans l'ouvrir...
'mais tant que je n'ai pas compris comment copier inserer des lignes SANS les sélectionner.. on reste comme ca
'detection de la dernière ligne du tableau
fin = .Range("C65536").End(xlUp).Row
'tableau vide
If fin = 16 Then fin = 17
'on déffusionne les colonnes A et B du tableau qui genent pour la copie...
'Cells(fin, 1).UnMerge
'on regarde si l'action est déjà dans le tableau
ActionExist = False
For Each Action In ActiveSheet.Range("C17:C" & fin)
If ele = Action Then
ActionExist = True
Exit For
End If
Next Action
'si l'action n'existe pas, on l'insère
If Not (ActionExist) Then
'on copie colle les deux dernières lignes en fin de tableau: permet de garder les formules et mises en forme
Rows(fin & ":" & fin + 1).Copy
Rows(fin + 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
'on remerge les colonnes A et B
' range("A19:B" & fin + 3).Merge
'on note le nom de la ligne
Range("C" & fin + 2) = ele
'mise à jour des formules de la dernière ligne
Range("R" & fin + 4).Select
formule = "=somme(R17:R" & fin + 3 & ")"
ActiveCell.FormulaLocal = formule
Range("R" & fin + 4).Select
Selection.AutoFill Destination:=Range("R" & fin + 4 & ":U" & fin + 4), Type:=xlFillDefault
End If
End With
Next ele
'une fois que tous les éléments sont remplis, on ré-écrit les formules lignes noire et jaune
'dans la feuille EPPSA
Sheets("EPPSA").Select
'ligne Noire
Range("F15").Select
Selection.FormulaArray = _
"=SUM(ISODD(ROW(OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1))))*IFERROR(1*OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1)),0))"
Selection.AutoFill Destination:=Range("F15:Q15"), Type:=xlFillDefault
'ligne Jaune
Range("F16").Select
Selection.FormulaArray = _
"=SUM(ISEVEN(ROW(OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1))))*IFERROR(1*OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1)),0))"
Selection.AutoFill Destination:=Range("F16:Q16"), Type:=xlFillDefault
'dans la feuille T12SA
Sheets("T12SA").Select
'ligne Noir
Range("F15").Select
Selection.FormulaArray = _
"=SUM(ISODD(ROW(OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1))))*IFERROR(1*OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1)),0))"
Selection.AutoFill Destination:=Range("F15:Q15"), Type:=xlFillDefault
'ligne Jaune
Range("F16").Select
Selection.FormulaArray = _
"=SUM(ISEVEN(ROW(OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1))))*IFERROR(1*OFFSET(R[4]C,,,MATCH(""zz"",R19C3:R1048532C3,1)),0))"
Selection.AutoFill Destination:=Range("F16:Q16"), Type:=xlFillDefault
Sheets("Plan d'action").Activate
End Sub