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 :

ouvrir avec un script un fichier csv dans Excel 2010 et le modifier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut ouvrir avec un script un fichier csv dans Excel 2010 et le modifier
    Bonjour,

    J'ai besoin d'ouvrir un fichier .csv dans Excel 2010 qui n'a jamais le même nom (je souhaite donc le rechercher dans une liste)
    Ce fichier csv est la base au format xml mais je n'arrive pas à l'ouvrir, c'est pour cela que je le met en csv.
    L'idée est donc ensuite de modifier le csv mais je bloque déjà pour charger le csv par le script.

    Je joint le fichier excel dans lequel j'ai injecté une macro que j'ai trouvé sur des forum.
    J'ai une erreur que je ne comprend pas: erreur de compilation, Type efini par l'utilisateur non défini.
    importer csv excel.xlsm
    222ACW0831540.xml

    Quelqu'un peut il m'aider svp?

    Merci
    Salutations

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Prend le temps de lire les règles du site concernant les fichiers joints, entre autres.
    Comme je n'ouvre pas de fichiers contenant des macros, est-ce que tu peux mettre le bout de code qui fait défaut (en utilisant le bouton # pour le formater) et dire où est-ce que ça plante ?
    MPi²

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci pour votre retour,
    Veuillez m'excuser c'est la première fois que je viens sur un site d'entre aide de dévelopement...
    Ci-dessous le code que j'ai dans Excel (dans un module), il bloque au Private sub (il me semble) avec "Dim FSO As Scripting.FileSystemObject" qui est grisé.

    Merci

    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
    ' Sous VBE cocher référence Microsoft Scripting Runtime
    Option Explicit
     
    Sub Lecture()
    Dim fichier As Variant
        ChDir ThisWorkbook.Path
        fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
        If fichier <> False Then Lire fichier
    End Sub
     
     
    Private Sub Lire(ByVal sNomFichier As String)
    Dim s As String
    Dim FSO As Scripting.FileSystemObject
    Dim fichier As Scripting.TextStream
    Dim iRowS As Long, iRowD As Long, iCol As Long
    Dim Ar() As String
    Dim i As Long
    Const Separateur As String * 1 = ","
     
        Worksheets("Samedi").Cells.Clear
        Worksheets("Dimanche").Cells.Clear
     
        Application.ScreenUpdating = False
     
        Set FSO = New Scripting.FileSystemObject
        Set fichier = FSO.GetFile(sNomFichier).OpenAsTextStream(ForReading)
     
        iRowS = 0: iRowD = 0
        Do While Not fichier.AtEndOfStream
            iCol = 1
            s = fichier.ReadLine
            Ar = Split(s, Separateur)
            Select Case Ar(5)
                Case "Samedi"
                    iRowS = iRowS + 1
                    For i = LBound(Ar) To UBound(Ar)
                        Worksheets("Samedi").Cells(iRowS, iCol) = Ar(i)
                        iCol = iCol + 1
                    Next i
                Case "Dimanche"
                    iRowD = iRowD + 1
                    For i = LBound(Ar) To UBound(Ar)
                        Worksheets("Dimanche").Cells(iRowD, iCol) = Ar(i)
                        iCol = iCol + 1
                    Next i
            End Select
        Loop
        fichier.Close
     
        Set fichier = Nothing
        Set FSO = Nothing
     
        Application.ScreenUpdating = True
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    As-tu créé une référence au scripting object ?

    Sinon, va dans le menu Outils / Références (dans VBA)
    Recherche Microsoft Scripting Runtime et coche la boîte
    Ça devrait régler ce problème
    MPi²

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Merci
    Ok,
    Merci j'ai bien coché cette case.

    Par contre, l'objectif est d'écrire le csv dans excel dans le but de le retravailler et là rien ne s'écris...
    J'avais récupéré ce code sur un forum pour aller chercher le csv dans un fichier mais la suite ne concerne pas le projet...

    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
     
    ' Sous VBE cocher référence Microsoft Scripting Runtime
    Option Explicit
     
    Sub Lecture()
    Dim fichier As Variant
        ChDir ThisWorkbook.Path
        fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
        If fichier <> False Then Lire fichier
    End Sub
     
     
    Private Sub Lire(ByVal sNomFichier As String)
    Dim s As String
    Dim FSO As Scripting.FileSystemObject
    Dim fichier As Scripting.TextStream
    Dim iRowS As Long, iRowD As Long, iCol As Long
    Dim Ar() As String
    Dim i As Long
    Const Separateur As String * 1 = ","
     
    '    Worksheets("Samedi").Cells.Clear
     '   Worksheets("Dimanche").Cells.Clear
     
    '    Application.ScreenUpdating = False
     
     '   Set FSO = New Scripting.FileSystemObject
      '  Set fichier = FSO.GetFile(sNomFichier).OpenAsTextStream(ForReading)
     
       ' iRowS = 0: iRowD = 0
        'Do While Not fichier.AtEndOfStream
         '   iCol = 1
          '  s = fichier.ReadLine
           ' Ar = Split(s, Separateur)
            'Select Case Ar(5)
             '   Case "Samedi"
              '      iRowS = iRowS + 1
               '     For i = LBound(Ar) To UBound(Ar)
                '        Worksheets("Samedi").Cells(iRowS, iCol) = Ar(i)
                 '       iCol = iCol + 1
                  '  Next i
                'Case "Dimanche"
                 '   iRowD = iRowD + 1
                  '  For i = LBound(Ar) To UBound(Ar)
                   '     Worksheets("Dimanche").Cells(iRowD, iCol) = Ar(i)
                    '    iCol = iCol + 1
                    'Next i
           ' End Select
        'Loop
    '    fichier.Close
     
        Set fichier = Nothing
        Set FSO = Nothing
     
        Application.ScreenUpdating = True
    End Sub

    Avez vous une astuce pour écrire le csv dans Excel.

    Merci
    Salutations

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tu peux l'ouvrir comme si c'était un classeur Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open "Chemin et nom du fichier .csv", local:=True
    À ce moment-là tu te retrouves avec 2 classeurs.
    En utilisant des variables Workbook, tu pourras travailler dans l'un ou l'autre.
    Sinon, utiliser ActiveWorkbook (ton csv à l'écran) et ThisWorkbook (le classeur avec macros)
    MPi²

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    un fichier csv est un fichier texte avec des séparateurs comme par exemple " ", TAB, ";" ...
    donc pour gérer des fichiers texte tu as ce tuto

    http://warin.developpez.com/access/fichiers/

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ok ca marche,
    Merci pour votre aide.

    Je poursuit mon cde et reviens vers vous si besoins.

    Merci

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Erreur de compilation Microsoft VBScript
    Re-Bonjour,

    Pour lancer le script, on me demande de le l'ouvrir depuis E3 (un logiciel qui lit des scrit en VB).
    Donc j'ai placé le script dans un fichier .vbs avec notepad++.
    Mais quand je lance le script, il ne m'ouvre pas la recherche du csv et me met le message d'erreur: Erreur de compilation Microsoft VBScript.

    Je ne sais pas du tout ce qui peux bloquer.
    Avez vous une idée?
    Merci
    Salutations

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je ne sais pas ce qu'est E3 à part une cellule en Excel...

    Si le code démarre d'un script vbs à l'extérieur d'Excel, il te faudrait utiliser des objets Excel:
    Excel.Application 'pour créer une instance d'Excel
    Workbook
    Worksheet
    ...

    Si tu fais une recherche sur CreateObject("Excel.Application"), tu devrais trouver des exemples.
    MPi²

  11. #11
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Si tu as des souscis d'ouverture de fichier utilise les FileDialogs qui marche très bien sur VBA et VBS

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut ouverture xml
    Bonjour,

    Afin d'ouvrir directement fichier XML sans passer par le CSV, nous avons tenté ce code mais pas myen d'écrire le xml.

    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
     
    ' Sous VBE cocher référence Microsoft Scripting Runtime
    Option Explicit
     
    Sub Lecture()
    Dim fichier As Variant
    Dim Faisceau As Variant
    Dim Variable As Variant
     
     
        ChDir ThisWorkbook.Path
        fichier = Application.GetOpenFilename("Fichier XML (*.xml), *.xml")
        If fichier <> False Then
     
        With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & fichier, Destion:=Range("A1"))
     
        End With
        End If
        'Workbooks.OpenXML Filename:=fichier
     
     
        '.OpenXML fichier, local:=True
     
    End Sub
    Avez vous une idée svp?

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Destion ?
    With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & fichier, Destion:=Range("A1"))
    MPi²

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci pour ton retour

    OOOps,

    Destination plutôt...

    Je l'ai modifié dans le script ce qui retire l'erreur mais rien ne s'écris pour autant.

    salutations

    bonjour,

    Après analyse, je pense qu'Excel ouvre quelque chose mais ne l'écris pas.
    Y a t'il une atuce pour cela svp?

    Merci
    Salutations

    Bonjour,
    Pour résumer la situation ;
    Le script ci dessus est mis dans visual Basic.
    Le but étant d'ouvrir un XML.
    Mais je n'y arrive pas, même en manuel, en faisant un import de fichier xml, il y a une erreur.
    Y a-t-il des interdits ?
    Excel 2010?
    Merci Salutations

Discussions similaires

  1. [XL-2010] Conversion d'un fichier csv dans excel 2010
    Par Yvette dans le forum Excel
    Réponses: 5
    Dernier message: 10/02/2014, 15h36
  2. Ouvrir un fichier csv dans excel
    Par judavid dans le forum VBScript
    Réponses: 5
    Dernier message: 17/03/2009, 19h01
  3. Ouvrir un fichier csv dans excel via access
    Par NELAIN dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/02/2009, 15h15
  4. Réponses: 1
    Dernier message: 29/04/2008, 12h54
  5. problème avec un telechargement d'un .csv dans Excel
    Par olosta dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/05/2006, 03h29

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