IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Crée macro pour enregistrer en fichier .csv


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut Crée macro pour enregistrer en fichier .csv
    Bonjour, je suis un débutant en macro vb excel et je cherche à faire plusieurs choses...

    En effet, je voudrais pouvoir crée une macro excel qui m'enregistre un fichier xls en csv, il doit aussi ajouter une colonne au début et supprimer les accents et espace de ma première ligne.

    Pour enregistrer en csv, j'ai un peu magouiller et j'arrive à faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     Sub SaveAsCSV()
    Dim Range As Object, Line As Object, Cell As Object
    ' Définition de la conversion
     
    Dim StrTemp As String
    Dim Separateur As String
    Dim Nom As String, Rep
      With ActiveWorkbook
        Nom = .Name
        If .Path <> "" Then Nom = Left$(Nom, InStr(1, Nom, ".") - 1)
      End With
      Rep = Application.GetSaveAsFilename(Nom, "Fichier CSV,*.csv")
        Separateur = ";"
     
        Set Range = ActiveSheet.UsedRange
        Open Rep For Output As #1
     
        For Each Line In Range.Rows
            sansAccents (A1)
            StrTemp = ""
            For Each Cell In Line.Cells
     
                StrTemp = StrTemp & CStr _
                    (Cell.Text) & Separateur
     
            Next
            Print #1, StrTemp
        Next
     
        Close
    Mais je n'arrive pas à insérer une colonne en A1 en écrivant quelquechose (par exemple "test") avant de convertir, et j'ai également des soucis pour la correction des accents même si j'ai trouvé quelque chose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
      Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
        Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"
     
         ' La fonction :
     
         Private Function sansAccents(ByRef s As String) As String
         Dim i As Integer
         Dim lettre As String * 1
         sansAccents = s
         For i = 1 To Len(accent)
         lettre = Mid$(accent, i, 1)
         If InStr(sansAccents, lettre) > 0 Then
         sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
         End If
         Next i
         End Function
    Mais je ne vois pas trés bien comment appliquer tout cela en une et une seule macro... si quelqu'un pourrait m'éclairer..

    je vous remercie d'avance

    bonne journée

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Vois si ceci te convient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub SaveCSV()
        Dim Plage As Range, Cell As Range
        Set Plage = Range("A1").CurrentRegion
     
        'il doit aussi ajouter une colonne au début
        Range("A:A").Insert xlShiftToRight
     
        'Mais je n'arrive pas à insérer une colonne en A1 en écrivant quelquechose
        '(par exemple "test") avant de convertir
        Plage.Columns(1).Offset(0, -1).Value = "Test"
     
        For Each Cell In Plage.Rows(1).Cells 'Parcours la ligne de titre
            'et j'ai également des soucis pour la correction des accents
            'même si j'ai trouvé quelque chose:
            Cell.Value = SuppAccentsEspace(Cell.Value)
        Next
     
        'enregistre la feuille au format csv dans le repertoire courant
        Dim Sh As Worksheet
        Set Sh = ActiveSheet
        Sh.SaveAs Sh.Name, xlCSV
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Function SuppAccentsEspace(chaine As String) As String
        'Les espaces sont remplaces par "_"
        Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc_"
        Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç "
        Dim i As Long, z As Long
        For i = 1 To Len(chaine)
            z = InStr(1, accent, Mid(chaine, i, 1))
            If z > 0 Then Mid(chaine, i, 1) = Mid(noAccent, z, 1)
        Next
        SuppAccentsEspace = chaine
    End Function
    Cordialement,

    Tirex28/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    Merci Tirex28, c'est tout bon, j'ai juste effectuer quelques modifications sur l'enregistrement, mais autrement tu m'as bien aidé, merci beaucoup, bonne journée

    jonki

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro pour enregistrer sous / nom du fichier
    Par vinzu dans le forum VBA Word
    Réponses: 12
    Dernier message: 05/11/2014, 18h19
  2. [XL-2013] Une macro pour enregistrer un fichier excel en pdf
    Par petchy dans le forum Excel
    Réponses: 5
    Dernier message: 29/03/2014, 12h45
  3. [WD-2010] Macro pour Enregistrer des fichiers .mht en fichiers .htm
    Par christian.combeau dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/03/2013, 20h32
  4. Réponses: 9
    Dernier message: 04/02/2013, 13h45
  5. [XL-2002] Macros pour enregistrer le fichier
    Par minimoack dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2013, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo