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 :

Modification de la structure à l'ouverture via macro [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut Modification de la structure à l'ouverture via macro
    Bonjour à tous,
    D'habitude je trouve toutes mes solutions sur le site et j'en profite pour vous dire merci, par contre là je sèche.
    Je suis sous Excel 2007 et je télécharge par macro un .zip que je dézippe. Jusque là pas de soucis. C'est à l'ouverture du fichier par macro que ça coince. Il se nomme xxx.xls mais doit avoir un genre de format .csv ou .txt
    Si je l'ouvre à la main, la structure est bonne. Par la macro, il modifie la structure et change le format d'une partie des dates. Bien sûr j'ai essayé la méthode open/opentext avec les attributs local:=true/ plusieurs rang différents/ l'ouvrir et l’enregistrer sous un format xlsx / le renommer en txt pour l'ouvrir avec les delimiters mais ce n'est pas vraiment un vrai txt pour moi.
    Bref, quand je l'ouvre à la main, je filtre la colonne D et là je cherche l'année en cours et le jour en cours. Par la macro, et comme il modifie le format je ne retrouve pas mon jour en cours.
    Si vous avez une idée, je suis preneur. Le fichier zip est ici : http://clients.rte-france.com/servle...let?annee=2018 le .xls est aussi en pièce jointe
    A l'ouverture à la main du .xls, une information dit qu'il n'est pas au bon format etc... mais vous pouvez l'ouvrir sans hésiter
    Ouvrez le via une petite macro du style Workbooks.Open Filename:=mon_dossier & Dir(mon_dossier & "Donne*xls") et constatez

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir,

    Si tu l'ouvres avec l’enregistreur de macro tu obtiens ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
        Workbooks.OpenText Filename:= _
            "C:\DonneesIndisponibilitesProduction_2018.xls", _
            Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
            Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
            , 1), Array(16, 1), Array(17, 1), Array(18, 1)), TrailingMinusNumbers:=True
    End Sub
    Ensuite pour l'ouvrir sans souci il suffit d'utiliser la macro générée.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    Bonsoir,
    Merci pour le retour anasecu.
    Oui le fichier s'ouvre mais il n' a pas le bon format. par exemple en ligne 25 il y a du texte et les les dates sont passées (peut etre pas toutes) au format Américain.
    Si tu l'ouvres à la main, tu verras qu'il n'y a en colonne C par exemple, que des dates.
    Comme s'il y avait un problème de gestion de longueur de caractères des commentaires et que le fait de l'ouvrir via macro faisait des renvois ou des sauts de lignes!?!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    en effet ce n'est pas un xls.
    Essaie en changeant l'extension en .txt avant de l'ouvrir avec excel.
    eric

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    Bonjour,

    J'ai déjà essayé, ce n'est pas concluant ni en .txt, ni en.csv
    J'ai aussi essayé de le réenregistrer en .xlsx par la macro mais rien ni fait.
    Je poursuis donc mon investigation.
    Merci à vous

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    ouvre le txt avec l'enregistreur de macro et à l'étape 3 (ou 2 ?) sur les colonnes date choisis le format Date JMA.
    Ca te mettra le bon 2nd paramètre de FieldInfo:= (, 4 pour JMA) aux champs date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        ChDir "D:\tmp\Téléchargement Chrome"
        Workbooks.OpenText Filename:= _
            "D:\tmp\Téléchargement Chrome\DonneesIndisponibilitesProduction_2018.txt", _
            Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 4), Array(4, 4), Array(5, 4), Array(6, 4), Array(7, 1), Array(8, 1), _
            Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
            , 1), Array(16, 1), Array(17, 1), Array(18, 1)), TrailingMinusNumbers:=True
    End Sub
    eric

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    effectivement l'extension du fichier n'est pas bonne car c'est un simple fichier texte délimité par une tabulation !

    Donc le renommer en .txt puis faire glisser l'icône de ce fichier depuis l'Explorateur Windows vers Excel,
    aucun souci de date de mon côté.

    Évidemment demander à l'auteur de ce fichier d'enregistrer les dates enfin au bon format natif d'Excel : YYYY/MM/DD …

    Sinon ce n'est pas compliqué de lire ligne par ligne le fichier puis de convertir les dates via CDate ou encore FormulaLocal,
    voir les exemples dans les discussions de ce forum.

    Sans compter la fonctionnalité d'Excel d'importation de fichier texte juste en répondant bien à son assistant …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    Merci eriiic pour cette précision, effectivement avec le champ JNA les dates semblent plus cohérentes, néanmoins si je mets un filtre sur la colonne D je ne retrouve pas les dates attendues.
    Je devrais trouver du mois d'avril jusqu'au 13 au moins. Hors le filtre donne des dates de mise à jour jusqu'en décembre 2018...ce qui n'est pas possible. Aussi on voit réapparaitre du texte en colonne 25 ce qui n'est pas logique.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    Merci Marc-L. Le fait de glisser le fichier dans Excel revient à ouverture manuelle. Qu'il soit en txt ou xls, à partir du moment où on l'ouvre à la main, la structure est bonne.
    Le problème est lié à l'ouverture par macro. Ce fichier est issu d'un site institutionnel du Réseau électrique Français, malheureusement j'aurais du mal à leur demander de reformater les données.

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Déjà le problème est ce fichier ayant été codé avec des pieds ‼
    Car ce n'est vraiment pas malin d'utiliser le même caractère pour passer à la ligne au sein d'une cellule
    exactement identique à celui marquant la fin de ligne !     Vérifiable via Notepad++ par exemple …

    Le plus simple est de demander à la source de conserver le caractère LF au sein d'un texte
    mais de le remplacer par la séquence CRLF pour chaque fin de ligne et qui plus est, le standard sous Windows !

    Sinon il suffit de lire ligne par ligne et de contrôler le nombre de données par rapport au nombre attendu de colonnes
    et s'il y a un nombre impair de guillemets alors la suite est logiquement sur la ligne suivante …
    Pas compliqué, de la p'tite usine que tu peux déjà commencer de ton côté
    car là du mien j'ai encore de la modération en retard sur un autre forum.

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Comme de mon côté cela fonctionne pourtant déjà bien par code, et pour cause ! …

    Citation Envoyé par msmd69 Voir le message
    Merci Marc-L. Le fait de glisser le fichier dans Excel revient à ouverture manuelle.
    Et comme déjà signalé pourtant récemment dans une discussion de ce forum aux collègues,
    quand justement l'ouverture manuelle fonctionne, ce n'est évidemment pas la méthode OpenText

    mais Excel utilise juste la méthode   Workbooks.Open   et en lisant déjà bien l'aide VBA interne

    une seule ligne de code suffira à ton bonheur, si, si !  
    Donc le fichier source est pas si mal que cela …


    Note aux modérateurs :
    ne pas chercher encore midi à 14 heures, c'est juste un rappel de la simplicité et déjà signalé dans ce forum,
    juste pour éviter encore que certains ne proposent des usines gazières superfétatoires alors que le B-A-BA d'Excel
    accessible donc à tout débutant répond déjà à la problématique et ce en une seule ligne de code, merci ‼

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    J'avais déjà ouvert le fichier avec workbooks.open et effectivement il donne l'impression de s'ouvrir normalement.
    Mais ce n'est qu'une apparence car il modifie une partie des dates au format Américain. Ce qui fait que si tu mets un filtre sur la colonne D par exemple le résultat entre le fichier ouvert à la main et celui par la macro n'est pas le même.
    Mais grâce à vous j'ai trouvé la solution, il faut faire comme un .csv ou .txt, en l'ouvrant avec workbooks.open(mon_fichier),local:=true
    Un GRAND merci à tous.

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Oui félicitations c'est bien cela ‼     Ce qui m'a fait douter c'est que tu l'avais pourtant indiqué dès la présentation initiale;
    et puis en repensant à l'ouverture manuelle, c'est là que cela a tilté et remis sur la bonne voie …

    Pour blinder on peut aussi lui indiquer le Format même si en général le VBA se débrouille déjà bien sans :

     Workbooks.Open "D:\Tests\DonneesIndisponibilitesProduction_2018.xls", Format:=1, Local:=True   …

    On a évité la production gazière, une bonne p'tite piqure de rappel pour le forum
    car encore une fois vaut mieux Penser Excel Avant VBA !

    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé …

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    oui j'ai finalement opté pour Call Workbooks.Open(Filename:="D:\Tests\DonneesIndisponibilitesProduction_2018.xls", Format:=1, local:=True)
    Merci pour votre efficacité encore

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

Discussions similaires

  1. Modification des Zones de Textes via Macro
    Par thais781 dans le forum Powerpoint
    Réponses: 4
    Dernier message: 18/07/2016, 20h05
  2. [XL-2010] excel - ouverture d'un autre fichier via Macro
    Par willoweiss dans le forum Excel
    Réponses: 5
    Dernier message: 18/05/2014, 19h09
  3. [XL-2007] Ouverture fichier word via macro XL
    Par Lady Maria dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/01/2010, 13h46
  4. [AC-2007] Ouverture de formulaire via macro
    Par damsmut dans le forum IHM
    Réponses: 7
    Dernier message: 10/12/2009, 09h49
  5. [E-03] Ouverture d'un dossier Réseau via Macro
    Par ted the Ors dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/01/2009, 11h28

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