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 :

[VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 733
    Points : 1 119
    Points
    1 119
    Par défaut [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    voilà j'ai un fichier txt(ou d'une extension farfelue mais respectant une structure régulière) une macro Excel permet de faire une mise en forme de ce fichier. Je souhaite faire la même chose mais au travers de VB6.

    VB6 indique à la macro ou se trouve le fichier a traiter. excel effectue bien la macro sur le fichier. jusqu'a là tout va bien.

    Mais lorsque je veux effectuer sous VB6 l'enregistrer du resultat sous un fichier excel alors là ce ne fait pas du tout ce que je veux.

    ce que je veux : -enregistrer le resultat de la macro dans un classeur excel
    -si le classeur resultant existe deja l'écraser par le nouveau
    -fermer le fichier Txt sans le modifier
    -fermer excel

    ce que ca me fait actuelemnt : -créer bien le fichier xls mais ne met rien dedans
    -me sort la fenetre de la confirmation d'écrasement
    -me sort la fenetre a propos de l'enregistrement des modifications du fichier txt

    voici le code dans vb 6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Dim app As New Excel.Application
            app.Visible = True
            Dim wb As Workbook
           Set wb = app.Workbooks.Open(ComDiaMacro.FileName)
            app.Run cmbMacro.Text, ComDiaSource.FileName
            wb.SaveCopyAs tbDesti.Text
            wb.Close
            app.Quit
    voicile code de la macro
    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
        Workbooks.OpenText FileName:=chemin, Origin:=xlWindows, _
            StartRow:=1, DataType:=Excel.XlTextParsingType.xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=True, OtherChar:="$", FieldInfo:=Array(Array(1, 1 _
            ), Array(2, 1), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), Array(7, 2), Array(8, 2), _
            Array(9, 2), Array(10, 2), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
            , 1), Array(16, 1), Array(17, 1), Array(18, 1))
        Selection.AutoFilter
        Selection.AutoFilter Field:=1, Criteria1:="1"
        Range("A1:Q854").Select
        Selection.Copy
        Sheets("ep53").Select
        Sheets.Add
        Range("A1").Select
    ....
    merci d'avance.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 733
    Points : 1 119
    Points
    1 119
    Par défaut
    j'ai pu résoudreune partie de mon probleme avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wbRes As Workbook
           Set wb = app.Workbooks.Open(ComDiaMacro.FileName)
            app.Run cmbMacro.Text, ComDiaSource.FileName
            Set wbRes = app.Workbooks("ep53")
    je n'avais pas fait gaffe que Excel ouvrait un workbook pour .xls contenant mes macro et un autre pour le fichier qu'il traitrer. Dans le code précédant il enregistrer le .xls contenant la macro et non pas le nouveau workbook.

    il me reste le probleme d'ecrasement qui reste. je pensais que ceci suffisait mais cela ne fonctionne que si le fichier a créer n'existe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbRes.SaveAs FileName:=tbDesti.Text, FileFormat:=xlExcel5, ConflictResolution:=XlSaveConflictResolution.xlLocalSessionChanges
    malgré le paramètre de conflictrésolution, cela ne fonctionne pas j'ai toujours un le probleme de la fenetre de confirmation.
    Une idée?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 733
    Points : 1 119
    Points
    1 119
    Par défaut
    je m'auto répond encore une fois:
    voici une solution a mon problème que je poste pour la prosperité ()
    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
        If cmbMacro.Text <> "" Then 'combo contenant les macros
            Dim app As New Excel.Application 'on ouvre excel et 2 workbooks
            app.Visible = False
            Dim wbMacro As Workbook 'workbook contenant la macro
            Dim wbRes As Workbook 'workbook contenant le resultat de la macro
           Set wb = app.Workbooks.Open(ComDiaMacro.FileName) 'on ouvre le classeur conteant la macro
            app.Run cmbMacro.Text, ComDiaSource.FileName 'on execute la macro
            Set wbRes = app.Workbooks(recupnom(ComDiaSource.FileName)) 'on récupère le workbook créer
            If Dir(ComDiaDesti.FileName, vbHidden) <> "" Then 'on verifie l'existence du fichier de destination
                Kill ComDiaDesti.FileName 'on detruit l'ancien
            End If
            wbRes.SaveAs FileName:=tbDesti.Text, FileFormat:=xlExcel5 'on enregistre le nouveau
            wb.Close 'on ferme le tout
            wbRes.Close (False) 'on dit qu'on enregistre pas les modifs du fichiers sources
            app.Quit
        End If

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

Discussions similaires

  1. Comment en VBA modifier un fichier texte sans l'ouvrir dans Excel ?
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2008, 13h54
  2. VBA - Excel / Lecture fichier texte
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2007, 13h27
  3. [VBA-E] enregistrer un classeur excel depuis un autre classeur
    Par roseau dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/03/2007, 15h15
  4. [VBA-E] Export de Excel vers fichier texte
    Par lipaika dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2007, 09h57
  5. [VBA] Ouvrir plusieurs fichiers textes depuis Excel
    Par Stephane_123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/12/2006, 17h45

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