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 :

excel to csv


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 1
    Par défaut excel to csv
    Bonjour,
    je cherche une macro ou un prog pour implementer un fichier type csv via des tableaux excel càd prendre des valeurs des tableaux et les integrer au fichier csv
    merci par avance

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Quelle rapport avec .NET :

    A mon avis aucun, alors je déplace

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    En tout cas, sur le forum Visual Basic, ça a été donné tellement de fois que j'ai arrêté de compter...
    Fais une petite recherche, et tu trouveras ce que tu cherches.

  4. #4
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Salut,

    La réponse se trouve sur le forum alors ya plus qu'à faire une recherche avancée.

    Voilà l'adresse http://www.developpez.net/forums/search.php

    Bonne continuation

    Théo

  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
    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
    Sub CréerFichierInserTxt()
    Dim i, j, DernièreLigne, DernièreColonne
        Application.ScreenUpdating = False
        ActiveSheet.Range("A1").Select
        Selection.CurrentRegion.Select
        Set tbl = ActiveCell.CurrentRegion
        DernièreLigne = tbl.Rows.Count
        DernièreColonne = tbl.Columns.Count
        Cells(1, 1).Select
        Open "p:\InserComplété.txt" For Output As #1
        For i = 1 To DernièreLigne
            For j = 1 To DernièreColonne - 1
                Print #1, Cells(i, j).Formula + ";";
            Next j
            Print #1, Cells(i, j + 1).Formula
        Next i
        Close #1
    End Sub
    Tu adaptes à tes besoins
    Print #1, Cells(i, j).Formula + ";";
    place un ; comme séparateur et
    Print #1, Cells(i, j + 1).Formula
    provoque un saut de ligne en fin de ligne Excel

    A+

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    J'ai un peu modifié ton code ouskel'n'or
    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
     
    Sub CréerFichiercsv()
    Dim i, j, DernièreDansLigne, DernièreDansColonne
    Dim tbl
        Application.ScreenUpdating = False
        ActiveSheet.Range("A1").Select
        Selection.CurrentRegion.Select
        Set tbl = ActiveCell.CurrentRegion
        DernièreDansLigne = tbl.Rows.Count
        DernièreDansColonne = tbl.Columns.Count
        Cells(1, 1).Select
        Open "C:\MonFichier.csv" For Output As #1
            For i = 1 To DernièreDansLigne
                For j = 1 To DernièreDansColonne
                  Print #1, Cells(i, j).Formula & ",";
            Next j
        Print #1, Cells(i, j + 1).Formula
    Next i
    Close #1
       Application.ScreenUpdating = True
    End Sub
    jpleroisse

  7. #7
    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
    Hello, leroissejp

    Tu as tous les droits...

    Mais si j'avais à modifier mon code aujourd'hui, j'utiliserais une autre syntaxe pour déterminer la dernière colonne ou la dernière ligne... parce que s'il y a des colonnes ou des lignes vides dans la feuille Excel, avec ce code, on est marron.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DernièreLigne = Range("A65535").End(xlUp).Row
    DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1
    à la place de

    ActiveSheet.Range("A1").Select
    Selection.CurrentRegion.Select
    Set tbl = ActiveCell.CurrentRegion
    DernièreDansLigne = tbl.Rows.Count
    DernièreDansColonne = tbl.Columns.Count
    Pas toi ?

    A+

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonsoir,
    D'accord avec toi ouskel'n'or.

    jpleroisse

  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
    Salut leroissejp,

    Tu as vu une réponse de redzorro, toi ?
    Qu'est-ce qu'on fait ? On lui envoie un mp pour lui dire qu'on a répondu ?

  10. #10
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par ouskel'n'or
    Salut leroissejp,

    Tu as vu une réponse de redzorro, toi ?
    Qu'est-ce qu'on fait ? On lui envoie un mp pour lui dire qu'on a répondu ?
    Salut,

    Je ne pense pas qu'il répondra ...

    Il a du trouver une solution et il ne le dit pas comme d'hab (cf ton sondage ouskel'n'or)

    +

    Théo

  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
    Non, parce que s'il a fait ce que j'ai mis, il y a une erreur... là :

    DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1

  12. #12
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Tu "pièges" ton code, maintenant, Ousk ?

  13. #13
    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
    Non, en fait il n'y a pas d'erreur dans la rédaction du code lui-même, mais comme ça, et quand on sait ce qu'on veut, ça donne pas ce qu'on veut...
    Mais rassure-toi, j'ai corrigé mon code.

    Ça t'intéresse ?

    A+

  14. #14
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Allez, poste toujours.
    Ça ne fait jamais de mal de voir un bout de code bien écrit.
    Et comme ça, si Redzero réussit à se rappeler l'adresse du forum sur lequel il a posé la question, et qu'il revient jeter un coup d'oeil à la solution, il sera content...

  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
    Il faut d'abord que je précise l'objet de ma réflexion...
    J'ai supposé une feuille de calcul pouvant posséder des colonnes vides. Malheureusement, ça existe aussi...
    Donc au lieu de mettre

    DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1
    Tu dois sélectionner toutes les cellules
    et ce n'est qu'ensuite que tu peux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DernièreColonne = Selection.SpecialCells(xlCellTypeLastCell).Column
    Si tu ne sélectionnes pas, ça marche pas
    Mais tu devrais aussi pouvoir mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DernièreColonne = Range(Cells(1, 1), Cells(65535, 256)).SpecialCells(xlCellTypeLastCell).Column
    ... enfin, je pense...

    Maintenant, pour la dernière ligne, c'est pareil ! Il y a une erreur là :
    DernièreLigne = Range("A65535").End(xlUp).Row


    Ça t'intéresse aussi ?

  16. #16
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ouiiiiiiiiiiiiii !

  17. #17
    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
    Ah ! Je me disais bien...

    Là, je n'ai rien trouvé qui puisse me donner la dernière ligne si un ligne plus une colonne, ou plusieurs lignes et/ou plusieurs colonnes étaient vides...
    Alors j'ai réfléchi et me suis dit : Il existe peut-être une solution mais... je ne la connais pas !
    Donc, à la place de
    DernièreLigne = Range("A65535").End(xlUp).Row
    qui ne marche pas, j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Marge = 10
        For i = 1 To 256
            For j = 1 To 65535
                If Range(Cells(j, i), Cells(65535, i)).End(xlUp).Row > DernièreLigne Then
                    DernièreLigne = Range(Cells(j, i), Cells(65535, i)).End(xlUp).Row
                End If
                If j > DernièreLigne + Marge Then Exit For
            Next j
        Next i
    Au delà de 10 lignes successives également vides, ça marche plus. Il faut changer "Marge"
    Et là ça marche. seulement là, faut pas oublier de déclarer Marge !

    Si tu as une autre solution, je suis preneur. Et puis comme ça, redzero aura une meilleure réponse aux questions qu'on se pose...

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Par défaut
    Salut salut,

    Moi, pour obtenir la dernière ligne et la dernière colonne d'un fichier excel, qui peut contenir de lignes et de colonnes vides, je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    derniere_ligne = ActiveCell.SpecialCells(xlLastCell).Row
    derniere_colonne = ActiveCell.SpecialCells(xlLastCell).Column
    Si ça vous interesse, j'ai un petit programme qui transforme un fichier xls en csv en prenant en paramètre les chemin des fichiers xls et csv...

  19. #19
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Bizarrement, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SpecialCells(xlLastCell)
    ne "marche" pas toujours. Une fois sur deux, il m'indique une cellule vide. Bon, c'est toujours un majorant, ce qui suffit en général, mais j'avoue que je n'ai jamais trop su pourquoi il faisait ça, et en général, je ne m'en sers pas.

  20. #20
    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
    Non, désolé...
    derniere_ligne = ActiveCell.SpecialCells(xlLastCell).Row
    ne marche pas si la colonne sélectionnée n'est pas celle où le nombre de lignes renseignées est le plus élevé
    et
    derniere_colonne = ActiveCell.SpecialCells(xlLastCell).Column
    Ne marche pas si la ligne sélectionnée n'est pas celle possédant le plus grand nombre de colonnes renseignées

    Mon hypothèse de départ était que dans la plage de données il y avait des colonnes ou des lignes complètement VIDES
    Faut lire !

    Pour les colonnes, c'est réglé
    Restent les lignes

    Mais attendons Bbill ou AlainTech ou Théo ou jp ou... tout autre érudit en la matière...

    A+

Discussions similaires

  1. Importfichier excel ou csv
    Par milou_et dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/08/2006, 16h56
  2. [VBA Excel] ouverture CSV (séparateur , ou ;)
    Par SDE10 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/07/2006, 19h32
  3. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08
  4. conversion de fichier Excel en csv ,
    Par bounette dans le forum Excel
    Réponses: 2
    Dernier message: 26/01/2005, 08h42
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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