Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 02/07/2008, 09h57   #1 (permalink)
Invité régulier
 
Date d'inscription: février 2007
Messages: 15
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 :
 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 :
 
  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
jonki est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 11h43   #2 (permalink)
Membre éprouvé
 
Date d'inscription: mai 2007
Messages: 496
Par défaut

Bonjour,

Vois si ceci te convient:

Code :
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 :
 
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/
tirex28 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2008, 14h24   #3 (permalink)
Invité régulier
 
Date d'inscription: février 2007
Messages: 15
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
jonki est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide