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 Excel à des dates prédéfinies


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Ouvrir Excel à des dates prédéfinies
    Bonsoir à tous,

    J'aimerais ouvrir un fichier Excel testDates.xls à des dates inscrites dans la colonne A de ce même fichier.

    J'ai essayé d'utiliser ce code fourni par MichD.

    Un fichier .VBS que je fais appeler dans le planificateur de tâches de Windows.

    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
    '---------------------------------- 
    Dim Xl 
    set xl = createobject("Excel.application") 
    Xl.Visible = True 
    Xl.enableevents=false 
    'Chemin et nom du fichier à ouvrir 
    set Wk = Xl.workbooks.open("c:\Chemin & NomDuFichier.xlsm") 
     
    'J'ai supposé que la macro a exécuté s'appelait "MaMacro" et qu'elle était 
    'située dans un MODULE STANDARD. 
    Xl.Run "MaMacro" 
    Xl.enableevents=true 
     
    'wk.save   ' sauvegarde si nécessaire 
    'wk.close  ' fermeture du fichier si nécessaire 
     
    'xl.quit   ' fermeture de l'instance du fichier si nécessaire 
    '----------------------------------
    La macro "MaMacro" dans le fichier Excel TestDates.xls, qui teste si une date corresponde bien à la date actuelle, si oui ouvrir le fichier Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '---------------------------------- 
    Sub MaMacro() 
    Dim X As Variant 
    With Feuil1 
        X = Application.Match(CLng(Date), .Range("a:A"), 0) 
        If IsNumeric(X) Then 
            ThisWorkbook.Application.Visible = True  'Rend l'application visible (si besoin) 
            'X représente le numéro de la ligne 
            'reste du code 
        End If 
    End With 
    End Sub 
    '----------------------------------
    Mais voila, le code .vbs est exécuté en permanence par le planificateur de tâches, mais le fichier Excel ne s'ouvre jamais.

    Le format des dates dans la colonne A est :

    10/04/2012 20:40
    10/04/2012 22:19
    10/04/2012 22:25
    10/04/2012 22:27
    10/04/2012 22:29
    10/04/2012 22:31
    10/04/2012 22:35
    10/04/2012 22:38
    10/04/2012 22:42
    10/04/2012 22:45
    10/04/2012 22:49

    Alors :

    - L'exécution continue du fichier .VBS ne cause-t-elle pas de problème au système ?

    - Et est-ce qu'on peut récupérer les dates du fichier Excel lors d'un premier lancement et puis introduire la liste récupérée dans le planificateur de tâches ?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    D'abord ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Wk = Xl.workbooks.open("c:\Chemin & NomDuFichier.xlsm")
    C'est quoi Chemin ? Une variable ? Si oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Wk = Xl.workbooks.open("c:\" & Chemin & "NomDuFichier.xlsm")
    Et NomDuFichier c'est aussi une variable ou le nom du fichier ? Si c'est une variable cela devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Wk = Xl.workbooks.open("c:\" & Chemin & NomDuFichier & ".xlsm")
    En faisant attention qu'il y ait bien les \ au bon endroit dans les variables.

    De plus sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     X = Application.Match(CLng(Date), .Range("a:A"), 0)
    avec l'argument à 0.

    Si type prend la valeur 0, la fonction MATCH recherche la première valeur qui est exactement égale à valeur_cherchée. Matrice_recherche peut se trouver dans un ordre quelconque.
    Il faut que tu tombes pile poil sur la minute

    Philippe

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour Philippe,

    Même en écrivant les deux fichiers comme suivant, mais rien ne marche.

    AutoTest.vbs (dans le planificateur de tâches) :

    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
    '----------------------------------
    Dim Xl
    Set Xl = CreateObject("Excel.application")
    Xl.Visible = True
    Xl.EnableEvents = False
    'Chemin et nom du fichier à ouvrir
    Set Wk = Xl.Workbooks.Open("TestDates.xls")
    Xl.Run "MaMacro"
    Xl.EnableEvents = True
     
    'wk.save   ' sauvegarde si nécessaire
    'wk.close  ' fermeture du fichier si nécessaire
     
    'xl.quit   ' fermeture de l'instance du fichier si nécessaire
    '----------------------------------
    "MaMacro" dans le TestDates.xls :

    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
    '----------------------------------
    Sub MaMacro()
        Dim X As Variant
        With Feuil1
            'X = Application.Match(CLng(Date), .Range("A:A"), 0)
            X = Application.Match(Now, .Range("A:A"), 0)
            If IsNumeric(X) Then
                ThisWorkbook.Application.Visible = True  'Rend l'application visible (si besoin)
                'X représente le numéro de la ligne
                'reste du code
                MsgBox "La date " & Now & " se trouve dans la ligne : " & X
            Else
                MsgBox "La date " & Now & " n'a pas été trouvée"
            End If
        End With
    End Sub
    '----------------------------------
    J'ai changé Date par Now pour prensdre en consédération en plus de la date, l'heure.

  4. #4
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour,

    J'ai changé le chemin du fichier à ouvrir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Chemin et nom du fichier à ouvrir
    Set Wk = Xl.Workbooks.Open("TestDates.xls")
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wk = Xl.Workbooks.Open("E:\Excel\tests\Dates\AutoExec\TestDates.xls")
    mais je n'ai rien pour le momemnt

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Juste pour tester le lancement via un script vbs, teste ceci :

    Dans ton fichier *.vbs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim XLapp
     
    Set XLapp= CreateObject("Excel.Application")
    XLapp.Visible = false
    XLapp.Workbooks.open("E:\Excel\tests\Dates\AutoExec\TestDates.xls")
    Et dans ton classeur, pour tester tu fais ceci :
    Code dans un module Standard : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test_Ouverture()
    Select Case MsgBox("Voulez-vous afficher le classeur", vbYesNo, "Test VBS")
        Case vbYes
            Application.Visible = True
        Case vbNo
            Application.Quit
    End Select
    End Sub
    Code dans le module ThisWorkbook : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Test_Ouverture
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...
    bonjour

    je ne comprend pas bien le besoin d'un fichier ".vbs" dans ton projet


    puisque tu créé une tache dans le planificateur pourquoi ne démarre tu pas le fichier exel directement de la
    ensuite tu peut très bien créer autant de tache que de dates nécessaires

    avec comme fring te l'a suggéré un msgbox ouvrir ou pas avec l'application visible ou pas en réponse
    et si non fermer le classeur .il redémarrera a la prochaine date programmée a moins de le faire manuellement


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour fring, patricktoulon,

    Citation Envoyé par fring Voir le message
    Bonjour,
    Juste pour tester le lancement via un script vbs
    J'ai testé mais Il n y a pas de lancement d'Excel.

    Il y a sûrement un problème quelque part

    Pourtant devant le fichier *.vbs dans le planificateur de tâches, je peux bien lire "En cours d'exécution" !

    Citation Envoyé par patricktoulon Voir le message
    je ne comprend pas bien le besoin d'un fichier ".vbs" dans ton projet
    Moi aussi j'aimerais comprendre pourquoi on a fait appel à un fichier *.vbs !


    Citation Envoyé par patricktoulon Voir le message
    puisque tu créé une tache dans le planificateur pourquoi ne démarre tu pas le fichier exel directement de la
    ensuite tu peut très bien créer autant de tache que de dates nécessaires

    avec comme fring te l'a suggéré un msgbox ouvrir ou pas avec l'application visible ou pas en réponse
    et si non fermer le classeur .il redémarrera a la prochaine date programmée a moins de le faire manuellement
    Je n'ai pas encore essayé.

    En fait ce que je souhaiterai faire c'est d'ouvrir mon fichier TestDates.xls et récupérer la liste des dates dans la colonne A, pour ensuite créer automatiquement des taches selon chaque date récupérée.

    Si on peut dire, planifier des taches de manière automatique selon les dates de la colonne A.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/06/2007, 15h26
  2. Creer une date avec des valeurs prédéfinies
    Par baedal dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2007, 10h58
  3. planning sous excel : axe des dates !
    Par egu07 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2007, 13h01
  4. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  5. Réponses: 27
    Dernier message: 03/02/2003, 12h27

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