Sub MajDonnées()
sheets("RESULTAT").unprotect, password:="Quicksland")
Dim WBOrigine As Workbook
Dim WBDest As Workbook
Dim WSOrigine As Worksheet
Dim WSDest As Worksheet
Dim TabData() As Variant
Dim fin, i, j As Long
Dim NomEcole As String
Dim Jour As Date
Set WBDest = ActiveWorkbook 'fichier actif
Set WBOrigine = Workbooks("Effectifs Réels par point de livraison.xlsx") 'le fichier est ouvert
Set WSOrigine = WBOrigine.Sheets("A") 'la feuille de données DOIT s'appeler "A"
Set WSDest = WBDest.Sheets("RESULTAT") 'la feuille de résultat
With WSOrigine 'dans le fichier origine
fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne NON vide de la colonne A
Jour = .Range("C2") 'on récupère le jour
TabData = .Range("A5:O" & fin).Value 'on place toutes les données dans un tableau vba (plus rapide pour le traitement ensuite)
End With
With WSDest 'dans la feuille de résultat
.Range("A4") = Jour 'on colle le jour
fin = .Range("B" & .Rows.Count).End(xlUp).Row 'dernière ligne NON vide de la colonne B
For i = 8 To fin 'pour chaque ligne
NomEcole = Trim(.Range("B" & i)) 'on récupère le nom de l'école en enlevant tous les espaces qui trainent
For j = LBound(TabData, 1) To UBound(TabData, 1) - 1 'pour chaque ligne du tableau
If TabData(j, 1) Like "*" & NomEcole And TabData(j + 1, 1) = "Total" Then 'on cherche la ligne qui contient le nom de l'école avec le mot "Total" en dessous
.Range("D" & i) = TabData(j + 1, 10) 'on récupère la valeur
Exit For 'pas besoin de continuer à parcourir le tableau
End If
Next j
Next i
End With
sheets("RESULTAT").unprotect, password:="Quicksland")
End Sub