Sub ventilation()
Dim F11 As Integer, F1 As Integer, F2 As Integer, i As Long, COL As Integer, couleur As Variant
Range("B4:AH100").Clear 'efface toute la plage, valeur,mise en forme, bordure,cellules fusionnées
ActiveWindow.FreezePanes = False 'desactive les cellules figées, ligne de 1 à 4
Application.ScreenUpdating = False 'desactive la mise à jour écran
Application.EnableEvents = False 'desactivé pour éviter le risque d'avoir une boucle sans fin d'action et de réaction.
Application.DisplayAlerts = False 'desactive les alertes windows, par exemple lors d'une fusion de deux cellules avec valeurs
F11 = Sheets(1).index 'stocke dans la variable F11 la position de la 1re feuille du classeur
F1 = ActiveSheet.index 'stocke dans la variable F1 la position de la feuille active
If F1 > F11 Then ' si f1 est plus grand que f11 alors
F2 = F1 - 1 'stocke la position de la feuille précédente de F1
End If
li = Sheets(F1).Cells(36000, 1).End(xlUp).Row ' dernière ligne avec valeurs de la 1re colonne de la feuille F1
ligne = Sheets(F2).Cells(36000, 2).End(xlUp).Row ' dernière ligne avec valeurs de la 2ᵉ colonne de la feuille F2
For COL = 2 To 35 'boucle sur colonne de 2 à 35 pour la feuille F1
For i = 4 To li 'boucle sur ligne de 4 à la fin pour la feuille F1
For i2 = 4 To ligne 'boucle sur ligne de 4 à la fin pour la feuille F2
If Sheets(F1).Cells(3, COL) = Sheets(F2).Cells(i2, 4) Then 'test sur l'activité
If Sheets(F1).Cells(i, 1) < Sheets(F2).Cells(i2, 6) Then 'test sur l'heure de fin
If Sheets(F1).Cells(i, 1) >= Sheets(F2).Cells(i2, 5) Then 'test sur l'heure de début
Sheets(F1).Cells(i, COL) = Sheets(F2).Cells(i2, 3) 'renvoie la colonne 3
Sheets(F1).Cells(i, COL).Interior.Color = Sheets(F2).Cells(i2, 3).Interior.Color 'récupère la couleur cellule
Sheets(F1).Cells(i, COL).Font.Color = Sheets(F2).Cells(i2, 3).Font.Color 'récupère la couleur police
If Sheets(F1).Cells(i, COL) = Sheets(F1).Cells(i - 1, COL) Then Sheets(F1).Range(Cells(i, COL), Cells(i - 1, COL)).Merge 'fusionne avec la cellule précédente
If Sheets(F1).Cells(i, COL) = Sheets(F1).Cells(i - 2, COL) Then Sheets(F1).Range(Cells(i, COL), Cells(i - 2, COL)).Merge ' si plage cellule fusionne toute la plage
End If
End If
End If
Next
Next
Next
Call bordure 'exécute la macro bordure, bordure autour des cellules de la plage obligatoire, car l'instruction .clear en début de macro à effacée toutes les lignes
Call centre 'exécute la macro centre, écriture au centre de la cellule, nécessaire, car l'instruction .clear en début de macro à annuler cette disposition
Application.ScreenUpdating = True 'active la mise à jour de l'écran
Application.EnableEvents = True 'active les événements comme l'activation d'une feuille, une procédure double clic etc
Application.DisplayAlerts = True 'active les alertes Windows comme lors d'une fusion de deux cellules avec valeurs.
Range("A4").Select
ActiveWindow.FreezePanes = True 'fige les lignes de 1 à 4
End Sub