Bonjour @Tom,
Je vais tenter de t’expliquer ce que j’ai fait.
Déjà je n’ais pas compris ce que les autres tableaux a partir de la ligne 24 faisait là ?
Donc j’ai passé outre ! Tu me diras.
Dans l’idéal il faut que les 2 fichiers soient réunis dans un seul Dossier que tu pourras nommer comme tu veux, moi je l’ais nommé “Tom 27 08 2017”
Les 2 fichiers doivent-être strictement nommés “Horaire 2017” & “Instruction”
Pour traiter les infos du fichier “Horaire 2017 dans le fichier Instruction” et vu le nombre de lignes je suis passé par du VBA.
Voici le code de la macro associée au bouton “Go” de la feuille “Instruction”
Sub Importe()
Application.ScreenUpdating = False
On Error GoTo MsgErreurs
'Importation des données du fichier Horaire 2017.xlsm dans le fichier Instruction.xlsm
Sheets("Importe").Select
Windows("Horaire 2017.xlsm").Activate
Sheets("Horaire 2017").Select
Columns("A:G").Select
Selection.Copy
Range("A1").Select
Windows("Instruction.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Range("A1").Select
'Création dans le "Gestionnaire de noms" de la liste des dates
Range("B1").Select
ActiveWorkbook.Names.Add Name:="DATE_DE_DÉPART", RefersToR1C1:= _
"=OFFSET(Importe!R2C2,,,COUNTA(Importe!C2)-1)"
'Copie de la formule de B12 jusqu'à la dernière ligne vide si il y a une valeur dans la colonne "A"
Sheets("Instruction").Select
Range("B12").Select
ActiveCell.FormulaArray = _
"=IF(IFERROR(INDEX(Importe!C3,SMALL(IF(DATE_DE_DÉPART=R5C4,ROW(DATE_DE_DÉPART)),ROW(R[-11]C[-1]))),"""")=0,"""",IFERROR(INDEX(Importe!C3,SMALL(IF(DATE_DE_DÉPART=R5C4,ROW(DATE_DE_DÉPART)),ROW(R[-11]C[-1]))),""""))"
Selection.AutoFill Destination:=Range("B12:B" & Range("A65536").End(xlUp).Row)
'Copie de la formule de H12 jusqu'à la dernière ligne vide si il y a une valeur dans la colonne "A"
Sheets("Instruction").Select
Range("H12").Select
ActiveCell.FormulaArray = _
"=IF(IFERROR(INDEX(Importe!C4,SMALL(IF(DATE_DE_DÉPART=R5C4,ROW(DATE_DE_DÉPART)),ROW(R[-11]C[-1]))),"""")=0,"""",IFERROR(INDEX(Importe!C4,SMALL(IF(DATE_DE_DÉPART=R5C4,ROW(DATE_DE_DÉPART)),ROW(R[-11]C[-1]))),""""))"
Selection.AutoFill Destination:=Range("H12:H" & Range("A65536").End(xlUp).Row)
Exit Sub
MsgErreurs:
MsgBox "Le fichier Horaire 2017" & Fichier & " n'est pas ouvert"
Sheets("Instruction").Select
End Sub
Fonctionnement de la macro:
Dans le fichier “Instruction” il faut que la feuille “Importe” existe, donc il ne faut pas la supprimer.
IMPORTANT: il faut d’abord ouvrir le fichier “Horaire 2017”, puis le fichier “Instruction” et cliquer sur le bouton “Go”
Que se passe t-il ? et bien si les 2 fichiers sont ouverts, l’action sur “Go” va copier la feuille “Horaire 2017” dans la feuille “Importe” du fichier “Instruction”, puis va créer dans le “Gestionnaire de noms” la liste des dates de la feuille "Importe"en fonction de la date en “D5”, et si il y a des valeurs dans la colonne “A” a partir de “A12”, on écrit dans “B12” et “H12” jusqu’à la dernière ligne non vide de la colonne “A” les 2 formules suivantes:
=SI(SIERREUR(INDEX(Importe!$C:$C;PETITE.VALEUR(SI(DATE_DE_DÉPART=$D$5;LIGNE(DATE_DE_DÉPART));LIGNE(A1)));"")=0;"";SIERREUR(INDEX(Importe!$C:$C;PETITE.VALEUR(SI(DATE_DE_DÉPART=$D$5;LIGNE(DATE_DE_DÉPART));LIGNE(A1)));""))
=SI(SIERREUR(INDEX(Importe!$D:$D;PETITE.VALEUR(SI(DATE_DE_DÉPART=$D$5;LIGNE(DATE_DE_DÉPART));LIGNE(G1)));"")=0;"";SIERREUR(INDEX(Importe!$D:$D;PETITE.VALEUR(SI(DATE_DE_DÉPART=$D$5;LIGNE(DATE_DE_DÉPART));LIGNE(G1)));""))
Nous obtenons alors la liste des “Destinations” et la liste des “Transporteurs”.
Si le fichier “Horaire 2017” n’a pas été ouvert alors on affiche un message “Le fichier Horaire 2017 n’est pas ouvert”.
Tu trouveras ci-joint les 2 fichiers:
Fichier “Horaire 2017” ICI==> Horaire 2017.xlsm (126,8 Ko)
Fichier “Instruction” ICI==> Instruction.xlsm (29,0 Ko)
Pour rappel: Mettre les 2 fichiers dans un seul Dossier
Voila, regarde tous ça et dit moi !
Cordialement.