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 :

Changer le séparateur d'un fichier csv depuis VB5


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut Changer le séparateur d'un fichier csv depuis VB5
    J'ai le même soucis, je souhaite pouvoir changer le séparateur d'un fichier csv que j'ouvre avec mon prog sous VB5, en virgule ou point virgule..
    J'ai essayé la deuxième solution de Théocourant mais VB5 ne connait pas le receplace()..
    C'est la première fois que j'essaie de gérer des ouverture de fichier .csv, donc désolé de mes lacunes..
    Merci d'avance de votre aide

  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
    Points : 15 546
    Points
    15 546
    Par défaut
    Regarde , tu as une solution qui fonctionne avec VBA 97 et une autre avec VBA 2003. Une fois ouvert avec le séparateur qu'il contient, tu peux l'enregistrer en csv. En txt, tu auras tab comme séparateur.
    A+

    Edit
    Regarde si depuis VB5 tu peux utiliser la foonction Excel "Substitute" qui te permettrait de remplacer un séparateur par un autre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    J'ai regardé ce que tu m'as indiqué. J'avais vu ce post pendant mes recherches mais je m'étais obstinée sur une autre solution..
    Donc je l'ai repris et c'est impeccable! Donc je te remercie beaucoup te ton aide..Du coup ce que je souhaite faire maintenant c'est retransformer le .txt en .csv à la fermeture de l'application. Juste au passage, comment puis-je savoir que mon application est fermée pour pouvoir ensuite renommer le fichier?

  4. #4
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Montre-moi ton code d'appel, je te montrerai celui de fermeture Je me marre mais je suis sérieux
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    Tu as le droit de te marrer!! Je ne maîtrise vraiment pas ce genre de chose . Et c'est très sympa de ta part de prendre du temps pour aider une novice..

    Donc voici l'ouverture de mon fichier

    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
     
    Private Sub Visu_fichier_Click()
     
    Dim fichiersave As String
    Dim fichier As String
    Dim otime As Single
     
     
    fichier = Mid(fichier_VIDAGE, 1, Len(fichier_VIDAGE) - 4) 'fichier_vidage est le ".csv"
     
    fichier = fichier & ".txt"
     
    Name fichier_VIDAGE As fichier
     
     
    fichiersave = App.Path + "\" + adresse_expl + ".AH" + "\" + fichier
     
    Set appExcel = CreateObject("Excel.Application")
     
     
    If Option1.Value = True Then
        Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Comma:=True
    Else
        Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    End If
     
    appExcel.Visible = True
    C'est donc après cette ligne que je souhaite tester si le fichier est fermé (boucle d'attente), si c'est le cas je le renomme en .csv et ensuite je termine le processus EXCEL.EXE..Comme ça il peut aller le consulter hors programme et l'ouvrir directement en format excel. Le programme lui, continue de tourner.
    Voilà, Voilà..

  6. #6
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Je ne comprends pas, tu veux le fermer sans l'enregistrer sous un autre format ?

    Une autre question : Depuis VB5, tu ouvres le fichier sans instancier le fichier ?
    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    Si si, je souhaite l'enregistrer en .csv, comme ça l'utilisateur peux l'ouvrir directement sous excel en allant l'ouvrir depuis son emplacement sur le PC...
    Ce que je fais, en gros, je vide la mémoire d'un appareil dans un fichier .csv.
    Ce fichier est sauvegardé dans le PC, et je donne à l'utilisateur la possibilité de visualiser le fichier en l'ouvrant via le programme en VB (grâce à l'aide que tu m'as donné hier..) jusque là donc ça marche..Le programme ouvre le fichier en format .txt, et je souhaite renommé le .txt en .csv une fois que l'utilisateur a fermé le fichier...Comme ça l'utilisateur n'aura que des fichiers .csv dans ces archives d'enregistrements..
    Donc je souhaite savoir à quel moment l'utilisateur ferme le fichier, pour pouvoir le renommé..
    C'est peut-être un peu tordu, ou je manque cruellement de vocabulaire technique....(ou un peu des deux )

  8. #8
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok. Le problème qui se pose est que la procédure se poursuit après avoir ouvert le csv. D'où la question, qui ferme le csv après l'avoir consulté, et comment (manuellement, je pense) auquel cas j'ai une solution un peu tordue à te proposer. Elle consiste à écrire du code dans l'événement Before close du csv, ce code lançant une macro du fichier principal qui, après une tempo pour laisser le temps au csv de se fermer sans enregistrement, renommerait le txt en csv.
    Est-ce que ça te semble jouable ?
    A+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    C'est l'utilisateur qui ferme le fichier manuellement...
    Et oui ta solution me semble jouable.

  10. #10
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok.
    A placer dans un module standard du classeur principal (celui qui ouvre le csv - rebaptisé txt )
    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
    Sub EcrireDansThisWorkbook()
    Dim i, NomFich, x As Long
    NomFich = ActiveWorkbook.name
    ClasseurPrincipal = ThisWorkbook.Name 'à adapter
        For i = 1 To Application.VBE.VBProjects.Count
            If InStr(Application.VBE.VBProjects(i).Filename, NomFich) <> 0 Then
                For Each LeModule In Application.VBE.VBProjects(i).VBComponents
                    If LeModule.Name = "ThisWorkbook" Then
                        x = LeModule.CodeModule.CountOfLines
                        LeModule.CodeModule.InsertLines x + 1, "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
                        LeModule.CodeModule.InsertLines x + 2, "    Application.Run """ & ClasseurPrincipal & "!Tempo"""
                        LeModule.CodeModule.InsertLines x + 3, "End sub"
                    End If
                Next
            End If
        Next i
    End Sub
    
    Sub Tempo()
        Application.OnTime Now + TimeValue("00:00:02"), "RenommerCSV"
    End Sub
    
    Sub RenommerCSV()
        Name "D:\xls\Liste pour fusion.txt" As "D:\xls\Liste pour fusion.csv"End Sub
    La macro EcrireDansThisWorkbook doit être lancée après ouverture du .txt (la ligne suivant l'ouverture) voir PS
    A la fermeture du txt, la macro placée par le code dans Thisworkbook du txt lancera la macro Tempo. Après deux secondes, la macro RenommerCSV s'exécutera.
    Pour le moment le nom du txt est en dur mais je regarde pour mettre le nom en paramètre. Ce n'est qu'une question de secondes...
    Le problème qui reste, est double. Si l'opérateur enregistre le txt au moment de la fermeture, il va avoir un tas de questions. Je regarde afin qu'il n'en ait pas et que la question ne lui soit même pas posée.
    Le second pb... si je règle le premier, il n'y a pas de second problème
    A+

    NB - On peut simplifier le code de EcrireDansThisWorkbook mais on verra plus tard. L'avantage de celui-ci étant que quelque soit le nom du txt, la macro retrouve ses petits...

    PS - Pour que tout se passe normalement, le txt doit impérativement être ouvert pour que cette ligne donne un résulta exact
    NomFich = ActiveWorkbook.name
    ActiveWorkbook doit être le txt.
    ThisWorkbook doit être le classeur contenant ces macros

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    Merci de ton code...
    Dans la boucle For each Lemodule... je ne vois pas ce qu'est leModule??

    Voici l'ouverture du fichier
    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
    
    Public appExcel As Excel.Application 'Application Excel
    Public wbExcel As Excel.Workbook 'Classeur Excel
    Public wsExcel As Excel.Worksheet 'Feuille Excel
    
    
    Private Sub Visu_fichier_Click()
    
    fichier = Mid(fichier_VIDAGE, 1, Len(fichier_VIDAGE) - 4)
    fichier = fichier & ".txt"
    
    Name fichier_VIDAGE As fichier
    fichiersave = App.Path + "\" + adresse_expl + ".AH" + "\" + fichier
    
    Set appExcel = CreateObject("Excel.Application")
    
    If Option1.Value = True Then
       Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Comma:=True
    Else
        Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    End If
    
    Set wbExcel = appExcel.ActiveWorkbook
    appExcel.Visible = True
    Call EcrireDansThisWorkbook
    
    end sub
    
    Sub EcrireDansThisWorkbook()
    
    Dim i, NomFich, x As Long
    NomFich = ActiveWorkbook.Name
        wbExcel = ThisWorkbook.Name 'j'ai une erreur à ce moment là
        For i = 1 To Application.VBE.VBProjects.Count
            If InStr(Application.VBE.VBProjects(i).filename, NomFich) <> 0 Then
                For Each LeModule In Application.VBE.VBProjects(i).VBComponents
                    If LeModule.Name = "ThisWorkbook" Then
                        x = LeModule.CodeModule.CountOfLines
                        LeModule.CodeModule.InsertLines x + 1, "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
                        LeModule.CodeModule.InsertLines x + 2, "    Application.Run """ & ClasseurPrincipal & "!Tempo"""
                        LeModule.CodeModule.InsertLines x + 3, "End sub"
                    End If
                Next
            End If
        Next i
    End Sub
    comme je l'ai indiqué dans le code, j'ai une erreur:"La méthode thisworkbook de l'objet global a échouée" arrivé à la ligne en rouge.. Au fait, merci de ta patience

  12. #12
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    ClasseurPrincipal = ThisWorkbook.Name 'à adapter
    Où places-tu ta macro ? Cette macro, c'est bien dans un module standard d'un classeur.xls que tu la mets ?
    Pour les paramètres, ça fonctionne. Finalement je n'ai pas utilisé application.ontime, car si la syntaxe fournie par la FAQ fonctionne pour une fonction, je n'ai pas réussi à la faire tourner pour uns simple sub. Or, le principe étant de fermer le fichier qui fait appel à cette sub, si c'était une fonction on aurait un bug.
    Bref, ça fonctionne mais j'attends de tes nouvelles quant à mes deux questions.
    A+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    On va dire que j'ai rien compris..
    la macro je l'ai mise dans un module de VB ...(là t'as le droit de te marrer et de te prendre la tête dans les mains..)
    Si je comprend bien j'aurai du enregistrer la macro dans le classeur.xls qui ouvre mon csv (rassure toi je ne suis pas informaticienne). je t'avoue que je n'ai jamais travaillé avec des macros..Est-ce que cela veut dire que chaque classeur xls ouvrant un de mes fichier csv devra avoir cette macro?? mon prog génère des fichiers csv différents à chaque fois (leur nom contient la date et l'heure)..Est-ce que la macro devra être installée sur chaque PC sur lequel mon prog tournera? Si c'est le cas je ne sais pas si je vais pouvoir utiliser ta solution.
    Comme je n'arrivais pas à faire marcher ta solution, j'ai réfléchis également de mon côté...
    j'ai récupéré un morceau de prog qui liste les applications du gestionnaire de tâche. Une fois le fichier txt ouvert, je regarderai dans la liste des applications si il est toujours présent (vérif toutes les secondes)..Une fois disparu de la liste, je renomme le fichier.txt en csv...Je pense que ta solution est nettement plus évoluée mais comme je ne suis pas sure de pouvoir la mettre en oeuvre..Ma solution te semble t-elle correcte?

  14. #14
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par Manue
    Ma solution te semble t-elle correcte?
    Un peu utiliser un char d'assaut pour écraser une mouche mais oui, pourquoi pas ? Je fais souvent ça quand je ne m'en sors pas
    Tu devrais avoir une autre solution consistant à interrompre ta procédure dans VB (c'est un peu ce que tu fais en simulant un test sous interruption) mais tu peux sans doute faire ça en plaçant un simple msgbox "Frapper [Entrée]" à l'intention de l'opérateur. En principe, Excel et le txt devrait s'ouvrir en premier plan, ton msgbox serait visible à la fermeture d'Excel. Par contre, à la place ou en plus de appExcel.Visible = True, j'ajouterais appExcel.activate après ouverture du txt.
    Si l'idée du msgbox ne te plait pas, tu peux te replier vers un userform, le résultat est le même.
    Ceci dit, merci, j'ai cherché une partie de l'après-midi comment passer un paramètre à Application.OnTime...
    Bon, maintenant, avec l'aide de tout le forum mais surtout celle de Pierre Fauconnier, j'y suis parvenu. J'aurai au moins appris quelque chose.
    Tiens-nous au courant, il sera intéressant de savoir si le msgbox est une bonne idée depuis VB
    A+

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    Je vais essayer ton idée de msgbox, c'est moins barbare que lire le contenu du gestionnaire de tâche toutes les secondes..
    je culpabilise de t'avoir gâché ton après midi, mais si tu as appris des trucs alors je mes ens un tout petit peu mieux ..
    Moi j'ai appris pas mal de choses et surtout une dose de vocabulaire dont je manque cruellement pour être un peu plus efficace dans mes explications.. Je te tiens au courant de mes avancées, passes une bonne journée et encore merci

  16. #16
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par manue22 Voir le message
    je culpabilise de t'avoir gâché ton après midi, mais si tu as appris des trucs alors je mes sens un tout petit peu mieux ..
    Pas de soucis, je repeins mon appart. Le forum, c'est mes "pauses"

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    J'ai un petit soucis que je n'arrive pas à résoudre..
    Après l'ouverture d'un fichier csv (.txt) via mon prog, je le ferme (avec la croix), ma message box est visible et là je clique sur le "OK" qui m'indique que je peux terminer le processus excel.exe, et après ça impossible de réouvrir un autre fichier.csv via mon prog, j'ai une erreur:
    "Erreur d'execution -2147023174 (800706ba), Erreur automation".
    Si au contraire à la fermeture de mon fichier.csv, je choisit de ne pas terminer le processus EXCEL.EXE, et que j'essaie a nouveau d'ouvrir un fichier.csv, l'application Excel se lance mes sans ouvrir de classeur...

    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
     
    Public appexcel As Excel.Application 'Application Excel
    Public wbexcel As Excel.Workbook 'Classeur Excel
    Public wsExcel As Excel.Worksheet 'Feuille Excel
     
     
    'ouverture fichier
    Sub Ouvrirfichier()
     
    Dim r As Integer
     
    fichier = Mid(fichier_VIDAGE, 1, Len(fichier_VIDAGE) - 4)
    fichier = fichier & ".txt"
     
    Name App.Path & "\" & adresse_expl & ".AH" & "\" & fichier_VIDAGE As App.Path & "\" & adresse_expl & ".AH" & "\" & fichier
    fichiersave = App.Path & "\" & adresse_expl & ".AH" & "\" & fichier
     
    Set appexcel = CreateObject("Excel.Application")
     
    If Choix.Option1.Value = True Then
       Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Comma:=True
    Else
        Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    End If
     
    Set wbexcel = appexcel.ActiveWorkbook
     
    fileclosed = False
     
    appexcel.Visible = True
     
    end sub
     
    sub fermeture_fichier()
     
    appexcel.Quit
    Set appexcel = Nothing
    Set wbexcel = Nothing
     
    Call Listing_process        'liste des process en cours et Kill process EXCEL.EXE
     
    end sub
    Si quelqu'un a une idée de la source de ma/ mes erreurs? L'erreur se produit à la ligne Workbooks.opentext....dans le "if" du "ouvrirfichier".
    Merci

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    J'ai résolu mon problème de l'erreur automation, donc ne pas tenir compte de mon précédent message...
    J'ai trouvé la réponse sur le site de microsoft:
    http://support.microsoft.com/kb/189618/fr

    il fallait que je rajoute la variable objet de excel (pour moi: appexcel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    appexcel.Workbooks.OpenText filename:=fichiersave, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Comma:=True
    Donc mes problèmes sont, je pense, tous résolus. J'ai utilisé la msg box à la fermeture de mon fichier (simple et bonne idée) et donc plus de farfouillage dans le gestionnaire de tâche, juste un kill process pour pouvoir ouvrir d'autre fichiers excel alors que mon prog tourne...
    Donc spécial merci à ouskel'nor et à bientôt sur le forum.
    En attendant j'essaierai d'aider les gens qui ont de tous tous petits soucis VB (a la hauteur de mes connaissances)..

    Bonne soirée

    Manue

  19. #19
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Hi hi ! Tu avais la réponse dans la FAQ ou dans Contribuez. Pas sur l'erreur mais sur la manière de quitter Excel
    Mais qu'importe le moyen pourvu qu'on trouve...
    Tu en es où ?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    Ce n'était pas ma manière pour fermer excel qui posait soucis c'était à l'ouverture. Je m'étais basée sur ce que j'avais trouvé dans un tutoriel VB:
    http://drq.developpez.com/vb/tutoriels/Excel/Chapitre2/

    sur cette partie de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
     
    'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
    'Ouverture d'un fichier Excel
    Workbooks.OpenText Filename:= "C:\MonFichierTexte.txt", Origin:=xlWindows, _
    StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
    Set wbExcel=appExcel.ActiveWorkbook
    Set wsExcel=wbExcel.ActiveSheet

    Si je ne faisais pas référence à appexcel à l'ouverture:

    appexcel.workbooks.OpenText....

    après il m'était impossible de réouvrir un fichier .csv avec mon programme..
    J'ai regardé le lien que tu as donné, et si je comprend bien dans ce cas c'est le code qui ferme le fichier excel mais moi dans mon cas je voulais que ce soit l'utilisateur...mais j'ai peut-être pas compris ce que tu voulais me montrer avec ce morceau de code ( ce qui est fort probable..).. Tu faisais référence à mon erreur automation ou à mon histoire de détection de la fermeture du fichier??
    Pour l'instant j'ai réussi à faire ce que je voulais faire, quand l'utilisateur ferme le fichier.csv (txt) je n'ai plus de demande d'enregistrement de fichier (j'ai rajouté la ligne: "appexcel.displayalerts=false"..et j'ai une msgbox qui apparait et permet la fermeture du processus excel...
    Donc ça fonctionne comme je le souhaitais..

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

Discussions similaires

  1. [CSV] Enregistrer un fichier CSV depuis un site
    Par -Neo- dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2008, 23h04
  2. Réponses: 2
    Dernier message: 16/07/2008, 22h32
  3. [CSV] Créer un fichier csv depuis php
    Par jbidou88 dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2007, 17h41
  4. [CSV] Détecter le séparateur pour les fichiers CSV
    Par JavaEli dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2005, 23h42
  5. [Excel] séparateur pour les fichiers csv
    Par drinkmilk dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2005, 14h21

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