Bonjour,
A tester :
Sub extraction()
Dim Lig As Long
On Error GoTo OuvertureFichierBaan
'On ouvre le premier fichier extraction baan n°1
Workbooks.Open "C:\B.Delpeyroux\baanextra.xlsx"
With ThisWorkbook.Sheets("ordo")
Sheets("baanextra").Columns("A:A").Copy .Range("A1")
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, Tab:=True, Other:=True, OtherChar:="|", TrailingMinusNumbers:=True
End With
Workbooks("baanextra.xlsx").Close False 'remplacer par True si on veut que ça enregistre avant de fermer
'On ouvre le premier fichier extraction baan n°2
Workbooks.Open "C:\B.Delpeyroux\baanextraHDHAP.xlsx"
With ThisWorkbook.Sheets("ordo2")
Sheets("baanextraHDHAP").Columns("A:A").Copy .Range("A1")
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, Tab:=True, Other:=True, OtherChar:="|", TrailingMinusNumbers:=True
End With
Workbooks("baanextraHDHAP.xlsx").Close False 'remplacer par True si on veut que ça enregistre avant de fermer
i = 1
OuvertureFichierBaan:
If i = 0 Then MsgBox "Erreur lors de l'ouverture de fichier...": Exit Sub
'Creation tableau
With Sheets("ordo")
.Columns("C:C").Copy Sheets("tableau").Range("A:A") 'Je copie les données de la feuille ordo N°OP (C) dans le tableau
.Columns("E:E").Copy Sheets("tableau").Range("B:B") 'Je copie les données de la feuille ordo Description (E) --> (B) dans le tableau
.Columns("L:L").Copy Sheets("tableau").Range("C:C") 'Je copie les données de la feuille ordo Description (L)--> (C) dans le tableau
.Columns("J:J").Copy Sheets("tableau").Range("D:D") 'Je copie les données de la feuille ordo Opération (J)--> (D) dans le tableau
.Columns("M:M").Copy Sheets("tableau").Range("E:E") 'Je copie les données de la feuille ordo Statut op (M) --> (E) dans le tableau
.Columns("N:N").Copy Sheets("tableau").Range("F:F") 'Je copie les données de la feuille ordo CdCs (N)--> (F) dans le tableau
End With
With Sheets("tableau")
.Range("F:F").Replace What:=" ", Replacement:="", LookAt:=xlPart 'Suppression des espaces indésirables en colonne F
For Lig = 2 To .Range("A" & Rows.Count).End(xlUp).Row
.Range("G" & Lig) = Application.IfError(Application.AverageIfs(Sheets("ordo2").Range("J:J"), Sheets("ordo2").Range("A:A"), .Range("A" & Lig), Sheets("ordo2").Range("M:M"), .Range("F" & Lig)), "")
.Range("H" & Lig) = Application.IfError(Application.AverageIfs(Sheets("ordo2").Range("K:K"), Sheets("ordo2").Range("A:A"), .Range("A" & Lig), Sheets("ordo2").Range("M:M"), .Range("F" & Lig)), "")
.Range("I" & Lig) = Application.IfError(Application.AverageIfs(Sheets("ordo2").Range("L:L"), Sheets("ordo2").Range("A:A"), .Range("A" & Lig), Sheets("ordo2").Range("M:M"), .Range("F" & Lig)), "")
Next Lig
End With
End Sub