Re,
Attention ! j'ai renommé l'onglet " SE" par "SE" (un espace avant en trop). Puis, dans cet onglet, j'ai supprimé les cellules dans les colonne A à H. À vérifier donc...
le code :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set OS = Worksheets("DEPENSES") 'définit l'onglet source OS
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
For I = 6 To DL 'boucle des lignes 6 à DL
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Worksheets(OS.Cells(I, "A").Value) 'définit l'onglet de destination OD (génère une erreur si cet onglet n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
MsgBox "L'onglet " & OS.Cells(I, "A").Value & " n'existe pas !" 'message
OS.Activate 'active l'onglet source
OS.Cells(I, "A").Select 'sélectionne la cellule qui pose problème
Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
If OS.Cells(I, "A").Font.Bold = False Then 'condition : si la cellule de la boucle en colonne A n'est pas en gras
OS.Cells(I, "A").Font.Bold = True 'met du gras dans la cellule (pour éviter qu'elle soit prise en compte lors du prochain lancement de la macro)
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
OS.Cells(I, "A").Resize(1, 8).Copy DEST 'cipie les 8 premieres colonne de la cellule de la boucle et les colle dans dest
End If 'fin de la contition
Next I 'prochaine cellule de la boucle
End Sub
Ça risque d'être un peu long quand le tableau de l'onglet DEPENSES va devenir conséquent...