Fichiers dans un tableau VBS
Résolu/Fermé
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
-
10 juin 2008 à 12:35
delawood - 7 juil. 2008 à 15:26
delawood - 7 juil. 2008 à 15:26
A voir également:
- Fichiers dans un tableau VBS
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
1
11 juin 2008 à 09:36
11 juin 2008 à 09:36
il nya personne pour m'aider????
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
1
11 juin 2008 à 12:29
11 juin 2008 à 12:29
Oui même si il retourne 1 si dans mon repertoire un fichier contient 20080610 (DateVeille), c'est pas grave, je change juste le test au niveau de l'affichage.. Mais il fonctionne pas toujours.. et dans ce que tu ma filé j'ai essayé de modifier en fait de objFile.Name par objFile.DateLastModified
dans :
For Each objFile in colFiles
If Instr(objFile.Name, DateHier) > 0 Then
retour=retour+1
End If
Next
mais toujours un pb.. si j'ai limpression que ca vient de ce test : If Instr(objFile.Name, DateHier) > 0..
Si je comprends bien Instr(objFile.Name, DateHier) est > 0 si la date du fichier est crée apres la date DateHier qui est la date de la veille.. donc je normalement ca devrait marcher..
j'ai limpression que c'est la valeur de retour qui n'est pas tester..
Mais jessaye d'afficher avec le MsgBox retour mais j'ai un boite de dialogue vide ( aucun valeur).. C'est comme ca qu'on peut l'afficher pour sa valeur ?? ou alors faut faire autre chose??
dans :
For Each objFile in colFiles
If Instr(objFile.Name, DateHier) > 0 Then
retour=retour+1
End If
Next
mais toujours un pb.. si j'ai limpression que ca vient de ce test : If Instr(objFile.Name, DateHier) > 0..
Si je comprends bien Instr(objFile.Name, DateHier) est > 0 si la date du fichier est crée apres la date DateHier qui est la date de la veille.. donc je normalement ca devrait marcher..
j'ai limpression que c'est la valeur de retour qui n'est pas tester..
Mais jessaye d'afficher avec le MsgBox retour mais j'ai un boite de dialogue vide ( aucun valeur).. C'est comme ca qu'on peut l'afficher pour sa valeur ?? ou alors faut faire autre chose??
onesdf
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
120
11 juin 2008 à 12:41
11 juin 2008 à 12:41
Le test se fout complètement de la date de création ou de dernier accès du fichier, il teste simplement si dans le nom du fichier, on retrouve la séquence 20080610 car comme tu l'as indiqué dans ton premier post (et c'est de là que je suis parti), les noms des fichiers de sauvegarde ont pour structure xxx_YYYYMMDDxxx.bak.
Donc pour une date du jour égale au 11 juin 2008, je regarde simplement si un fichier est nommé xxx_20080610xxx.bak si tel est le cas, alors ca retourne 1.
Ai-je été plus clair ?
Donc pour une date du jour égale au 11 juin 2008, je regarde simplement si un fichier est nommé xxx_20080610xxx.bak si tel est le cas, alors ca retourne 1.
Ai-je été plus clair ?
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
1
>
onesdf
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
11 juin 2008 à 13:32
11 juin 2008 à 13:32
ok je tai mieux compris..
Du coup j'ai pu faire une modification et ca marche normallement.. en fait voila ce que j'ai rajouté comme tu m'as dit :
For Each objFile in colFiles
If Instr(objFile.Name , dateHier) > 0 Then
retour=retour+1
Else retour=0
End If
next
donc j'ai rajouté le : Else retour=0.. sinon j'avais une valeur du retour qui était vide.. et du coup dans le tes d'affichage du resultata j'ai fait ;
If retour<1 then
WScript.Echo "Fileage CRITICAL - Le dernier fichier de sauvegarde a plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Le dernier fichier de sauvegarde a moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
donc voila je vais bien tester dans tous les cas de figure et je te tiens au courant si jai un autre souci..
Merci de ton aide...
Du coup j'ai pu faire une modification et ca marche normallement.. en fait voila ce que j'ai rajouté comme tu m'as dit :
For Each objFile in colFiles
If Instr(objFile.Name , dateHier) > 0 Then
retour=retour+1
Else retour=0
End If
next
donc j'ai rajouté le : Else retour=0.. sinon j'avais une valeur du retour qui était vide.. et du coup dans le tes d'affichage du resultata j'ai fait ;
If retour<1 then
WScript.Echo "Fileage CRITICAL - Le dernier fichier de sauvegarde a plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Le dernier fichier de sauvegarde a moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
donc voila je vais bien tester dans tous les cas de figure et je te tiens au courant si jai un autre souci..
Merci de ton aide...
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
1
11 juin 2008 à 12:41
11 juin 2008 à 12:41
ou alors je pense que le problème vient du fait qu'il n'arrive pas peut être à bien faire la comparaison entre le Datehier et objFile.Name (ou objFile.DatelastModified)
dans If Instr(objFile.Name, DateHier) > 0.. à cause des formats.. tu penses pas ?????
dans If Instr(objFile.Name, DateHier) > 0.. à cause des formats.. tu penses pas ?????
kamal1983
Messages postés
11
Date d'inscription
lundi 19 mai 2008
Statut
Membre
Dernière intervention
12 juin 2008
12 juin 2008 à 12:02
12 juin 2008 à 12:02
Bonjour a toutes et a tous,
j'ai une fonction qui fait le lien entre vba et la table"stock" d'access,la voici :
fpubDBConnect
vpubDBRecordset.Open ("SELECT * FROM stock WHERE ID =" & CInt(txtID)), vpubDBConnection, adOpenDynamic, adLockOptimistic
With vpubDBRecordset
End With
vpubDBRecordset.Close
je veux en effet créer une commande vb qui fera le tri pour la table "stock" par ordre decroissant de la valeur du champ 1. est ce que qulqu'un sait comment résoudre ce gros probléme , je ne sais pas si il existe une solution ou pas pour ce probléme, mais moi je compte sur vos talents les amis !
merci pour votre réponse
j'ai une fonction qui fait le lien entre vba et la table"stock" d'access,la voici :
fpubDBConnect
vpubDBRecordset.Open ("SELECT * FROM stock WHERE ID =" & CInt(txtID)), vpubDBConnection, adOpenDynamic, adLockOptimistic
With vpubDBRecordset
End With
vpubDBRecordset.Close
je veux en effet créer une commande vb qui fera le tri pour la table "stock" par ordre decroissant de la valeur du champ 1. est ce que qulqu'un sait comment résoudre ce gros probléme , je ne sais pas si il existe une solution ou pas pour ce probléme, mais moi je compte sur vos talents les amis !
merci pour votre réponse
onesdf
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
120
12 juin 2008 à 12:05
12 juin 2008 à 12:05
Salut,
Ton problème n'a rien à voir avec le post dans lequel tu as laissé un message, qui de plus était marqué comme résolu.
Pour répondre, quand même à ton problème, tu peux EDIT : J'avais pas vu le flood dans les autres posts. Bon courage
Ton problème n'a rien à voir avec le post dans lequel tu as laissé un message, qui de plus était marqué comme résolu.
Pour répondre, quand même à ton problème, tu peux EDIT : J'avais pas vu le flood dans les autres posts. Bon courage
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
1
>
onesdf
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
3 juil. 2008 à 11:54
3 juil. 2008 à 11:54
Salut Onesdf,
Je reviens vers toi par rapport à mon script de tes de fichiers là.. Car j'ai un souci qu eje comprends pas trop. Je te montre en fait ce que j'vais finaliser comme script :
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strFolder) Then 'Vérification si le répertoire existe
Set objFolder = objFSO.GetFolder(strFolder)
set colFiles = objFolder.Files
annee = Year(Now-1)
If Month(Now-1) < 10 Then
mois = "0" & Month(Now-1)
Else
mois = Month(Now-1)
End If
If Day(Now - 1) < 10 Then
jour = "0" & Day(Now - 1)
Else
jour = Day(Now - 1)
End If
datehier = annee & mois & jour
MsgBox datehier
For Each objFile in colFiles
If Instr(objFile.Name , dateHier) > 0 Then
retour=retour+1
Else retour=0
End If
MsgBox objFile.Name
Next
MsgBox retour
If retour<1 then
WScript.Echo "Fileage CRITICAL - Le dernier fichier de sauvegarde a plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Le dernier fichier de sauvegarde a moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
Else
Wscript.Echo "Fileage Unknown - le dossier spécifie n existe pas"
Wscript.Quit(intUnknown)
End If
Donc je te rafraichi l'idée en fait, Il teste si dans un repertoire il ya un fichier qui date de la veille.. Donc il me renvoit un "1" si jamais il ya un fichier crée la veille et un "o" sinon.. Par contre j'ai un beug.. Je t'explique : on a eu un pb de sauvegarde et puis on a du relancer le Job de sauvegarde donc du coup il ma crée des fichiers aujourd'hui.. Et je constate que le script ne marche plus bien...
Donc j'ai fait un test, j'ai renommé le fichier de sauvegarde d'aujourdhui pur qu'il se trouve Ce que je constate en fait, c'est qu'il se trouve comme le premier fichier par son nom( où qu'il ne soit pas dernier fichier).. Et là le script fonctionne.. Et quand il se trouve dernier fichier il me met une erreur.. Donc je constate que il applique son test
If Instr(objFile.Name , dateHier) que sur le dernier fichier qu'il traite et si celui est différenet de la date de la veille là il renvoie une erreur... Je sais pas si j'ai pu me faire comprendre... Essaye de me donneer d'autres idées stp.. A Mon avis ca vient de ce test là... En d'autres termes il garde le resultat du dernier fichier qu'il traite et il oublie les autres fichiers...
Merci
Je reviens vers toi par rapport à mon script de tes de fichiers là.. Car j'ai un souci qu eje comprends pas trop. Je te montre en fait ce que j'vais finaliser comme script :
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strFolder) Then 'Vérification si le répertoire existe
Set objFolder = objFSO.GetFolder(strFolder)
set colFiles = objFolder.Files
annee = Year(Now-1)
If Month(Now-1) < 10 Then
mois = "0" & Month(Now-1)
Else
mois = Month(Now-1)
End If
If Day(Now - 1) < 10 Then
jour = "0" & Day(Now - 1)
Else
jour = Day(Now - 1)
End If
datehier = annee & mois & jour
MsgBox datehier
For Each objFile in colFiles
If Instr(objFile.Name , dateHier) > 0 Then
retour=retour+1
Else retour=0
End If
MsgBox objFile.Name
Next
MsgBox retour
If retour<1 then
WScript.Echo "Fileage CRITICAL - Le dernier fichier de sauvegarde a plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Le dernier fichier de sauvegarde a moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
Else
Wscript.Echo "Fileage Unknown - le dossier spécifie n existe pas"
Wscript.Quit(intUnknown)
End If
Donc je te rafraichi l'idée en fait, Il teste si dans un repertoire il ya un fichier qui date de la veille.. Donc il me renvoit un "1" si jamais il ya un fichier crée la veille et un "o" sinon.. Par contre j'ai un beug.. Je t'explique : on a eu un pb de sauvegarde et puis on a du relancer le Job de sauvegarde donc du coup il ma crée des fichiers aujourd'hui.. Et je constate que le script ne marche plus bien...
Donc j'ai fait un test, j'ai renommé le fichier de sauvegarde d'aujourdhui pur qu'il se trouve Ce que je constate en fait, c'est qu'il se trouve comme le premier fichier par son nom( où qu'il ne soit pas dernier fichier).. Et là le script fonctionne.. Et quand il se trouve dernier fichier il me met une erreur.. Donc je constate que il applique son test
If Instr(objFile.Name , dateHier) que sur le dernier fichier qu'il traite et si celui est différenet de la date de la veille là il renvoie une erreur... Je sais pas si j'ai pu me faire comprendre... Essaye de me donneer d'autres idées stp.. A Mon avis ca vient de ce test là... En d'autres termes il garde le resultat du dernier fichier qu'il traite et il oublie les autres fichiers...
Merci
delawood
>
delawood
Messages postés
14
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
3 juillet 2008
7 juil. 2008 à 15:26
7 juil. 2008 à 15:26
Il nya personne pour m'aider ????
11 juin 2008 à 09:49
11 juin 2008 à 10:51
Pour faire simple, je teste des fichiers dans un repertoire qui vérifie sil ya eu des sauvegardes la veille..
Or avant lorsqueun fichier de sauvegarde était crée il était supprimé le lendemain... Donc mon script que je présente ci dessous, me permettait de tester si un fichier avait plus de 24h dans le repertoire.. Et ca ca marchait bien...
Mais maintenant on a d'autre sauvegardes dans d'autres repertoires.. et je veux utiliser le meme script.. Or dans ce cas, les fichiers de sauvergarde s'accumulent.. Donc mon script là ne marche plus car, il yaura toujours un fichier qui a plus de 24h... Mais il faut que j'arrive à tester si parmi tous ces fichiers crées, il ya un fichier qui a été crée la veille pour voir si la sauvegarde de la veille a marché... c'est plus clair ?
je sais pas cmt le modifier mon script pour arriver à ca ...
<script language="VBScript">
If Wscript.Arguments.Named.Exists("h") Or Wscript.Arguments.Count = 0 Then
Wscript.Echo "Plugin help screen:"
Wscript.Arguments.ShowUsage()
Wscript.Quit(0)
End If
' Déclaration des variables et constantes
'----------------------------------------
strFolder = Wscript.Arguments.Unnamed.Item(0)
strMin = wscript.Arguments.Unnamed.Item(1)
strMin = Int(strMin)
Const intOK = 0
Const intWarning = 1
Const intCritical = 2
Const intUnknown = 3
'Début des tests
'---------------
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strFolder) Then 'Vérification si le répertoire existe
Set objFolder = objFSO.GetFolder(strFolder)
set colFiles = objFolder.Files
For Each objFile in colFiles
If DateDiff("n",objFile.DateLastModified,Now())>strMin Then
retour=retour+1
End If
Next
If retour>0 then
WScript.Echo "Fileage CRITICAL - des fichiers ont plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Tous les fichiers ont moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
Else
Wscript.Echo "Fileage Unknown - le dossier spécifie n existe pas"
Wscript.Quit(intUnknown)
End If
</script>
11 juin 2008 à 11:01
un
Et tu calcules datehier à partir de la fonction Now
11 juin 2008 à 11:32
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strFolder) Then 'Vérification si le répertoire existe
Set objFolder = objFSO.GetFolder(strFolder)
set colFiles = objFolder.Files
annee = Year(Now)
If Month(Now) < 10 Then
mois = "0" & Month(Now)
Else
mois = Month(Now)
End If
If Day(Now - 1) < 10 Then
jour = "0" & Day(Now - 1)
Else
jour = Day(Now - 1)
End If
datehier = annee & mois & jour
MsgBox datehier
For Each objFile in colFiles
If Instr(objFile.Name, DateHier) > 0 Then
retour=retour+1
End If
Next
If retour>0 then
WScript.Echo "Fileage CRITICAL - des fichiers ont plus de " & strMin & " Minutes"
Wscript.Quit(intCritical)
Else
WScript.Echo "Fileage OK - Tous les fichiers ont moins de " & strMin & " Minutes"
WScript.Quit(intOK)
End If
Else
Wscript.Echo "Fileage Unknown - le dossier spécifie n existe pas"
Wscript.Quit(intUnknown)
End If
Oui mais le pb est que lorqu'il rencontre un fichier qui à plus de 24 ( datant de la veille) il passe le "retour à 1" donc du coup j'aurais le message d'erreur.. Or je voudrais qu'il passe le "retour à 1" que lorsqu'apres avoir traiter tous les fichiers il se rend compte qu'il ya aucun fichier datant dont la date est celle de la veille.. Dans le cas où il trouve au moins un seul fichier de moins de 24h il n'incrémente pas le retour.. tu vois un peu???
11 juin 2008 à 11:47
annee = Year(Now-1)
If Month(Now-1) < 10 Then
mois = "0" & Month(Now-1)
Else
mois = Month(Now-1)
End If
Oui mais le pb est que lorqu'il rencontre un fichier qui à plus de 24 ( datant de la veille) il passe le "retour à 1" donc du coup j'aurais le message d'erreur.. Or je voudrais qu'il passe le "retour à 1" que lorsqu'apres avoir traiter tous les fichiers il se rend compte qu'il ya aucun fichier datant dont la date est celle de la veille.. Dans le cas où il trouve au moins un seul fichier de moins de 24h il n'incrémente pas le retour.. tu vois un peu???
Le code fournit retourne 1 seulement si dans ton répertoire un fichier contient 20080610 (DateVeille)
Si je t'ai bien compris, tu voudrais que retour soit égal à 1 seulement si aucune date de fichier dans le répertoire n'a pour date celle de la veille, c'est bien ca ?