Bonsoir Paris, bonsoir le forum,
Essaie comme ça :
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim NP As Byte 'déclare la variable NP (Nombre de Points)
Dim NC As String 'déclare la variable NC (Nom du Classeur)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeur)
Set CS = ThisWorkbook 'définit le classeur source CS
CA = CS.Path & "\" 'définit le chemin d'accès CA
NP = UBound(Split(CS.Name, ".")) 'définit le nombre de points (.) NP qu'il y a dans le nom du classeur source (normalement un seul)
NC = Split(CS.Name, ".")(NP - 1) ''définit le nom du classeur NC sans l'extension
Set OS = Worksheets("Copier") 'définit l'onglet source OS (à adapter éventuellement)
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = UBound(TV, 1) To 2 Step -1 'boucle inversée de la dernière ligne du tableau des valeurs à la ligne 2
'si le nombre de valeurs dans les 20 premières colonnes de la ligne est égal à 0, supprime la ligne
If Application.WorksheetFunction.CountA(OS.Cells(I, "A").Resize(1, 20)) = 0 Then OS.Rows(I).Delete
Next I 'procaine ligne de la boucle
CS.SaveAs CA & NC, FileFormat:=6 'enregistre le fichier au format CSV dans le même dossier et avec le même nom que le classeur source
ActiveWorkbook.Close False 'ferme le fichier CSV
End Sub
Le fichier CSV se trouve dans le même dossier que le fichier original et porte le même nom...