Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouvrir Automatiquement Excel selon des dates prédéfinis dans la colonne A

18 réponses
Avatar
Apitos
Bonsoir =E0 tous,

Comment puis-je ouvrir automatiquement un fichier excel selon des dates pr=
=E9d=E9finis dans ce m=EAme fichier dans la colonne A ?

Merci.

10 réponses

1 2
Avatar
MichD
Bonjour,

Tu peux utiliser le planificateur de tâches de Windows pour lancer un petit fichier VBS (vbscript)
qui selon un horaire que tu détermineras dans le planificateur de tâche lancera le fichier Excel
sans l'afficher et vérifiera à l'aide d'une macro spécifique contenue dans le fichier si la date
d'aujourd'hui correspond à une date de la colonne A:A

Voici un petit script pour ce travail :

Tu copies ce qui suit dans un fichier NotePad et tu l'enregistres en lui donnant
l'extension .VBS

C'est ce fichier .VBS que tu appelles dans le planificateur de tâches de Windows.

'----------------------------------
Dim Xl
set xl = createobject("Excel.application")
Xl.Visible = True
Xl.enableeventsúlse
'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
'----------------------------------


Dans le fichier Excel, si tu veux savoir si la date d'aujourd'hui existe dans la colonne A:A de la feuil1
Exemple de code :

'----------------------------------
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
'----------------------------------

Attention, si suite à l'exécution de la macro "MaMacro" tu fermes le classeur et Excel par
du code, il ne faut pas dédoubler ces commandes dans le fichier .VBS.


MichD
------------------------------------------
Avatar
Apitos
Bonjour MichDenis,

J'ai appliqué le code, mais le fichier excel n'est jamais ouvert !

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

Un autre souci :

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

Et est-ce qu'on peut récupérer les dates du fichier Excel lors d'un pre mier lancement et puis introduire la liste récupérée dans le planific ateur de tâches ?
Avatar
Apitos
Bonjour MichDenis,

Une approche ?
Avatar
MichD
Ça fait longtemps que je t'ai répondu, mais les messages ne sortent pas du répertoire
d'envoi de Windows Live Mail. Un problème se serveur ou Windows Live Mail, je n'en sais
rien!

La macro que j'ai commise cherche une "DATE" comme contenu de cellule. Toi, dans tes
cellules tu as une date + l'heure. C'est ce pour quoi la macro ne trouve pas la date.

Numéro d'erreur Windows Live Mail : 0x8DE20007

Tu peux utiliser la méthode "Find" au lieu de "Match" pour trouver une date même si la
cellule affiche l'heure.
La méthode proposée s'applique seulement si ces dates ne sont pas le résultat de formules.

Voici la ligne de code à adapter : elle recherche la date d'aujourd'hui dans la plage A:A

Dim Set Rg As Range

With Feuil1
.Activate
set Rg = .Range("A:A").Find(What:Úte, LookIn:=xlFormulas, Lookat:=xlPart)
if not rg is nothing then
Msgbox rg.address
'OU
Rg.select
end if
end with


MichD
---------------------------------------------------------------
Avatar
Apitos
Bonsoir MichDenis,

C'est ce pour quoi la macro ne trouve pas la date.



Je crois que la macro n'est pas exécutée du tout.

Parce qu'il y a un test if...else

Si la recherche ait échouée, alors le message du else est affiché.

mais aucun message n'est affiché ni même Excel n'est ouvert !!!

Bon voici la macro que j'ai utilisé (Pas encore de résultat!!)

'----------------------------------
Sub MaMacro()
Dim Frm As String
Dim Rg As Range
With Feuil1
.Activate
Frm = Format(Now, "dd/mm/yyyy hh:mm")
ThisWorkbook.Application.Visible = True
Set Rg = .Range("A:A").Find(What:=Frm, LookIn:=xlValues, Look At:=xlPart)
If Not Rg Is Nothing Then
MsgBox "La date " & Frm & " est trouvée à l'adresse " & Rg. Address
'OU
'Rg.Select
Else
MsgBox "La date : " & Frm & " n'a pas été trouvée"
End If
End With
End Sub
'----------------------------------

Cordialement.
Avatar
MichD
A ) Ouvre ton fichier et lance l'exécution de la macro pas à pas.
Tu places ton curseur entre la ligne de déclaration de la macro et le End Sub et tu
appuies sur la touche F8 pour exécuter une ligne à la fois de la procédure. Tu vas voir si
au moins ta procédure fonctionne!

B ) Je crois que tu n'as pas saisi l'explication que je t'ai donnée à propos du format
date.

- Si tu définis comme critère de recherche la date + l'heure comme dans la liste suivante
:
| Frm = Format(Now, "dd/mm/yyyy hh:mm")

À la place de cette ligne, tu devrais utiliser :
Dim Frm As Date
Frm = Date

J'ai testé la procédure suivante et elle est fonctionnelle :
Attention, si ta plage de cellules sur laquelle se fait la recherche est différente
de la colonne A:A, à toi d'adapter!

'------------------------------------------
Sub MaMacro()
Dim Frm As Date
Dim Rg As Range
With Feuil11
.Activate
Frm = Date
ThisWorkbook.Application.Visible = True
Set Rg = .Range("A:A").Find(What:=Frm, LookIn:=xlFormulas, LookAt:=xlPart)
If Not Rg Is Nothing Then
MsgBox "La date " & Frm & " est trouvée à l'adresse " & Rg.Address
'OU
'Rg.Select
Else
MsgBox "La date : " & Frm & " n'a pas été trouvée"
End If
End With
End Sub
'------------------------------------------

MichD
---------------------------------------------------------------



--
MichD
---------------------------------------------------------------
Avatar
Apitos
Re,

J'ai deja testé avec F8 et la procédure est fonctionnelle en cas de Frm = Date

Mais comme j'aurai besoin de tester l'heure aussi pour ouvrir Excel, j'ai c hangé le Frm en = Format(Now,"dd/mm/yy hh:mm") pour recherché aussi l 'heure et les minutes.

Et ca marche aussi.

Mais avec l'appel du fichier AutoTest.vbs depuis le planificateur de tâch es, ça ne marche plus !

Et voila les fichiers avec lesquels je travaille :

http://cjoint.com/?BDnxtZvV2QP

Merci.
Avatar
MichD
Ce fichier .VBS fonctionne très bien.

Dans le fichier que j'ai ouvert (un fichier .vbs peut-être édité en utilisant la commande
"ouvrir avec" dans le menu contextuel lors d'un clic droit sur le fichier en choisissant
"NotePad"), Le chemin et le nom du fichier n'étaient pas complets!

La procédure ouvre le fichier dans une instance unique d'Excel, si tu veux autre chose, il
faut le dire!

Quand tu utilises des fonctions comme "Now()" ou "maintenant()", tu peux appliquer un
format de cellule de ce type : DD/MM/AA H:MM mais n'oublie pas que cela est un format,
mais dans la cellule, la valeur numérique contient aussi les secondes même si elles ne
sont pas affichées... et vouloir faire une recherche sur une telle valeur est pour le
moins particulier!


'----------------------------------
Dim Xl
dim wk

Set Xl = CreateObject("Excel.application")
Xl.Visible = True
'Chemin et nom du fichier à ouvrir à adapter...
Set Wk =
Xl.Workbooks.Open("C:UsersDMDownloadsApitosBDnxtZvV2QP_autoexecTestDates.xls")
'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"

'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
'----------------------------------

--
MichD
---------------------------------------------------------------
Avatar
Apitos
Bonsoir MichD,

L'erreur était dans la session qui ouvrira le fichier vbs.

entre temps j'ai trouvé ce lien :

http://jpcheck.developpez.com/tutoriels/access/generer-taches-planifiees-de puis-access

qui traite des tâches planifiées depuis access à l'aide des fichier * .batch.

et je le trouve très intéréssant.

seulement j'ai du mal à l'adapter sous excel.

peux-tu m'aider à réaliser cela ?

Merci d'avance.
Avatar
MichD
Je n'ai pas vraiment la disponibilité pour le travail que tu demandes. Je suis un bénévole
qui essaie dans la mesure du possible de faire quelques suggestions lorsqu'un usager a des
difficultés avec Excel.

Je ne sais toujours pas vraiment ce que tu tentes de faire. La création de Batchs file
pour créer et exécuter des tâches planifiées n'est pas nécessairement de tous repos!

Dans une fenêtre d'une "invite de commande" (celle qui ressemble à l'ancienne fenêtre DOS)
tape ceci :
Schtasks.exe /? et tu auras un peu d'information sur la manière d'utiliser la commande.

À cette adresse, on décrit de façon beaucoup plus complète la manière d'utiliser
l'exécutable : Schtasks.exe
http://support.microsoft.com/kb/814596/fr

Si tu utilises des problèmes chemin faisant, cette adresse pourra t'aider...
http://social.technet.microsoft.com/search/fr-fr?query=Schtasks.exe&x=0&y=0


--
MichD
---------------------------------------------------------------

"Apitos" a écrit dans le message de groupe de discussion :

Bonsoir MichD,

L'erreur était dans la session qui ouvrira le fichier vbs.

entre temps j'ai trouvé ce lien :

http://jpcheck.developpez.com/tutoriels/access/generer-taches-planifiees-depuis-access

qui traite des tâches planifiées depuis access à l'aide des fichier *.batch.

et je le trouve très intéréssant.

seulement j'ai du mal à l'adapter sous excel.

peux-tu m'aider à réaliser cela ?

Merci d'avance.
1 2