modifier une fonction dans une boucle [VBScript] [RESOLU] - VB/VBA/VBS - Programmation
Marsh Posté le 28-02-2006 à 13:00:39
Code :
|
Mais je ne comprends pas trés bien ce que tu veux faire exactement
Que contient ta variable "varfichier" ? elle n'est pas utilisée dans ta fonction..
Marsh Posté le 28-02-2006 à 13:11:01
je pensais juste qu'il fallait faire comme ça ^_^
mais c'est vrai que je ne me suis pas posé la question.
sinon je voulais utiliser ça pour choisir un fichier different a chaque boucle, donc j'avais fait plusieurs fonctions.
est ce possible de faire ça dans une seule fonction? les fichiers n'ont en fait pas du tout le meme nom.
par exemple, dans une boucle en 3, je vais chercher le fichier 1 qui s'appelle "test.txt", puis je fait un traitement dessus (ça ça contionne), a la fin du traitement, la boucle reviens et va chercher le 2eme fichier qui s'appelle "truc.chose" etc...
Marsh Posté le 28-02-2006 à 13:11:44
mais ç'est vrai que je n'ai pas besoin de la variable varfichier
ah
et ce que j'ai oublié de dire est que je sépare le nom du fichier de son extension, et que je vais les chercher chacuns dans une fonction differente.
je peux les mettre dans la meme fonction ? pour ensuite aller les chercher en meme temps ?
Marsh Posté le 28-02-2006 à 13:16:06
anthony0000 a écrit : je pensais juste qu'il fallait faire comme ça ^_^ |
Si tu souhaites entrer les noms des fichiers en dur dans l'application :
Code :
|
Marsh Posté le 28-02-2006 à 13:25:50
ok, je comprends comment ça peut marcher
par contre, je dois continuer de separer les noms des extensions ^_^
Si tu souhaites entrer les noms des fichiers en dur dans l'application :
Code :
for i = 1 to 2
nomfichasuppr = fichier (i)
next i
function fichier(i as Integer) As String
Select Case i
Case 1
fichier = "toto"
extension = "txt"
Case 2
fichier = "test"
extension = "mp3"
Case 3
fichier = "titi"
extension = "toto"
End Select
end function
je pense que j'ai saisi mais je ne comprends pas comment faire du genre :
for i = 1 to 2
nomfichasuppr = fichier (i)
extensionfichier = fichier(i)
next i
mais je pense que comme ça ça ne marchera pas ?
Marsh Posté le 28-02-2006 à 13:26:34
anthony0000 a écrit : mais ç'est vrai que je n'ai pas besoin de la variable varfichier |
Bien sûr
Code :
|
Marsh Posté le 28-02-2006 à 13:30:20
anthony0000 a écrit : ok, je comprends comment ça peut marcher |
Code :
|
Marsh Posté le 28-02-2006 à 13:31:59
ah, 2 choses :
je me suis mal expliqué, meme si c'est vrai que c'est par rapport à des fichiers que je veux supprimer, j'utilise WMI pour les supprimer (pour faire la recherche sur tout le dur pour les supprimer).
et donc j'ai besoin de lui indiquer le nom et l extension.
et je voudrais savoir (parce que je ne maitrise pas encore les fonction parfaitement) comment recuperer 2 variables dans une fonction
mais ici, je ne pense pas que ça fonctionne.
for i = 1 to 2
nomfichasuppr = fichier (i)
extensionfichier = fichier(i)
next i
function fichier(i as Integer) As String
Select Case i
Case 1
fichier = "toto"
extension = "txt"
Case 2
fichier = "test"
extension = "mp3"
Case 3
fichier = "titi"
extension = "toto"
End Select
end function
Marsh Posté le 28-02-2006 à 13:32:41
jsuis bete, c'est vrai que je pouvais faire pareil avec l extension ^_^
Marsh Posté le 28-02-2006 à 13:37:39
ah mince, je viens de penser à autre chose
je suis obligé d'avoir autant de fonctions que de fichier
Marsh Posté le 28-02-2006 à 13:39:26
anthony0000 a écrit : ah mince, je viens de penser à autre chose |
Pourquoi donc ?
Marsh Posté le 28-02-2006 à 13:41:46
raison :
j'ai 2 script, l'un demande les noms des fichiers, et les ecris à la fin de la 2eme fonction sous forme de fonction, je ne sais pas combien il peut y avoir de fichier donc je ne peux pas ecrire de select case
Marsh Posté le 28-02-2006 à 13:42:59
sinon, je pense qu'il faudrait que je change ma manière d'écrire les noms des fichiers saisis dans le 1er script pour les ecrire dans le 2eme script
mais a chaque fois qu'un fichier est saisi, je lance la fonction qui permet d'ecrire le fichier sous forme de fonction (pour etre réutilisable) à la fin du 2eme script
Marsh Posté le 28-02-2006 à 13:57:00
Déclare un tableau à deux dimensions en variable globale
Dim Tableau(2,0) as String
Et à chaque fois que tu dois ajouter un nouveau fichier :
Redim Preserve Tableau(2,Ubound(Tableau(2)+1)
Tableau(1,Ubound(Tableau(2)) = "MonFichier"
Tableau(2,Ubound(Tableau(2)) = "MonExtension"
Et ensuite tu fait ta boucle sur tous les élements du tableau.
Dans Tableau(1,i) tu as le nom de ton fichier
Et dans Tableau(2,i) tu as l'extension associée.
Marsh Posté le 28-02-2006 à 14:05:22
ouh, ça se complique pour moi ^_^
je viens d'avoir un début d'idée mais avant tout je voulais savoir, en vbscript si j'ecris les variable comme "as string", ça ne fonctionne pas, il reconnait pas, donc je ne suis pas obligé de mes mettre.
malheureusement, d'habitude je comprend un peu comment ça fonctionne lorsqu'on m'aide mais là, j'avoue que je pense que je vais me perdre.
l'autre chose est que en reflechissant, et en tirant les ficelles, il y a peu etre moyen d'utiliser le select case :
il suffit que j'ecrive dans le fichier (et AVANT la saisie des noms) le debut de la fonction genre :
function fichier(i)
Select Case i
qu'ensuite j'écrive a chaque fois qu'un nom est saisi :
Case var <-- ici en variable mais qui deviendra 1 ou 2 etc dans le fichier ecrit
fichier = "toto"
extension = "txt"
et apres la fin de la saisie, je j ecris la fermeture de la fonction :
End Select
end function
Marsh Posté le 28-02-2006 à 14:08:36
désolé si j'ai l'air de "cracher" sur ta dernière soluce, je m'y pencherais mais lorsque j'aurai fait un script fonctionnel (pour l'optimisation)
Marsh Posté le 28-02-2006 à 14:09:54
anthony0000 a écrit : ouh, ça se complique pour moi ^_^ |
Tu ne peux pas écrire des bouts de code à la volée durant l'exécution.
Donc il te reste la solution du tableau, à remplir et redimensionner au fur et à mesure.
désolé
Marsh Posté le 28-02-2006 à 14:14:05
"Tu ne peux pas écrire des bouts de code à la volée durant l'exécution."
?? pour quelle raison ?
Marsh Posté le 28-02-2006 à 14:17:06
anthony0000 a écrit : "Tu ne peux pas écrire des bouts de code à la volée durant l'exécution." |
Ce n'est pas possible en visual basic (et je ne connais pas de language qui permet de le faire).
Par exemple : fichier & numero > vb considère cela comme une chaîne de caractères à cause du "&"
EDIT : j'ai une réunion là, donc je te souhaite bon courage ! A bientôt
Marsh Posté le 28-02-2006 à 14:22:35
alors je ne comprends pas ce qui arrive
ce sont les 3 fonctions qui me servent à écrire dans à la fin du 2eme script
[code]
Function ECRIDEBUTFONC
Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii)
File.WriteLine "function fichier(i)"
File.WriteLine "Select Case (" & nbFichiersFait + 1 & " )"
File.Close
End Function
'----------------------------------------------------------------------------------------------------
Function ECRIFINFONC
Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii)
File.WriteLine "end Select"
File.WriteLine "end Function"
File.Close
End Function
'----------------------------------------------------------------------------------------------------
Function ECRIFICHIER
Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii)
File.WriteLine " Case " & nbFichiersFait + 1
File.WriteLine " fichier" & " = " & """" & nomfichasuppr & """"
File.Close
End Function
Marsh Posté le 28-02-2006 à 14:23:31
le résultat quand j'ouvre le 2eme script :
Function fichier(i)
Select Case (1)
Case 1
fichier = "vue_paradisiaque.exe.zip"
Case 2
fichier = "vue_paradisiaque.exe"
end Select
end Function
Marsh Posté le 28-02-2006 à 14:25:24
anthony0000 a écrit : alors je ne comprends pas ce qui arrive
|
Ah oui tu travailles sous vba excel, et je le connais que très peu.
Je ne savais pas qu'on pouvait faire cela
Marsh Posté le 28-02-2006 à 14:29:23
vba excel ???
j'utilise primalscript, et ecrit dans des fichiers qui portent l'extension vbs
ensuite, est-ce le meme code ?
Marsh Posté le 28-02-2006 à 14:35:09
en tout cas c'est bien pratique et tu m'as bien aidé !
merci beaucoup !
Marsh Posté le 28-02-2006 à 12:20:15
bonjour !
nouveaux petit problème, à propos des fonctions.
hormis le fait que je n'arrive pas à récupérer des variables d'une fonction pour l'utiliser dans une autre (mais soit c'est normal soit je fait mal, mais j'ai pu me débrouiller avec) maintenant je voudrais pour lancer une fonction différente (a un chiffre près) a chaque nouveau passage dans une boucle
sans la boucle c'est le même problème je pense
nomfichasuppr = fichier1(varfichier) <-- ceci marche normalement et va chercher la variable dans la fonction du meme nom (les 2 fonctions sont en dessous)
par contre je voudrais faire quelque chose dans ce genre (dans une boucle):
for i = 1 to 2
nomfichasuppr = fichier & numero & (varfichier)
numero = numero + 1
next
function fichier1(varfichier)
fichier1 = "nomfichier1.txt"
end function
function fichier2(varfichier)
fichier2 = "nomfichier1.txt"
end function
ainsi, il pourra aller chercher la fonction fichier1 lorsque que "numero" est a 1 et chercher la 2eme lorsqu'il est a 2 !
Message édité par anthony0000 le 28-02-2006 à 15:51:57