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 :

fichier enregistré en csv illisible avec WordPad


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut fichier enregistré en csv illisible avec WordPad
    Bonjour à tous,

    j'ai un code qui m'exporte mes données d'Access à Excel (merci à Starec et au tuto de caféine!!!)..mais je veux maintenant enregistrer mon fichier au format csv...
    enregistrement ok
    j'ouvre le fichier avec Excel..pas de virgules mais c'est lisible on se croirait dans un fichier xls habituel.
    je l'ouvre avec WordPad...
    j'obtiens un magnifique ensemble de hiérogliphes du plus bel effet !

    quelq'un pourrait-il m'aider s'il-vous-plait?
    je ne vois vraiment pas ce qui ne va pas...
    qu'est-ce que je peux faire de plus que d'enregistrer mon fichier au format csv?

    merci d'avance pour votre aide

    cordialement

    schwarzy2

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Tu
    qu'est-ce que je peux faire de plus que d'enregistrer mon fichier au format csv?
    Enregistrer ton fichier au format Texte

  3. #3
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Enregistrer ton fichier au format Texte
    ben non ça marche pas j'obtiens les mêmes hiérogliphes...
    mais c'est un peu logique vu que mon code ,c'est ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim xlBook As Excel.Workbook
    Set xlBook = xlApp.Workbooks.Add
    xlBook.SaveAs "C:\Documents and Settings\Bureau\Feuille.txt"

    et Feuille.csv ne marche pas...

    du coup je ne vois pas quoi faire...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as crée ton fichier CSV à partir d'Access ou de Excel ?

    Il faudrait que tu nous montres le code que tu utilises, il se peut qu'il y'ait un paramètre que ne convient pas
    J'ai trés peu généré de CSV, car j'en avais pas besoin. Mais je suis sûr que l'on va trouver le truc.

    Starec

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as essayé en paramettrant ta sauvegarde ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        xlBook.SaveAs Filename:="D:\xls\Classeur5.txt", FileFormat:=xlText

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par schwarzy2 Voir le message
    mais je veux maintenant enregistrer mon fichier au format csv...
    Pour enregistrer au format csv, il ne suffit pas de changer l'extension du fichier.
    As-tu essayé de le faire dans Excel "à la main" en ayant lancé l'enregistreur de macro?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Par défaut
    Perso pour enregistrer CSV je le fais de la façon suivante (méthode trouvée sur le net mais je ne sais plus où (désolé pour le copyright ) :

    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
    31
    32
    33
    34
    35
    36
     
    Sub EnregistrerCSV()
        Dim Nom As String
        Dim Rep As Variant
     
        With ActiveWorkbook
            Nom = .Name
            If .Path <> "" Then
                Nom = Left$(Nom, InStr(1, Nom, ".") - 1)
            End If
        End With
     
        Rep = Application.GetSaveAsFilename("mon_fichier", "Fichier CSV,*.csv")
        If Rep <> False Then
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False
     
            Sheets("ma_feuille").Visible = xlSheetVisible
     
            Sheets("ma_feuille").Copy
            ActiveWorkbook.SaveAs Rep, xlTextWindows
     
            Workbooks.OpenText Rep
            Cells.Replace vbTab, ";", xlPart
            ActiveWorkbook.SaveAs Rep, xlTextWindows
     
            ActiveWorkbook.Close False
     
            Sheets("ma_feuille").Visible = xlSheetVeryHidden
     
            Application.DisplayAlerts = True
            Application.ScreenUpdating = True
     
            MsgBox "Export terminé avec succès !", vbInformation + vbOKOnly, "Information"
        End If
    End Sub
    Edit: Ici je raffiche ma feuille et je la recache, c'est pour le besoin de mon appli mais ça peut être supprimé.

  8. #8
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    merci pour votre aide ,j'ai essayé toutes vos réponses....mais je dois m'y prendre come un pied parce que ça ne donne rien.

    alors pour répondre à AlainTech j'ai essayé la macro d'excel, oui j'obtiens bien ce que je veux ... mais je le veux par code pas exigeant avec ça!

    pour ta méthode Ouskel'n'or, j'ai essayé mais ça ne marche pas, j'obtiens un fichier que je peux effectivement ouvrir avec MFC WordPad mais les séparations entre les champs sont des espaces et non des virgules...

    et enfin pour le code d'asxasx,j'ai essayé mais là encore...eh bien j'ai un message qui me demande de confirmer l'enregistrement,et un message ok mais après je ne réussis pas à retrouver le fichier à l'emplacement où il devrait être...., alors voilà mon code ,si quelqu'un avait une idée brillante?!

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    Function TransfertExcelAutomation()
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim I As Long, J As Long
        Dim t0 As Long, t1 As Long
        Dim Nom As String
        Dim Rep As Variant
     
        t0 = Timer
        Dim rec As Recordset
        Dim rec2 As Recordset
     
        Set rec2 = CurrentDb.OpenRecordset("DERNIERS", dbOpenSnapshot)
        Set rec = CurrentDb.OpenRecordset("DISTINCT_PREMIERS", dbOpenSnapshot)
     
        'Initialisations
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
     
        'Ajouter une feuille de calcul
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "livraison"
     
        ' recopie des données à partir de la ligne 1
        I = 1
        Do While Not rec.EOF
            For J = 0 To rec.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
                If rec.Fields(J).Type = dbText Then
                    xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
                Else
                    xlSheet.Cells(I, J + 1) = rec.Fields(J)
                End If
            Next J
            I = I + 1
            rec.MoveNext
        Loop
     
        ' recopie des données à partir de la ligne 2
        I = 2
        Do While Not rec2.EOF
            For J = 0 To rec2.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
                If rec2.Fields(J).Type = dbText Then
                    xlSheet.Cells(I, J + 1) = "'" & rec2.Fields(J)
                Else
                    xlSheet.Cells(I, J + 1) = rec2.Fields(J)
                End If
            Next J
            I = I + 1
            rec2.MoveNext
        Loop
     
        With ActiveWorkbook
            Nom = .Name
            If .Path <> "" Then
                Nom = Left$(Nom, InStr(1, Nom, ".") - 1)
            End If
        End With
     
        ' code de fermeture et libération des objets
        xlBook.SaveAs "C:\Documents and Settings\Administrateur.DOMAVIATEC\Bureau\Feuille.xls"
        Rep = xlApp.GetSaveAsFilename("mon_fichier", "Fichier CSV,*.csv")
        If Rep <> False Then
        c = MsgBox("ok")
        End If    
        xlApp.Quit
        rec.Close
        rec2.Close
        Set rec = Nothing
        Set rec2 = Nothing
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
        t1 = Timer
        Debug.Print I & " enregistrements", Format(t1 - t0, "0") & " secondes"
     
    End Function
    en tout cas merci pour votre aide à tous!!!

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour enregistrer ton fichier en Csv, essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Chemin = "D:\Tes documents\"
    ActiveWorkbook.SaveAs Filename:=Chemin  & "TonFichier.csv", FileFormat:= _
            xlCSV
    Tout droit sorti d'une macro en faisant.
    Pour l'ouvrir il faudra modifier l'extension en .txt et utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Workbooks.OpenText FilenameChemin  & "TonFichier.txt", DataType:=xlDelimited, Other:=True, Semicolon:=True, Tab:=False
    En effet, quand tu enregistre la macro pour ouvrir un csv, ce code ne fonctionne pas avec VBA (V2003)
    pour modifier l'extension, regarde à Name, dans l'aide. N'oublie pas d'ajouter le chemin

    Si ça ne fonctionne pas, tu enregistres ton fichier en fichier Texte, séparateur tabulation.
    Par contre pour l'ouvrir, le séparateur étant Tabulation, la syntaxe est différente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.OpenText Filename:=Chemin & "TonFichier.txt", DataType:=xlDelimited, Other:=False, Tab:=True
    L'aide à Save t'en dira plus sur la syntaxe complète mais celle-ci devrait suffire.
    Je t'ai mis les paramètres à modifier, tu peux supprimer tous les autres par défaut. Ils ne servent pas ici.
    Bonne chance

    PS - Je n'ai pas regardé ton code plus avant mais pourquoi copies-tu tes données ligne par ligne ?

  10. #10
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut forcer format cellule en date
    merci pour ton code Ouskel'n'or, j'obtiens effectivement maintenant un fichier en csv ....mais j'ai toujours des problèmes:
    _le texte comprend des caractères bizarres dont je voudrais me débarrasser(des petits carrés)
    _je ne réussis pas à imposer le format de mes cellules Excel en date(j'ai pourtant mis le code pour!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                If rec2.Fields(J).Type = dbDate Then
                'code pour obtenir les dates au bon format
                xlSheet.Cells(I, J + 1).Format = Date
                Else
     
                    xlSheet.Cells(I, J + 1) = rec.Fields(J)
             End If
    merci à quiconque voudra bien m'aider à résoudre l'un de mes problèmes, ne serait-ce que par un simple indication de direction de recherche!

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour les petits carrés, c'est un caractère de contrôle, vbcr, vblf, rarament vbcrlf.
    Tu dois les remplacer par "rien" dans toute la feuille
    Ce code devrait permettre de les faire disparaître
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Cells.Replace What:=vblf, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
        Cells.Replace What:=vbcr, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
    Si tu as un pb avec les valeurs formatées avec un espace, tu détermines les colonnes concernées et tu supprimes les espaces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Columns(NoCol).Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
    Pour les dates, c'est un peu plus compliqué.
    Quel format ces dates ont-elles dans Excel, une fois le txt ouvert ?
    Quel format veux-tu obtenir ?
    Tu peux essayer de formater la colonne ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns("B:B").NumberFormat = "dd/mm/yy;@"
    Mais tu peux être obligé de les formater ligne par ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NoCol = ta colonne date
    For NoLigne = 1 to derniereligne
        Cells(NoLigne, NoCol).value = Format(val(cdate(Cells(NoLigne, NoCol).value)), "dd/mm/yyyy")
    Next
    Tout ça sans filet, je n'ai pas le temps de tester ni les infos pour le faire. Là je suis obligé de te laisser. Teste déjà ça qui est à placer après ouverture de ton fichier sous Excel.
    Bon courage
    A+

  12. #12
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    merci Ouskel'n'or pour ces indications, désolé de ne pas t'avoir répondu plus tôt ,c'est que je n'avais pas encore tout testé, et que d'autres problèmes sont survenus entre temps... je les ai corrigés.
    Grâce à ton aide,j 'ai donc les dates qui fonctionnent, et je vais tester ensuite pour les caractères...
    en tout cas, grand merci!!!!

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Résolu, alors?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  14. #14
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    ben non pas tout à fait c'est pour ça que je ne mets pas résolu, le problème des caractères bizarres (petits carrés,etc.) n'est pas encore résolu,j'ai commencé à faire des tests qui n'ont pas encore réussi.
    je pense finir ça dimanche...du moins je l'espère!
    (je donnerai des nouvelles...)

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour remplacer les "petit carrés", qui sont des caractères de contrôle, tu testes plusieurs caractères : vblf est le plus fréquent dans Excel puisque c'est lui qui renvoie à la ligne dans une cellule. Mais tu as aussi vbcr utilisé dans les msgbox et vbcrlf utilisé dans word pour les sauts de ligne (entre autres)
    Tu testes donc tour à tour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Columns(NoCol).Replace What:=vblf, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
    'puis
        Columns(NoCol).Replace What:=vbcr, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
    'puis
        Columns(NoCol).Replace What:=vbcrlf, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
    et tu prends le bon

  16. #16
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    merci Ouskel'n'or(pratique à écrire ton p'tit nom!!!!!)
    j'ai essayé ton code, et la deuxième ligne fonctionne bien..même si j'avoue ne pas comprendre pourquoi elle me laisse le dernier petit carré?
    mais bon pour le reste ça fonctionnne alors je ne vais pas me plaindre!
    donc merci bien!!!!!et merci aussi à Alain Tech, asxasx, et starec!!

    voilà le code final:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    Function essai()
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim I As Long, J As Long
        Dim Nom As String, p As String
        Dim Rep As Variant
        Dim oqdf As DAO.QueryDef, oqdf2 As DAO.QueryDef
     
        Dim rec As Recordset
        Dim rec2 As Recordset
     
        p = "08CF0587" 'paramètre de mes deux requêtes
        Set oqdf2 = CurrentDb.QueryDefs("DERNIERS")
        oqdf2.Parameters("PN_piece") = p
        Set oqdf = CurrentDb.QueryDefs("DISTINCT_PREMIERS")
        oqdf.Parameters("PN_piece") = p
     
        Set rec2 = oqdf2.OpenRecordset
        Set rec = oqdf.OpenRecordset
     
        'Initialisations
        Set xlApp = New Excel.Application
        Set xlBook = xlApp.Workbooks.Add
     
        'Ajouter une feuille de calcul
        Set xlSheet = xlBook.ActiveSheet
        xlSheet.Name = "livraison"
     
        ' recopie des données de la ligne 1 :entete
        I = 1
            For J = 0 To rec.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
     
                xlSheet.Cells(I, J + 1) = rec.Fields(J)
     
                If rec.Fields(J).Type = dbDate Then
                xlSheet.Cells(I, J + 1).Value = Format((CDate(xlSheet.Cells(I, J + 1).Value)), "yyyymmdd")
                End If
     
            Next J
     
        ' recopie des données à partir de la ligne 2:lignes
        I = 2
        Do While Not rec2.EOF
            For J = 0 To rec2.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
     
                    xlSheet.Cells(I, J + 1) = rec2.Fields(J)
                    If rec2.Fields(J).Type = dbDate Then
                    xlSheet.Cells(I, J + 1).Value = Format((CDate(xlSheet.Cells(I, J + 1).Value)), "yyyymmdd")
                    End If
                    xlSheet.Columns(J + 1).Replace What:=vbCr, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows
     
            Next J
            I = I + 1
            rec2.MoveNext
        Loop
     
        ' code de fermeture et libération des objets
        xlBook.SaveAs Filename:="C:\Documents and Settings\Bureau\commande.csv", FileFormat:= _
            xlCSV
        xlApp.Quit
        rec.Close
        rec2.Close
        Set rec = Nothing
        Set rec2 = Nothing
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
    End Function

  17. #17
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut suppression messages
    euh, en fait, j'ai crié victoire un peu vite......je dois à chaque fois répondre à 12 messages avant d'obtenir mon fichier Excel, ce qui n'est pas très fonctionnel!
    J'ai 6 messages dus au code pour supprimer les vbcr, quand il ne "sert à rien" j'ai un message, et j'ai les messages dus à l'enregistrement de mon fichier Excel (6 messages là encore)

    Pour supprimer tous ces messages j'ai essayé: DoCmd.SetWarnings False
    mais ça n'a absolument aucun effet!!!! J'obtiens toujours les mêmes 12 messages!
    la parole est aux connaisseurs, si quelqu'un avait une idée brillante?

    (pourquoi est-ce que quand un problème est résolu, il en fait toujours apparaitre un autre?)

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne suis pas certain que ça va supprimer tous les message mais, sur la première ligne de la macro, après les déclaration, mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = False
    Application.displayAlerts que tu repasses à True en fin de macro

    Edit
    Pour le dernier petit carré, écris "vbcr" sur ta feuille de code, sélectionne-le et fais F1. Tu auras tous les caractères qui sont susceptibles de faire un carré

  19. #19
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    super ton code!
    merci Ouskel'n'or!
    ça maaaaaaaaarche!!!!!!!!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/09/2007, 14h25
  2. [CSV] Problème avec un fichier csv
    Par gregal dans le forum Langage
    Réponses: 7
    Dernier message: 13/02/2007, 11h23
  3. Enregistrer un fichier XLS en CSV
    Par Bloodscalp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2006, 11h51
  4. Réponses: 7
    Dernier message: 29/06/2006, 12h33
  5. [CSV] Enregistrer sous? Apres un fichier enregistré
    Par Anakior dans le forum Langage
    Réponses: 12
    Dernier message: 19/12/2005, 13h30

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