Petit programme en vbs

Résolu
ipvirgul Messages postés 9 Statut Membre -  
ipvirgul Messages postés 9 Statut Membre -
Bonjour à tous

Tout d'abord je suis débutant en programmation VBS et j'essaie de réaliser une commande.
je souhaite réaliser un programme pour anticiper des RDV.
je vous joint le type de programme mais je ne sais pas si seulement c'est réalisable dans l'ensemble il fonctionne et individuellement aussi.

Ils sont tous les deux identique du coté fonctionnement, j'ai simplement renommé les variables pour éviter toute confusion. Pour le faire fonctionner il faut l'enregistrer (.vbs)

Le problème que je n'arrive pas a résoudre c'est : comment l'envoyer a la ligne 16 après validation de la condition if « ligne 7 ».

Le fait de mettre quit stop la lecture et le second programme ne peut pas s'exécuter.
Le problème se produit quand la date dt1 a passé le jour J.

Merci de m'aider si quelqu'un a une solution pour exécuter cette commande.

Cordialement

Jean Pierre

'On Error Resume Next
'****************Déclaration des variable****************'
1 Dim dt1, dt2, tp
2 Dim strnom
3dt1 = #04-15-2013#
4tp = #12:15#
5strnom = " Dr Hussein"
6dt2 = DateDiff("d",dt1,Date())
7if (dt2 > 0) or ( dt2< -4) then WScript.quit '(ici je veux suprime) quit que je remplace par (va a la ligne 16)
8if (dt2 <> 0) then
9msgbox "Vous avez RDV le: " & dt1 & " à " & tp & " dans " & dt2 & "jours" & " avec le " & 10strnom ,vbOkOnly,"ici le tire"
11else
12msgbox "vous avez RDV aujourd'hui" & " à " & tp & " avec le " & strnom ,vbOkOnly,"ici 13le tire"
14end if
15'*****************Second programme************************'
16'On Error Resume Next
17Dim dt11, dt22, tp2
18Dim strnom2
19dt11 = #05-19-2013#
20tp2 = #12:15#
21strnom2 = " conseil syndical"
22dt22 = DateDiff("d",dt1,Date())
23if (dt22 > 0) or ( dt22< -4) then WScript.quit
24if (dt22 <> 0) then
25msgbox "Vous avez RDV le: " & dt11 & " à " & tp2 & " dans " & dt22 & "jours" & " avec 26le " & strnom2 ,vbOkOnly,"ici le tire"
27else
28msgbox "vous avez RDV aujourd'hui" & " à " & tp2 & " avec le " & strnom2 ,vbOkOnly,"ici le tire"
29end if

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    un exemple de code:

    'On Error Resume Next
    '****************Déclaration des variable****************'
    Dim dt1, dt2, tp
    Dim strnom
    dt1 = #04-15-2013#
    tp = #12:15#
    strnom = " Dr Hussein"
    dt2 = DateDiff("d",dt1,Date())
    if (dt2 > 0) or ( dt2< -4) Then
    	Call suite		'WScript.quit '(ici je veux suprime) quit que je remplace par (va a la ligne 16)
    End If
    if (dt2 <> 0) then
    	msgbox "Vous avez RDV le: " & dt1 & " à " & tp & " dans " & dt2 & "jours" & " avec le " & strnom ,vbOkOnly,"ici le tire"
    else
    	msgbox "vous avez RDV aujourd'hui" & " à " & tp & " avec le " & strnom ,vbOkOnly,"ici 13le tire"
    end If
    WScript.quit
    '*****************Second programme************************'
    Sub suite
    	'On Error Resume Next
    	Dim dt11, dt22, tp2
    	Dim strnom2
    	dt11 = #05-19-2013#
    	tp2 = #12:15#
    	strnom2 = " conseil syndical"
    	dt22 = DateDiff("d",dt1,Date())
    	if (dt22 > 0) or ( dt22< -4) then Exit Sub
    	if (dt22 <> 0) then
    		msgbox "Vous avez RDV le: " & dt11 & " à " & tp2 & " dans " & dt22 & "jours" & " avec 26le " & strnom2 ,vbOkOnly,"ici le tire"
    	else
    		msgbox "vous avez RDV aujourd'hui" & " à " & tp2 & " avec le " & strnom2 ,vbOkOnly,"ici le tire"
    	end If
    End Sub
    0
    1. ipvirgul Messages postés 9 Statut Membre
       
      je remercie f894009 de ces idées par contre le programme ne fonctionne toujours pas comme je l'aurai souhaité.
      J'ai peut être pas donné toutes les précisions un RDV passé ne doit plus s'afficher ainsi que les RDV de plus de 3-4 jour d'où la condition" if (dt2 > 0) or ( dt2< -4) Then "
      la formule: "dt2 = DateDiff("d",dt1,Date()). " Si vous avez d'autre idées je suis toujours preneur mercis a vous tous je continue a chercher je ne lâche jamais un os
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Quel est l'interet de la sub routine suite, si vos criteres de choix ne sont que des ecarts de dates?????
      0
    3. ipvirgul Messages postés 9 Statut Membre
       
      Tout d'abord merci
      1 'On Error Resume Next
      2 '***************************premier programme********
      3 Dim dt1, dt2, tp
      4 Dim strnom
      5 dt1 = #04-20-2013#
      6 tp = #12:15#
      7 strnom = " Dr Hussein"
      8 '******************************************'
      9 dt2 = DateDiff("d",dt1,Date())
      10 if (dt2 > 0) or ( dt2< -4) then
      11Call suite
      12 end if
      13if (dt2 <> 0) then
      14msgbox "Vous avez RDV le: " & dt1 & " à " & tp & " dans " & dt2 & "jours" & " avec le " & strnom ,vbOkOnly,"ici le tire"
      15else
      16msgbox "vous avez RDV aujourd'hui" & " à " & tp & " avec le " & strnom ,vbOkOnly,"ici le tire"
      17end if
      18if dt2 > 0 then
      19 `*************************************
      20end if
      21wscript.quit
      22'****************************second programme******
      23Sub suite
      24'On Error Resume Next
      25Dim dt11, dt22, tp2
      26Dim strnom2
      27dt11 = #04-28-2013#
      28tp2 = #12:15#
      29strnom2 = " Dr casanova"
      30'******************************************
      31dt22 = DateDiff("d",dt11,Date())
      32if (dt22 > 0) or ( dt22< -4) then wscript.quit
      33if (dt22 <> 0) then
      34msgbox "Vous avez RDV le: " & dt11 & " à " & tp2 & " dans " & dt22 & "jours" & " avec le " & strnom2 ,vbOkOnly,"ici le tire"
      35else
      36msgbox "vous avez RDV aujourd'hui" & " à " & tp2 & " avec le " & strnom2 37,vbOkOnly,"ici le tire"
      38end if
      39End sub



      Vous m'avez déjà bien aidé avec votre « call suite et sub suite » mais il reste encore un petit problème.

      Le renvoi que je cherche a réaliser c'est pour aligner plusieurs prog a la suite sur la même feuille avec des dates différentes.

      La date dt1 ligne 5 est la date d'un RDV passé, premier prog. Donc pas d'ouverture de se programme.
      La commande « call suite » permet dans un premier temps d'évincer ce prog, c'est pour quoi la msgbox du second prog s'ouvre et m'alerte sur le second RDV.


      Sauf que, lorsque je click sur OK de cette msgbox second le message de la première s'ouvre a son tour c'est ce que je ne veux pas.

      Pour le moment je n'ai pas trouvé de solution mais je chercherai.

      Merci de votre aide
      Cordialement
      Jean Pierre
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    pour pallier momentanément a ce soucis, inserez wscript.quit apres call suite.
    Par contre je ne vois pas comment vous trouvez un nombre negatif de jours avec votre formule sur les dates anterieures a aujourd'hui: dt2 = DateDiff("d",dt1,Date()) , la date d'aujourd'hui etant toujours superieure a hier. dt2 = DateDiff("d",Date(),dt1) serait plus appropriee et le nombre de jours pour les dates posterieures sera positif.

    if (dt2 > 0) or ( dt2< -4) Then: : -13 est < a -4

    if (dt2 <> 0) then: -13 et 40 sont <> de 0, c'est pour cela que vous avez la deuxieme boite a message

    il faut repenser les tests sur les ecarts de dates.

    questions: les dates de RDV proviennent d'ou (vous ne les entrez pas a la main en dur dans le programme!!!) , cela aiderait a vous aidez

    A+
    0
    1. ipvirgul Messages postés 9 Statut Membre
       
      Merci de votre aide mon programme est terminé et je suis satisfait, je le joint avec quelques remarques.
      1'On Error Resume Next
      2'**def variable*********************premier programme*******************
      3Dim dt1, dt2, tp
      4Dim strnom
      5dt1 = #04-30-2013#
      6tp = #12:15#
      7strnom = " Dr Hussein"
      8'**************execution prog****************************'
      9dt2 = DateDiff("d",Date(),dt1)
      10 'Wscript.echo dt2 « pour verifier où j'en suis »
      11if (dt2 < 0) or (dt2 > 4) then 'wscript.quit
      12 Call suite
      13wscript.quit
      14elseif (1 = dt2 < 4) and (dt2 <> 0) then
      15msgbox "Vous avez RDV le: " & dt1 & " à " & tp & " dans " & dt2 & "jours" & " avec le " & strnom ,vbOkOnly,"prog 1er"
      16elseif (dt2 = 0) then
      17msgbox "vous avez RDV aujourd'hui" & " à " & tp & " avec le " & strnom ,vbOkOnly,"prog 1er"
      18end if
      19 call suite

      20'**********************second programme***************
      21Sub suite
      'Dim dt11, dt22, tp2
      'Dim strnom2
      'dt11 = #04-30-2013#
      'tp2 = #12:15#
      'strnom2 = " conseil syndical"
      27'******************************************'
      'dt22 = DateDiff("d",Date(),dt11)
      29Wscript.echo dt22
      'if (dt22 < 0) or (dt22 > 4) then 'wscript.quit
      'end if
      'if (1 = dt22 < 4) and (dt22 <> 0) then
      33msgbox "Vous avez RDV le: " & dt11 & " à " & tp2 & " dans " & dt22 & "jours" & " avec le " & strnom2 ,vbOkOnly,"prog 2éme"
      34elseif (dt22 = 0) then
      'msgbox "vous avez RDV aujourd'hui" & " à " & tp2 & " avec le " & strnom2 ,vbOkOnly,"prog 2ème"
      36end if
      37End sub
      38'wscript.quit

      J'ai modifié les tests sur les écarts de dates en utilisant des valeurs positives.
      Le premier prog seul fonctionne correctement dans toutes les situations.
      Pour le second prog après plusieurs testes et observations j'ai réactivé tout le prog 2 et rajouté en ligne 19 « call suite » car la lecture s'arrêtait après la ligne 17 msgbox.

      J'ai placé en ligne 10et29 Les fonctions Wscript .echo pour observer pendant mes testes l'état dt2 et dt22, peuvent en suite être supprimé ou désactivé.
      Par ailleurs, en ligne 13 et 38 les commandes WScript.quit ne m'on pas parue utiles c'est pourquoi je les ai désactivées.
      Je pense avoir effectué les testes les plus essentiel l'ensemble a l'air de bien fonctionné.

      Pour répondre votre question si je rentre les RDV a la main la réponse est oui c'est pourquoi
      def variable sont entre deux ligne ** merci encor a vous.
      Pour mes début en programmation c'est chaud.

      Cordialement
      Jean pierre
      0