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

VBScript Discussion :

Sauvegarde d'un fichier Excel obtenu par extraction via SAP


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut Sauvegarde d'un fichier Excel obtenu par extraction via SAP
    Mon problème est le suivant :
    - Je voudrais enregistrer sous un fichier Excel que j'obtiens en faisant une extraction depuis SAP.

    Voici mon le bout de code qui doit faire sa :

    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
     
     
    Set WSHShell = CreateObject("WScript.Shell") 
    WSHShell.Run "wscript c:\user\U538819\VBS\Reception.vbs"
     
    WScript.Sleep 10000
     
    Dim chemin 'As String
    Dim fichier 'As String
    Dim jour
     
    chemin = "c:\user\U538819\"
     
    jour = Day(Now) & "/"& Month(Now) & "/" & Year(Now) & "_" & Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
    fichier = "Reception_" & jour  & ".xls"
     
     
    ActiveWorkbook.SaveCopyAs chemin & fichier
     
    save.hide
     
    MsgBox "Save faite !"
    Si quelqu'un pouvais m'indiquer mes erreurs et les solutions à mettre en place.
    Merci.


    Edit:

    Voici l'erreur que sa produit;

    Nom : err.PNG
Affichages : 941
Taille : 9,1 Ko

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,

    en début de script ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set appExcel = CreateObject("Excel.Application")
    ensuite remplacer la ligne 18 par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appExcel.ActiveWorkbook.SaveCopyAs chemin & fichier
    devrait fonctionner... (pas testé)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Je viens d’essayer et ça ne fonctionne toujours pas voici l'erreur qu'il m'affiche.

    Elle est identique à la précédente:

    Nom : err2.PNG
Affichages : 1012
Taille : 9,0 Ko

    Le problème vient de ActiveWorkbook

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Bonjour,

    A première vue tu souhaites enregistrer un fichier avec un nom du type : "Reception_28/3/2018_14:16:4.xls"
    Essai déjà sans les / ni les :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jour = Day(Now) & "."& Month(Now) & "." & Year(Now) & "_" & Hour(Now) & "h" & Minute(Now) & "mn" & Second(Now)
    Par exemple ...
    ++

  5. #5
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Oui malheuresement le probleme ne vient pas de là j'ai fais les essais mais toujours la même erreur avec le ActiveWorkbook

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Re,

    A vrai dire je ne sais pas trop ce que tu essayes de faire.
    Néanmoins, voici comment générer et enregistrer un fichier Excel au format que tu souhaites :

    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
     
    Set WSHShell = CreateObject("WScript.Shell") 
    Set appExcel = CreateObject("Excel.Application")
    WSHShell.Run "wscript c:\user\U538819\VBS\Reception.vbs"
    WScript.Sleep 10000
     
    Dim chemin, fichier, jour
     
    chemin = "c:\user\U538819\"
    jour = Day(Now) & "."& Month(Now) & "." & Year(Now) & "_" & Hour(Now) & "h" & Minute(Now) & "mn" & Second(Now)
    fichier = "Reception_" & jour  & ".xls"
     
    'appExcel.Visible = True
     
    Set objWorkbook = appExcel.Workbooks.Add()
    objWorkbook.SaveAs(chemin&fichier)
     
    appExcel.quit
     
    MsgBox "Save faite !"
    ++

  7. #7
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Cette méthode fonctionne bien mais c'est pas le résultat que je cherche à avoir enfaite.
    Mon script fait une extraction de données depuis l'erp de mon entreprise, une fois l'extraction terminé j'exporte le contenu en Excel. Cela me génère un Excel temporaire le temps que je l'enregitre.
    Ce que moi je voudrais c'est de recuperer cette fenetre Excel géneré et de l'enregistrer.

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Salut !
    Je pourrais t'aider en VBA, mais pas en VBS (à cause de la notion d'ActiveWorkBook).
    Est-ce qu'une macro Excel te conviendrait ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    J'ai pu résoudre mon problème merci.

    Mais toutefois maintenant je suis en train de faire des recherches pour mettre en place une macro.
    J'aurais voulu savoir, puis je créer une macro excel sur plusieurs excel d'un même dossier avec le bouton associé (chaque fichier on la même trame c'est juste les donnée qui change) ??

    Et deuxième question je voudrais filtrer des donnée spécifique dans une colonne ( par exemple une colonne produit; je voudrais filtrer tout les produit ayant le nom vélo et voiture ) et les placés tout en bas dans mon Excel serais ce possible ??

    Merci.

    Motif de l'édit:
    Pour la suite, nouvelle discussion [XL-2016] Filtre et tri d'une colonne dans le forum Macros et VBA Excel.

  10. #10
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par Cachlab Voir le message
    Je pourrais t'aider en VBA, mais pas en VBS (à cause de la notion d'ActiveWorkBook).
    Comme Excel peut se piloter en VBScript, ce n'est pas un souci !

    Tout dépend déjà d'où doit se situer le code, au sein d'un classeur ou initié en VBScript …
    En VBA, voir déjà les discussions similaires dans le forum approprié.

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Stagiaire Informatique
    Inscrit en
    Mars 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Stagiaire Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Il me reste un tout petit soucis a corriger dans mon code. Tout marche parfaitement sa sauvegarde nickel.
    Le petit problème maintenant c'est qu'il me faut les sauvegarder en .xlsm mais une fois rentré en dur dans le code et lancé cela m'affiche une erreur. J'ai fait quelque recherche me disant qu'il fallait directement choisir le type de fichier quand on enregistre le fichier.
    Savez vous s'il est possible de sauvegarder un fichier Excel avec l'extension .xlsm à partir de mon scprit VBS ?

    Voici ma méthode d'enregistrement pour l'instant:

    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
     
    Set WSHShell = CreateObject("WScript.Shell") 
    WSHShell.Run "wscript c:\user\U538819\VBS\Reception.vbs"
     
    chemin1 = "c:\user\U538819\Reception\"
     
    jour = Day(Now) & "_"& Month(Now) & "_" & Year(Now) & "_" & Hour(Now) & "h" & Minute(Now) & "mn" & Second(Now) &"s"
    fichierR = "Reception_" & jour  & ".xlsx"
     
    'Set objWorkbook = appExcel.Workbooks.Add()
     
    WScript.Sleep 25000
    Set appExcel = getObject(, "Excel.Application")
    appExcel.ActiveWorkbook.SaveAs(chemin1 & fichierR)
     
    appExcel.quit
    Merci.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Apprentie de développeur vba
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Apprentie de développeur vba

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 5
    Points
    5
    Par défaut Salut subzero
    Salut
    Je suis bloquer a l ouverture de la boite de dialogue
    Enregistrer sous
    Comment a tu contourne et par quel code
    Peut tu partager ton excel stp

  13. #13
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Si tu veux avoir une réponse à ton cas de problème, ouvre une nouvelle discussion et expose ton problème avec le plus de détails possibles.
    Pour enregistrer le fichier, en VBscript tu n'as pas besoin d'ouvrir (voir) la boîte de message Enregistrer sous...
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Apprentie de développeur vba
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Apprentie de développeur vba

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse j'ai ouvert une nouvelle discussion mais elle reste, malheureusement, vide.
    Tout y est décrit.
    J'ai repris la suite sur celle-ci car ça correspond à ce que je cherche.
    Je te situe où je me trouve :
    C'est quand j'arrive à la sauvegarde de mon extract.
    J'ai 2 solutions par spreadsheet qui ouvre la boite de dialogue Save as de Windows et par la solution %Pc qui ouvre la box SAP pour sauvegarder.
    Je cherche la solution avec la boite de dialogue Save as de Windows.

  15. #15
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Citation Envoyé par subzero25 Voir le message
    Il me reste un tout petit soucis a corriger dans mon code. Tout marche parfaitement ça sauvegarde nickel. ......J'ai fait quelque recherche me disant qu'il fallait directement choisir le type de fichier quand on enregistre le fichier.
    Savez vous s'il est possible de sauvegarder un fichier Excel avec l'extension .xlsm à partir de mon scprit VBS ?
    Essaie avec chacune des deux méthodes suivantes :
    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
    Option Explicit 
     ' 2 solutions possibles :
     
     Dim appExcel, wBook, FileName
     
     Const xlDialogSaveAs = 5
     Const xlOpenXMLWorkbookMacroEnabled = 52  ' pour *.xlsm
     
    Set appExcel = CreateObject("Excel.Application")
    Set wBook = appExcel.Workbooks.Open("C:\SrcTest.xlsx")
    '   1ère solution : Boite de dialogue Save As ( Enregistrer sous) et choisir l'extension :
    appExcel.Dialogs(xlDialogSaveAs).Show
     
    '   2ème solution : enregistrement sans boite de dialogue tout en choisissant le format de sortie 
    '   avec la syntaxe (réduite) : Object.SaveAs FileName, xlFileFormat
    FileName = "C:\Temp\Test.xlsm"
    wBook.SaveAs FileName, xlOpenXMLWorkbookMacroEnabled
    Pour ce dernier cas, voir : https://docs.microsoft.com/en-us/off...l.xlfileformat
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/01/2008, 13h02
  2. Recuperer chemin de sauvegarde d'un fichier excel
    Par Tierisa dans le forum Access
    Réponses: 2
    Dernier message: 16/10/2006, 12h57
  3. Réponses: 2
    Dernier message: 07/09/2006, 12h41
  4. sauvegarde d'un fichier excel csv sous le format xls
    Par blondelle dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/08/2006, 11h30
  5. Réponses: 2
    Dernier message: 18/02/2006, 18h07

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