Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
914 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBScript] [RESOLU] modifier une fonction dans une boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBScript] [RESOLU] modifier une fonction dans une boucle

n°1315223
anthony000​0
Posté le 28-02-2006 à 12:20:15  profilanswer
 

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
mood
Publicité
Posté le 28-02-2006 à 12:20:15  profilanswer
 

n°1315252
Profil sup​primé
Posté le 28-02-2006 à 13:00:39  answer
 

Code :
  1. for i = 1 to 2
  2.     nomfichasuppr = fichier (i, varfichier)   
  3. next i
  4. function fichier(i as Integer, varfichier as String) As String
  5.        fichier = "nomfichier" & i & ".txt"
  6. end function


 
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..


Message édité par Profil supprimé le 28-02-2006 à 13:00:56
n°1315260
anthony000​0
Posté le 28-02-2006 à 13:11:01  profilanswer
 

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...

n°1315261
anthony000​0
Posté le 28-02-2006 à 13:11:44  profilanswer
 

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 ?

Message cité 1 fois
Message édité par anthony0000 le 28-02-2006 à 13:13:13
n°1315264
Profil sup​primé
Posté le 28-02-2006 à 13:16:06  answer
 

anthony0000 a écrit :

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...


Si tu souhaites entrer les noms des fichiers en dur dans l'application :

Code :
  1. for i = 1 to 2
  2.     nomfichasuppr = fichier (i)
  3. next i
  4. function fichier(i as Integer) As String
  5.     Select Case i
  6.        Case 1
  7.            fichier = "toto" & ".txt"
  8.        Case 2
  9.            fichier = "test" & ".mp3"
  10.        Case 3
  11.            fichier = "titi" & ".toto"
  12.     End Select     
  13. end function


 

n°1315269
anthony000​0
Posté le 28-02-2006 à 13:25:50  profilanswer
 

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 ?

n°1315270
Profil sup​primé
Posté le 28-02-2006 à 13:26:34  answer
 

anthony0000 a écrit :

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 ?


Bien sûr  :)  
 

Code :
  1. for i = 1 to 2
  2.    nomfichasuppr = fichier (i)
  3.    erreur = Supprime(nomfichierasuppr)
  4.    If erreur <> 0 Then
  5.       MsgBox "Impossible de supprimer le fichier : " & nomfichierasuppr & " !"
  6.    End If
  7. next i
  8. __________________________________________
  9. Function Supprime(nomfichier as string) as Integer
  10. On error Goto GestionErreur
  11.    'code pour supprimer le fichier
  12.    Supprime = 0
  13.    On error Goto 0
  14.    Exit Function
  15. GestionErreur:
  16.    Supprime = Err.Number
  17. End Function


Message édité par Profil supprimé le 28-02-2006 à 13:27:21
n°1315275
Profil sup​primé
Posté le 28-02-2006 à 13:30:20  answer
 

anthony0000 a écrit :

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 :  
 
 
...
 
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 ?


 

Code :
  1. for i = 1 to 3
  2.     nomfichasuppr = fichier (i) & "." & extension (i)
  3. next i
  4. function fichier(i as Integer) As String
  5.     Select Case i
  6.        Case 1
  7.            fichier = "toto"
  8.        Case 2
  9.            fichier = "test"
  10.        Case 3
  11.            fichier = "titi"
  12.     End Select     
  13. end function
  14. function extensionficher(i as Integer) As String
  15.     Select Case i
  16.        Case 1
  17.            fichier = "txt"
  18.        Case 2
  19.            fichier = "doc"
  20.        Case 3
  21.            fichier = "jpg"
  22.     End Select     
  23. end function

n°1315276
anthony000​0
Posté le 28-02-2006 à 13:31:59  profilanswer
 

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    
 
 
 
 

n°1315277
anthony000​0
Posté le 28-02-2006 à 13:32:41  profilanswer
 

jsuis bete, c'est vrai que je pouvais faire pareil avec l extension ^_^

mood
Publicité
Posté le 28-02-2006 à 13:32:41  profilanswer
 

n°1315281
anthony000​0
Posté le 28-02-2006 à 13:37:39  profilanswer
 

ah mince, je viens de penser à autre chose
 
je suis obligé d'avoir autant de fonctions que de fichier
 

n°1315284
Profil sup​primé
Posté le 28-02-2006 à 13:39:26  answer
 

anthony0000 a écrit :

ah mince, je viens de penser à autre chose
 
je suis obligé d'avoir autant de fonctions que de fichier


Pourquoi donc ?

n°1315286
anthony000​0
Posté le 28-02-2006 à 13:41:46  profilanswer
 

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

n°1315287
anthony000​0
Posté le 28-02-2006 à 13:42:59  profilanswer
 

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


Message édité par anthony0000 le 28-02-2006 à 13:51:18
n°1315295
Profil sup​primé
Posté le 28-02-2006 à 13:57:00  answer
 

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.

n°1315307
anthony000​0
Posté le 28-02-2006 à 14:05:22  profilanswer
 

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    

n°1315313
anthony000​0
Posté le 28-02-2006 à 14:08:36  profilanswer
 

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)

n°1315315
Profil sup​primé
Posté le 28-02-2006 à 14:09:54  answer
 

anthony0000 a écrit :

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

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é  :D  

n°1315321
anthony000​0
Posté le 28-02-2006 à 14:14:05  profilanswer
 

"Tu ne peux pas écrire des bouts de code à la volée durant l'exécution."
 
?? pour quelle raison ?

n°1315324
Profil sup​primé
Posté le 28-02-2006 à 14:17:06  answer
 

anthony0000 a écrit :

"Tu ne peux pas écrire des bouts de code à la volée durant l'exécution."
 
?? pour quelle raison ?


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


Message édité par Profil supprimé le 28-02-2006 à 14:18:23
n°1315329
anthony000​0
Posté le 28-02-2006 à 14:22:35  profilanswer
 

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

Message cité 1 fois
Message édité par anthony0000 le 28-02-2006 à 14:28:14
n°1315330
anthony000​0
Posté le 28-02-2006 à 14:23:31  profilanswer
 

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

n°1315332
anthony000​0
Posté le 28-02-2006 à 14:24:01  profilanswer
 

bon c'est vrai que ça ressemble plus à du bidouillage...

n°1315334
Profil sup​primé
Posté le 28-02-2006 à 14:25:24  answer
 

anthony0000 a écrit :

alors je ne comprends pas ce qui arrive
ce sont les 3 fonctions qui me servent à écrire dans à la fin du 2eme script
 

Code :
  1. Function ECRIDEBUTFONC
  2. Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii)
  3.  File.WriteLine "function fichier(i)"
  4.  File.WriteLine "Select Case (" & nbFichiersFait + 1 & " )"
  5.  File.Close
  6. End Function
  7. '----------------------------------------------------------------------------------------------------
  8. Function ECRIFINFONC
  9. Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii)
  10.  File.WriteLine "end Select"
  11.  File.WriteLine "end Function"
  12.  File.Close
  13. End Function
  14. '----------------------------------------------------------------------------------------------------
  15. Function ECRIFICHIER
  16.   Set File = fso.OpenTextFile(supprtemp, forAppending, True, ModeAscii) 
  17.   File.WriteLine "     Case " & nbFichiersFait + 1
  18.   File.WriteLine "         fichier = " & nomfichasuppr
  19.   File.Close
  20. End Function



Ah oui tu travailles sous vba excel, et je le connais que très peu.
Je ne savais pas qu'on pouvait faire cela  ;)


Message édité par Profil supprimé le 28-02-2006 à 14:26:00
n°1315342
anthony000​0
Posté le 28-02-2006 à 14:29:23  profilanswer
 

vba excel ???
 
j'utilise primalscript, et ecrit dans des fichiers qui portent l'extension vbs
 
 
ensuite, est-ce le meme code ?

n°1315350
anthony000​0
Posté le 28-02-2006 à 14:35:09  profilanswer
 

en tout cas c'est bien pratique et tu m'as bien aidé !
 
merci beaucoup !
 

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBScript] [RESOLU] modifier une fonction dans une boucle

 

Sujets relatifs
[vbScript] [Excel] probleme graphique[Resolu]selection de ligne d'un tableau dynamique et formulaire
Protéger un livre d'or [Résolu]Prog Excel : modifier l'icône
[VBScript] [RESOLU] Boucle Do ... Loop[Résolu]liste de case à cocher
processus et boucle infinie -> ressources CPU à 100% ou pas?appeller une fonction en javascript à l'aide d'un variable
Plus de sujets relatifs à : [VBScript] [RESOLU] modifier une fonction dans une boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR