Sub mensuel()
    Dim Num_Feuille As Integer
    Dim Ligne_Mensualisation As Long
    Dim Ligne_Feuille_Mois_Actif As Long
    Dim Première_Ligne As Long
        
    ' on identifie le mois actif qui est égal à l'index de la feuille active => feuille 1 = janvier = index 1
    Num_Feuille = ActiveSheet.Index
    
    ' sur la feuille système on vérifie si la mensualisation est déjà faite ou pas : Num_feuille = mois actif décalé d'une ligne vers le bas (+1)
    ' car dans le tableau de la feuille système il y a une entête, donc janvier est en ligne 2 (etc pour les autres mois)
    If Sheets("Système").Cells(Num_Feuille + 1, 4).Value <> "inscrite" Then ' si ce n'est pas encore fait
    
        ' comme on met en place la mensualisation
        ' on enlève la mise à jour de l'écran, la surveillance événementielle, le calcul automatique
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        Application.Calculation = xlManual
        ' on enlève la protection sur les deux feuilles utilisées
        Sheets(Num_Feuille).Unprotect
        Sheets("Mensualisation").Unprotect
      
       ' numéro de ligne de la première donnée du tableau mensualisation
        Ligne_Mensualisation = 4
        
        ' détermination de la première ligne vide de la feuille de suivi mensuel
        Première_Ligne = Cells(Rows.Count, 2).End(xlUp).Row
        
        ' ligne de la feuille du mois en cours est égal à la première ligne vide
        Ligne_Feuille_Mois_Actif = Première_Ligne
        
        ' début de la boucle Do Loop
        Do
        
            ' on test la valeur de la cellule qui se trouve en colonne 2 de la feuille "Mensualisation"
            ' et en ligne 4 (donc Ligne_Mensualisation) de cette même feuille
            ' en faite s'il y a une date = il y a une mensualisation
            If Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 2).Value <> "" Then ' si la cellule est non vide
                ' il y a bien une date mais il faut vérifier s'il y a bien une valeur en fonction du mois où l'on se trouve
                ' ce mois est égal à Num_Feuille et les colonnes mois sont après la colonne 7
                ' et on est toujours sur la ligne 4 (au premier tour de la boucle) c'est à dire Ligne_Mensualisation
                If (Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 7 + Num_Feuille).Value <> "") Then ' si la cellule est non vide
                    
                    ' alors le décalage de la cellule active de la feuille du mois en cours est égal sa valeur + 1 donc au premier tour
                    ' de la boucle à Décal_Ligne_Feuille_Mois_Actif + 1 = 0 + 1 = 1
                    Ligne_Feuille_Mois_Actif = Ligne_Feuille_Mois_Actif + 1 ' on incrémente de 1 le décalage pour le remplissage du suivi de compte du mois en cours de traitement
                    ' ensuite il suffit de recopier les valeurs des colonnes de la feuille "Mensualisation" sur les colonnes correspondantes
                    ' de la feuille du mois en cours
                    
                    ' écriture de la date : la date est en colonne 2 sur les deux feuilles
                    ' en ligne Ligne_Feuille_Mois_Actif
                    ' en ligne Ligne_Mensualisation pour la feuille "Mensualisation"
                 [B]Cells(Ligne_Feuille_Mois_Actif, 2).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 2).Value[/B]
                    
                    
                    
                    
                    ' écriture de l'intitulé Catégorie
                    Cells(Ligne_Feuille_Mois_Actif, 3).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 3).Value
                    ' écriture de l'intitulé Etablissement
                    Cells(Ligne_Feuille_Mois_Actif, 4).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 4).Value
                    ' écriture de l'intitulé Qui/Quoi
                    Cells(Ligne_Feuille_Mois_Actif, 5).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 5).Value
                    ' écriture de l'intitulé Type
                    Cells(Ligne_Feuille_Mois_Actif, 6).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 6).Value
                    ' écriture de la valeur des débits crédits
                    ' ici on teste la colonne 7 de la feuille "Mensualisation" afin de savoir si c'est un débit ou un crédit
                    If Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 7).Value = "Débit" Then ' si c'est un débit
                        Cells(Ligne_Feuille_Mois_Actif, 9).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 7 + Num_Feuille).Value
                    Else
                        Cells(Ligne_Feuille_Mois_Actif, 8).Value = Worksheets("Mensualisation").Cells(Ligne_Mensualisation, 7 + Num_Feuille).Value
                    End If
                End If
            Else ' si la cellule testée est = rien (si pas de date = plus de mensualisation à inscrire)
                ' on sort de la boucle
                Exit Do
            End If
            ' si on arrive à ces lignes c'est qu'il y avait une mensualisation à écrire, alors
            ' on passe, pour les tests de la prochaine boucle, la variable Ligne_Mensualisation à +1 pour tester la ligne suivante de la feuille "Mensualisation"
            Ligne_Mensualisation = Ligne_Mensualisation + 1
        Loop
        
        ' on est sortie de la boucle, on test si on a écrit une mensualité sur la feuille du mois en cours
        ' dans d'autres termes Première_Ligne <> Ligne_Feuille_Mois_Actif
        If Ligne_Feuille_Mois_Actif <> Première_Ligne Then ' on vérifie qu'il y avait au moins une mensualisation pour mettre la valeur du mois en cour de traitement à "inscrite"
            ' on met le valeur de la feuille "Système" à "déjà effectuée" en face du mois concerné (Num_Feuille)
            Sheets("Système").Cells(Num_Feuille + 1, 4).Value = "inscrite"
            
            ' on masque le bouton de mensualisation vu qu'il ne sert plus
            'Call affiche_masque_bouton_mensuel
            
            ' recherche de la première ligne de rentrée de données
            'Call tri_date(Sheets(ActiveSheet.Index).Name)
            ' la variable la_ligne_de_donnee est égal à la première ligne vide du suivi du mois en cours
            la_ligne_de_donnee = Cells(Rows.Count, 2).End(xlUp).Row + 1
        End If
        ' on remet la protection sur les deux feuilles utilisées
        Sheets(Num_Feuille).Protect
        Sheets("Mensualisation").Protect
        
        ' une tout fait on remet à jour les trois événement d'application en marche
        ' on remet la mise à jour de l'écran, la surveillance événementielle, le calcul automatique
        Application.Calculation = xlAutomatic
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub