Sub ExportToCSV()
    Dim ws As Worksheet
    Dim LastRow As Long
    Dim LastCol As Long
    Dim StartCell As Range
    Dim rng As Range
    Dim csvData As String
    Dim fileName As String
    Dim sPathFile As String
    Dim rw As Range
    Dim cell As Range
    Dim cellValue As Variant
    Dim cellFormula As String
    Dim visibleCol As Long
    
    ' Spécifiez le nom de la feuille de calcul ici
    Set ws = ThisWorkbook.Sheets("BU BIO-001 (2)")

    ' Spécifiez la cellule de départ pour la plage de données
    Set StartCell = ws.Range("A10")

    ' Trouver la dernière ligne et la dernière colonne avec des données dans la feuille
    LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
    LastCol = ws.Cells(StartCell.Row, ws.Columns.Count).End(xlToLeft).Column

    ' Trouver la 9ème colonne visible
    For visibleCol = 9 To ws.Columns.Count
        If Not ws.Columns(visibleCol).Hidden Then
            Exit For
        End If
    Next visibleCol

    ' Définir la plage de données en se déplaçant vers le bas à partir de la cellule de départ
    Set rng = ws.Range(StartCell, ws.Cells(LastRow, LastCol))

    ' Loop through each row in the range
    For Each rw In rng.Rows
        ' Vérifier si la colonne 9 (I dans la feuille Excel) de la ligne actuelle a une valeur
        cellValue = rw.Cells(1, visibleCol).Value
        ' If the first cell in the ninth column is not empty, convert the whole row
        If Not IsEmpty(cellValue) And Not rw.Cells(1, visibleCol).HasFormula Then
            ' Si la colonne 9 a une valeur et n'a pas de formule, ajoutez les données de la ligne à la chaîne CSV
            For Each cell In rw.Cells
                ' Vérifiez si la cellule est visible avant de l'ajouter à la chaîne CSV
                If Not cell.EntireColumn.Hidden Then
                    csvData = csvData & cell.Value & ";"
                End If
            Next cell
            csvData = csvData & vbCrLf
        End If
    Next rw

    ' Utilisez la valeur de la cellule U1 comme nom de fichier
    fileName = ws.Range("U1").Value

    ' Si la valeur de U1 est vide, affichez un message d'erreur et quittez la macro
    If fileName = "" Then
        MsgBox "Le nom de fichier est vide. Veuillez entrer un nom valide dans la cellule U1.", vbExclamation
        Exit Sub
    End If

    ' Ajoutez l'extension ".csv" au nom du fichier
    fileName = fileName & ".csv"

    ' Définir le chemin complet du fichier sur le bureau
    sPathFile = Environ("USERPROFILE") & "\Desktop\" & fileName

    ' Enregistrez les données CSV dans un fichier sur le bureau
    Open sPathFile For Output As #1
    Print #1, csvData
    Close #1

    ' Afficher un message de confirmation
    MsgBox "Le fichier " & fileName & " a été créé avec succès.", vbInformation
End Sub

