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

VB 6 et antérieur Discussion :

Automatisation de traitement en VB


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Automatisation de traitement en VB
    Bonjour,
    Je travaille sur une appli en VB, et des mises a jour sont faites manuellement chaque semaine grace à une fonction que l'on lance avec un simple click, or je voudrais lancer cette fonction periodiquement sans intervention de tiers, mais je ne voi pa du tout coment faire!!

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    En donnant le boulot au planificateur de tache de windows ?
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    c'est ce que j'aurais fait aussi
    un petit prog à part qui ferme l'appli si elle est ouverte, effectue la maj et relance le tout
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    merci pour vos conseils, je ne connaissais pas cet outil, je m'y met de ce pas

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'arrive effectivement à lancer mon appli à partir du planificateur de taches mais je ne vois pas comment on peut accéder à une fonction de l'appli à partir du planificateur de taches?

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    On ne peut pas mais peut etre par contre tu pourrais faire une petite appli dédiée à ta mise à jour et c'est celle là que tu lancerais par le planificateur.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #7
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par ThierryAIM Voir le message
    un petit prog à part qui ferme l'appli si elle est ouverte, effectue la maj et relance le tout
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    d'aucuns ont l'habitude :

    - de procéder à cette vérification à l'ouverture d'u ne session
    - si résultat = nécessité de lancer le programme :

    a) l'utilisateur est invité à choisir entre une action immédiate ou une action différée à la prochaine fermeture (et un simple drapeau suffit alors à la fermeture).
    b) Dans tous les cas de figure, un fichier texte permet de mémoriser le dernier lancement de la procédure en cause.

    Une variante : signaler à l'utilisateur que la procédure devra être lancée dans l'heure qui suit et qu'il devra donc cesser toutes modifications avant ce délai.
    Le tout accompagné d'un timer de vérification de non dépassement du délai accordé (et lancement de la procédure de sortie) , ainsi que d'un drapeau qui déclenchera l'opération à la sortie.

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Il s'agit en fait dans mon cas d'importation de données contenu dans des fichiers excel, le probleme d'utilisateur connecté ne se pose car cette importation devra se faire la nuit. J'ai déjà la fonction d'importation qui est lancé par un administrateur, mais oi ce que je veux en faite c'est que cette e
    administrateur n'ai plus besoin d'effectuer cette tache mais qu'elle soit faite toute seule.

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Ok, mais je crois que thierry t'as donné une piste non ? l'as tu essayé ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut Accès à des fonctions dans une appli
    Citation Envoyé par saidino Voir le message
    J'arrive effectivement à lancer mon appli à partir du planificateur de taches mais je ne vois pas comment on peut accéder à une fonction de l'appli à partir du planificateur de taches?
    Il me semble que la manière la plus simple est de fournir un paramètre à l'appel de l'appli dans le planificateur de tâches, et d'exploiter dans le code de démarrage de l'appli la variable command qui représente la chaine de paramètre passée.

    Par exemple :
    Dans le planificateur de tâche, on appelle l'appli par (les guillemets sont impératifs si le chemin ou le nom de l'appli contiennent des espaces) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "disque:\chemin\appli a lancer" Action=3
    Dans l'application, code de la feuille de démarrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Form_Load()
        Dim sParams$, nToDo%
        If Command Like "Action*" Then
            sParams = Split(Command, "=")
            nToDo = Val(sParams(1))     'Val pour éviter une valeur non numérique
            Select Case nToDo
                Case 1:     Call Proc1  'Procédure à lancer si action = 1
                Case 2:     Call Proc2  'Procédure à lancer si action = 2
                'etc.
            End Select
        End If
    End Sub
    Version beaucoup plus puissante : on passe directement le nom de la fonction en paramètre, avec les propres paramètres de la fonction à appeler.

    Exemple :
    Dans le planificateur de tâche, on appelle l'appli par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "disque:\chemin\appli à lancer" FonctionAppellée/paramètres
    Le "/" est utilisé pour séparer le nom de la procédure de ses paramètres. Il peut être remplacé par n'importe quel caractère (à condition de modifier aussi le code ci-dessous).

    Dans l'application, code de la feuille de démarrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Form_Load()
        Dim sAction$()
        If Command <> "" Then
            sAction = Split(Command, "/")
            If UBound(sAction) < 1 Then         'Pas de paramètre
                CallByName Me, sAction(0), VbMethod
            Else
                CallByName Me, Trim(sAction(0)), VbMethod, sAction(1)
            End If
        End If
    End Sub
    Attention, pour que cela fonctionne, toutes les procédures appelées doivent impérativement déclarées publiques et être situées dans la feuille courante. Si la fonction n'existe pas, ou si le nombre ou type de paramètres n'est pas correct, il y aura une erreur d'exécution. Il est donc nécessaire de prévoir une gestion d'erreur (non faite ici pôur de raisons de clarté et de place)

    Le paramètre après le / peut représenter une chaine de paramètres, du style "param1, param2, param3"

    Notez que la variable Command n'est pas à déclarer (même en mode Option Explicit), c'est une variable intrinsèque de VB.

    Si avec ça vous n'arrivez pas à faire ce que vous souhaitez, c'est à désespérer !

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup!!

  13. #13
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par MGD_Software Voir le message

    Si avec ça vous n'arrivez pas à faire ce que vous souhaitez, c'est à désespérer !
    ok
    mais je me pose quand même une question ?

    si l'appli tourne déjà (oubli de la fermer !) quand le planificateur la lance de nouveau pour les mises à jour, que se passe-t-il ?

    comment est gérer le App.PrevInstance ?
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  14. #14
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut yena qui cherchent la petite bête...
    Si on lance une appli à intervalle régulier pour effectuer une tâche précise, c'est qu'elle se termine à la fin de cette tâche. Sinon, il suffit de la lancer une fois et d'y mettre un timer...

    Si la session précédente s'est plantée avant de se refermer, l'appel suivant créera une nouvelle instance qui, elle, exécutera (normalement) son boulot, sauf si la raison du plantage est la même, auquel cas on aura N tâches plantées au bout d'un moment.

    On peut éviter cela bien sûr en introduisant en début de procédure une ligne:
    If App.PrevInstance then Unload Me: Exit Sub

    Mais si la tâche précédente est plantée sévère, je ne réponds pas du comportement de PrevInstance. Et de toutes façons, on ne pourra rien faire pour elle.

    Pour les foldingues du hardcore, j'entrevois l'utilisation de l'API Windows pour détecter le module chargé, récupérer son ID de process, et lui envoyer un Kill. Moi je savais faire ça sous Unix, mais pas sous Windows.
    S'il y a un candidat, yaka !

    Moralité : yakapa faire des programmes qui plantent !

  15. #15
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Que veux-tu dire ?
    Récupérer l'ID est facile (si l'on utilise Shell)
    Récupérer le hwnd correspondant à cet ID est relativement simple.
    L'utilisation de SendMessage (en se référant à ce hwnd) peut alors permettre de fermer l'application lancée par Shell.

  16. #16
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    Récupérer l'ID est facile (si l'on utilise Shell)
    Récupérer le hwnd correspondant à cet ID est relativement simple.
    L'utilisation de SendMessage (en se référant à ce hwnd) peut alors permettre de fermer l'application lancée par Shell.
    D'accord pour les deux premières lignes.
    Pour la troisième, je demande à voir ce que donne SendMessage à une appli qui ne répond même plus au gestionnaire de tâches. J'avoue que je n'ai jamais essayé..

    Pour que l'appli réponde à un SendMessage, encore faut-il qu'elle écoute les messages de la boucle de messages de Windows (celle qu'on programmait à la main en C sous les premiers Windows, et qui existe toujours bien qu'enfouie dans les profondeurs des MFC). Je ne suis même pas sûr qu'une boucle du style "Do while True: Loop" laisse l'appli répondre à un SendMessage (en mode compilé bien sûr, pas en dévloppement).

    Je parlais du KillProcess envoyé au noyau, l'équivalent du "fin de tâche" du gestionnaire de tâche.

    Mais je pense que là on déborde largement du débat initial, dont le problème me semble résolu au vu du message précédent de Saidino.
    Comme dit le proverbe, ceci est une autre histoire.

    Et je répète : yakapa faire des programmes qui plantent !

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

Discussions similaires

  1. Automatisation des traitements
    Par fspiecart dans le forum AS/400
    Réponses: 5
    Dernier message: 30/11/2009, 17h25
  2. Automatisation de traitement SQL
    Par _Agrid dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2009, 20h17
  3. Macro - Automatiser un traitement
    Par Desraux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/12/2007, 20h27
  4. automatisation de traitement de données
    Par booskap dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/08/2007, 09h57
  5. Automatisation de traitement de log => tableur
    Par Gokukan dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 30/05/2007, 18h51

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