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 :

Écrire dans un fichier Excel fermé en VbScript [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut Écrire dans un fichier Excel fermé en VbScript
    Bonjour à tous.

    Après avoir cherché sur internet je n’ai pas trouvé de solution, c’est pourquoi je fais appel à vous.

    Je dois lancer avec VbScript une macro d'un fichier Excel au redémarrage d'un PC. Cette macro écrit dans la première feuille du classeur actif à la suite de la dernière ligne.

    Je sais comment lancer, ouvrir le fichier Excel et exécuter la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim xlapp
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    xlapp.Workbooks.open "C:\...\Classeur1.xls"
    xlapp.Run "NomMacro"
    Je souhaiterai exécuter la macro sans ouvrir et écrire dans le fichier fermé ?

    Existe-t-il un moyen ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, tu n'est pas à priori sur le bon forum, à lire tout de même : Lire et écrire dans les classeurs Excel fermés en adaptant à ton contexte.

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    copy ça dans note pad et enregistres le avec l’extension vbs!
    Code MyTest.Vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlapp
    dim Wb
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    set Wb = xlapp.Workbooks.open("C:\MyTest\MyTest.xlsm")
    Wb.application.Run "test"
    Wb.close false
    xlapp.Quit

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonjour kiki29.
    Citation Envoyé par kiki29 Voir le message
    Salut, tu n'est pas à priori sur le bon forum, à lire tout de même : Lire et écrire dans les classeurs Excel fermés en adaptant à ton contexte.
    Y a-t-il une possibilité de transfert dans un autre forum ou faut-il créer une nouvelle discussion dans un autre forum et lequel ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    on s'en fiche tu as ta réponse maintenant!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonjour rdurupt.

    Merci pour ta réponse.

    J'ai fait une copie de ton code dans notepad++ et enregistré avec l’extension vbs.

    Petit souci si je double clic sur le fichier au lieu d'exécuter le script il ouvre le fichier dans le Bloc-Note.

  7. #7
    Invité
    Invité(e)
    Par défaut
    normal, quand tu fais enregistre sous il faut choisir l'extension!
    Images attachées Images attachées   

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Je rencontre un autre problème si le fichier est enregistré avec l'extention.VB
    Images attachées Images attachées   

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    bonjour,
    copy ça dans note pad et enregistres le avec l’extension vbs!
    test.VBS c'est du vbScript pas du VB

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    J’ai enregistré le fichier sous test.VB et modifier l'extension en .vbs et je rencontre toujours le même problème

    pour information c'est le fichier Excel à traiter qui contient la macro à exécuter, elle écrit des données dans la première feuille du classeur actif à la suite de la dernière ligne

    si j'exécute test.vbs à partir de notepad++ c'est pareil

    je ne comprends pas

  11. #11
    Invité
    Invité(e)
    Par défaut
    ton ficher s'appel Test.VBS.txt c'est pour ça que tu l’ouvre avec Notepad les extension sur ton explorateur Windows sont masqué
    Images attachées Images attachées  

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    l'option "afficher les fichiers, les dossiers et les lecteurs cachés" est activée le ficher s'appelle bien Test.vbs ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    télécharge vbsfactor c'est gratuit!

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonsoir rdurupt.

    Je ne suis pas un spécialiste, mais en faisant un clic droit sur l'icône du VBS et "ouvrir avec" et en sélectionnant "Microsoft Windows Based Script Host", le script s’exécute.

    Par contre la macro n’écrit dans la première feuille du classeur à traiter à la suite de la dernière ligne.

    Je joins le fichier pour une meilleure compréhension.

    Là ça coince et j’avance plus.
    Fichiers attachés Fichiers attachés

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code Mod_Start_PC : 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
    Option Explicit
     
    Sub LogStartPC()
    Dim derL As Long
    Dim Ws As Worksheet
    Set Ws = Sheets("data démarrage-arrêt")
        Application.ScreenUpdating = False
        derL = Ws.Range("A1").CurrentRegion.Rows.Count + 1
        Ws.Rows(derL).Insert
        With Ws.Range(Ws.Cells(derL, 1), Ws.Cells(derL, 1).Offset(0, 7)).Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Ws.Cells(derL, 1)
            .Value = "Démarrage"
            .Offset(0, 1).Value = Format(Date, "yyyy-mm-dd")
            .Offset(0, 2).Value = Format(Time, "hh:mm:ss")
            .Offset(0, 3).Value = Environ("Username")
            .Offset(0, 4).Value = Environ("ComputerName")
            .Offset(0, 5).Value = Environ("Userdomain")
        End With
        'ActiveWorkbook.Save
        'ActiveWorkbook.Close
        Application.ScreenUpdating = True
     
    End Sub
    Code Mod_Arret_PC : 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
    Option Explicit
     
    Sub LogArretPC()
    Dim derL As Long
    Dim Ws As Worksheet
    Set Ws = Sheets("data démarrage-arrêt")
        Application.ScreenUpdating = False
        derL = Ws.Range("A1").CurrentRegion.Rows.Count + 1
        Ws.Rows(derL).Insert
        With Ws.Range(Ws.Cells(derL, 1), Ws.Cells(derL, 1).Offset(0, 7)).Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Ws.Cells(derL, 1)
            .Value = "Arrêt"
            .Offset(0, 1).Value = Format(Date, "yyyy-mm-dd")
            .Offset(0, 2).Value = Format(Time, "hh:mm:ss")
            .Offset(0, 3).Value = Environ("Username")
            .Offset(0, 4).Value = Environ("ComputerName")
            .Offset(0, 5).Value = Environ("Userdomain")
            .Offset(0, 6).FormulaR1C1 = "=RC[-4]-R[-1]C[-4]"
        End With
        'ActiveWorkbook.Save
        'ActiveWorkbook.Close
        Application.ScreenUpdating = True
     
    End Sub

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonjour

    Ton aide m’a été précieuse, j’ai corrigé les lignes de code suivant et ça fonctionne très bien.

    Il ne faut pas commenter 'ActiveWorkbook.Save dans Mod_Start_PC et Mod_Arret_PC dans les macros.

    Il ne faut pas commenter Wb.close false dans les scripts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlapp
    dim Wb
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    set Wb = xlapp.Workbooks.open("C:temps_utilsation_pc.xlsm")
    Wb.application.Run "LogStartPC"
    'Wb.close false
    xlapp.Quit
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlapp
    dim Wb
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    set Wb = xlapp.Workbooks.open("C:temps_utilsation_pc.xlsm")
    Wb.application.Run "LogArretPC"
    'Wb.close false
    xlapp.Quit
    Merci

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Avec cette macro tu exécute en fonction de la dernière ligne Démarrage/Arrêt
    Code ModuleOnOf : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub OnOf()
    Dim derL
    Dim Ws As Worksheet
    Set Ws = Sheets("data démarrage-arrêt")
     derL = Ws.Range("A1").CurrentRegion.Rows.Count
     If Ws.Cells(derL, 1).Value = "Démarrage" Then
        LogArretPC
     Else
        LogStartPC
     End If
    End Sub
    tu peux donc executer toujour le même script.vbs
    Code VbS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlapp
    dim Wb
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    set Wb = xlapp.Workbooks.open("C:temps_utilsation_pc.xlsm")
    Wb.application.Run "OnOf"
    'Wb.close false
    xlapp.Quit

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonsoir
    Je n'ai pas pensé à ta solution, effectivement ta macro s'exécute en fonction de la dernière ligne Démarrage/Arrêt, et un seul fichier script.vbs suffit.

    J'ai nommer le script «session-start-stop.vbs », en faisant un clic droit sur l'icône , puis "ouvrir avec" et en sélectionnant "Microsoft Windows Based Script Host", il s’exécute normalement.

    Par contre dans «l'éditeur de stratégies de groupe local» le script ne se déclenche pas au démarrage et à l’arrêt du PC.

    C’est incompréhensible, petit rappel : si je double clic sur le fichier «session-start-stop.vbs» il ouvre le fichier dans le Bloc-Notes. Grrrrrrrrrrrrrrrrrrrr

  19. #19
    Invité
    Invité(e)
    Par défaut
    Click droit et propriété pour changer le programe lier

    si non pano de cofiguration systême li y a truc pour le lacement des extention
    Dernière modification par Invité ; 28/11/2014 à 21h09.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 783
    Points : 179
    Points
    179
    Par défaut
    Bonjour rdurupt.

    Je n’avais pas fait attention que le Bloc-Notes était le programme par défaut pour ouvrir un fichier VBS, j'ai sélectionné Microsoft®Windows Based Script Host (toujours utilisé le programme sélectionné pour ouvrir le fichier) et maintenant en faisant un double clic sur l'icône du fichier VBS il s'exécute.

    Désolé et merci pour ta remarque et ta patience.

    Dans «l'éditeur de stratégie de groupe local» le script ne se déclenche pas au démarrage du PC ni à l’arrêt et Windows ne se ferme pas. Pourtant avec fichier TXT ça fonctionne nickel chrome ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [ASP.NET 2.0][C#] Comment écrire dans un fichier Excel ?
    Par Louisa dans le forum Accès aux données
    Réponses: 8
    Dernier message: 19/12/2012, 18h43
  2. comment je peut écrire dans un fichier excel
    Par kris1 dans le forum Visual Studio
    Réponses: 3
    Dernier message: 24/04/2008, 16h59
  3. [Excel] Écrire dans un fichier Excel existant
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/05/2006, 16h06
  4. lire / écrire dans un fichier excel au format xml
    Par crisflo dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 28/01/2006, 10h50

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