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