Private Sub CommandButton1_Click()
Dim S As Object 'déclare la variable S (onglet Source)
Dim PC As Object 'déclare la variable PC (onglet Petit Compte)
Dim GC As Object 'déclare la variable GC (onglet Grand Compte)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
ActiveCell.Select 'enlève le focus au bouton
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set S = Sheets("Base déclaré restitué ") 'définit l'onglet S [ATTENTION ! IL Y A UN ESPACE À LA FIN DANS TON FICHIER EXEMPLE]
Set PC = Sheets("déclaré restitué petit cpte ") 'définit l'onglet PC [ATTENTION ! IL Y A UN ESPACE À LA FIN DANS TON FICHIER EXEMPLE]
Set GC = Sheets("déclaré restitué grand cpte") 'définit l'onglet GC
'condition : si "oui" au message
If MsgBox("Voulez-vous effacer les anciennes données des onglets Petits et Grands Comptes ?", vbYesNo) = vbYes Then
    PC.Range("B12:H47").ClearContents 'efface les anciennes données de l'onglet Petit Compte
    GC.Range("B12:H47").ClearContents 'efface les anciennes données de l'onglet Grand Compte
End If 'fin de la condition
DL = S.Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée DL de á colonne 3 (=C) de l'onglet S
Set PL = S.Range("C12:C" & DL) 'définit la palge PL
For Each CEL In PL 'boucle sur toutes les cellule CEL de la palge PL
    If Len(CEL.Value) > 7 Then 'condition : si le nombre de caractères de la cellule CEL est supérieur à 7
        Set DEST = PC.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    Else 'sinon
        Set DEST = GC.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    End If 'fin de la condition
    CEL.Offset(0, -1).Resize(1, 6).Copy
    DEST.PasteSpecial (xlPasteValues) 'copie la cellule CEL redimensionnée à 6 colonnes et la colle dans DEST
Next CEL 'prochaine cellule de la boucle
Application.CutCopyMode = False 'supprime le clignotement des celllues copiées
S.Range("B12:H" * Application.Rows.Count).ClearContents 'efface le contenue des données de l'onglet S
PC.Select 'sélectionne l'onglet PC
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False 'imprime l'onglet
GC.Select 'sélectionne l'onglet GC
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False 'imprime l'onglet
S.Select 'sélectionne l'onglet S (vierge)
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub