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

VBScript Discussion :

Test valeur Year(oFl.DateCreated)


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut Test valeur Year(oFl.DateCreated)
    Bonjour !
    je cherche à déplacer des fichiers d'un repertoire en fonction de l'année de leur création.
    Lorsque j'éxecute le code "code1" ci-dessous, j'obtiens l'affichage voulu.
    En revanche, des que j'essaye de réaliser un test ("Code 2") de valeur avec un if entre
    la date obtenue avec Year(oFl.DateCreated) et par exemple la date saisie via un input (ex : annee = InputBox ("Jusqu'à quelle année voulez vous archiver ?") la condition n'est pas respectée.

    Peut être me faut il convertir via une fonction du style partdate une de mes
    variable ?

    Mon "if" est peut être mal formé ?

    Alors si quelqu'un pouvais me donner un coup de main ?

    Merci




    Code 1
    *****
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Dim stRep
    Dim annee,anneecreation 
    Dim oFSO,oFSO2,noFld,oFl
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFSO2 = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\test\s1"
     
    'annee = InputBox ("Jusqu'à quelle année voulez vous archiver ?")
     
     
    	If oFSO2.FolderExists(stRep) Then
     
    	For each oFl in  oFSO2.GetFolder(stRep).Files
     
     
    		Select Case Year(oFl.DateCreated)
     
     
     
    				case 2005:
     
     
    				'oFl.Move "c:\test\2005\"
    				msgbox "2005"
    				case 2006:
    				msgbox "2006"
     
    				'oFl.Move "c:\test\2006\"				
     
    				case 2007:
     
    				msgbox "2007"
    				'oFl.Move "c:\test\2007\"
     
    				case else:
     
    				msgbox "long ago"
     
    		End Select
     	Next	
    	End if

    Code 2
    *****

    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
    19
    20
    21
    22
    23
    24
    25
    Dim stRep
    Dim annee,anneecreation 
    Dim oFSO,oFSO2,noFld,oFl
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFSO2 = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\test\s1"
    
    annee = InputBox ("Jusqu'à quelle année voulez vous archiver ?")
    
    
    	If oFSO2.FolderExists(stRep) Then
    
    	For each oFl in  oFSO2.GetFolder(stRep).Files
    	   
    		msgbox  oFl.Name & " " & Year(oFl.DateCreated)
    
    		anneecreation=Year(oFl.DateCreated)
    
    		msgbox "année de création " & anneecreation
    
    ICI		If anneecreation<annee Then
    			msgbox "fichier à archiver" & annee & " " & anneecreation
    		End if
     	Next	
    	End if

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Premierement, lorsque tu postes du code, utilises les balises de code.


    Deuxiement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Inutile dans ton code.


    Troisiement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If oFSO2.FolderExists(stRep) Then
           For each oFl in oFSO2.GetFolder(stRep).Files
                anneecreation=Year(oFl.DateCreated)
                msgbox oFl.Name & " " & anneecreation
                msgbox "année de création " & anneecreation
                If anneecreation<annee Then
                    msgbox "fichier à archiver" & annee & " " & anneecreation
                End if
            Next 
    End if
    Je placerais plutot anneecreation avant la msgbox pour ne faire qu'une seule fois le calcul.


    Quatrièmement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If anneecreation<annee Then
        msgbox "fichier à archiver" & annee & " " & anneecreation
    End if
    Est ce que la msgbox s'affiche et elle affiche quoi ?

    Je n'ai jamais utilisé Year donc je ne sais pas ce que cette fonction renvois. Neanmoins annee contient elle un string, donc même si year renvois un string, ce n'est pas de cette façon que l'on compare deux strings. La tu fait plus une comparaison de deux nombres mais tu n'as pas deux nombre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut
    Tout dabord merci et pardon pour l'élaboration de mon post.
    Effectivement, je compare des choses incomparables ..
    Alors question comment obtenir une valeur numérique avec la fonction Year ?

    Merci

    Pour répondre à ta question, la msgbox me retourne bien les deux valeurs
    (meme si elles sont différentes et ne devrais pas remplir la condition)

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Que te renvois year (le type de donnée) ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut suite ...
    la fonction Year(oFl.DateCreated) me retourne selon les fichiers 2007 ou 2006 par exemple.

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Quand je te demandé le type de donnée c'était pour savoir si elle te retourne un string, un int, une date, une vache, une bouse, .....

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut beaucoup d'humour
    Trés drole ...
    Au vue de mon problème, de mes questions je suppose que vous avez
    estimez mon niveau technique en programmation vbscript. De ce fait, il est un petit peu dommage de vous foutre de moi. Mais bon cela fait du bien n'est ce pas ?

    Comment obtenir le type retourné ?????????


    Merci grand maitre

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Pffffffff vraiment trop succeptible.
    Prendre une blague pas drole, j'y peut rien je ne sais pas en faire des drole, pour de la moquerie, pfffffffff, je ne vais même plus pouvoir raconter de connerie, c'est pas drole ça.
    En effet j'ai vu que ton niveau n'est pas très élevé mais c pas grave ça, tout s'apprend (même ire à des blagues pas droles).
    Sais tu ce qu'est un int, un string, le type d'une variable ?
    En général on connait le type de données retourné par une fonction dans la doc que l'on a ouvert pour trouver la focntion en question.

    Inutile de me remercier petit scarabé, le savoir est destiné à être enseigné.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut Les rois du rire
    Bon alors le manuel me dit : Year : Retourne l'année contenu au sein d'une expression spécifiée !!!!!!!!!!!!!!

    une idée ?

  10. #10
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben ton probléme viens du fait que tu compare un entier avec une chaine ...tu peu tout transformer en entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If CInt(AnneeCreation) < CInt(annee) Then
    sinon les opérateurs < > = ... permettent aussi de comparer des chaînes, et sont alors fonction de l'ordre alphabétiques des deux opérandes...

    dans ton cas du dois pouvoir même utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If CStr(AnneeCreation) < CStr(annee) Then


  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut Enfin
    merci pour ces explications, j'ai utilisé la syntaxe suivante :

    anneecreation=DatePart("yyyy",oFl.DateCreated)

    je vais tester avec votre méthode.

    Merci à tous

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

Discussions similaires

  1. test valeur bouton avec javascript
    Par barouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2007, 11h40
  2. Impossible de recup valeur year en VBA
    Par omacama dans le forum VBA Access
    Réponses: 20
    Dernier message: 12/03/2007, 11h22
  3. Test valeur cellule pivot table
    Par ArnaudRenaud dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/09/2006, 08h00
  4. test valeur d'une balise?
    Par -ADX- dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 22/05/2006, 11h38
  5. test valeur null
    Par zwck dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/09/2004, 13h52

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