Eviter de réecrire toujours la meme fonction 10 fois
cotzy
Messages postés14Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention18 octobre 2005
-
25 mars 2004 à 11:22
cotzy
Messages postés14Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention18 octobre 2005
-
25 mars 2004 à 12:24
bonjour
j'explique mon probleme (enfin si on peut appeler ca un probleme :) , c'est plutot une histoire de clareté dans la code )
explication : je stocke dans des variables une fonction qui va lire dans un fichier INI la trajectoire d'un document mais le probleme c'est que pour 40 variables j'ai 40 fois la meme ligne avec pour seul changement le nom de la varible ou est stocké dans le fichier ini la trajectoire.
je me doute qu'une boucle est nécessaire mais comment faire ?
j'ai le meme probleme lors d'un choix dans un combobox ,je m'explique : seul ma valeur de list.index change lors de ma sélection
exemple :
If Combo2.ListIndex = 0 Then Call Shell(ie & note, vbMaximizedFocus)
If Combo2.ListIndex = 1 Then Call Shell(ie & fax, vbMaximizedFocus)
If Combo2.ListIndex = 2 Then Call Shell(ie & crr, vbMaximizedFocus)
If Combo2.ListIndex = 3 Then Call Shell(ie & lettre, vbMaximizedFocus)
If Combo2.ListIndex = 4 Then Call Shell(ie & dep, vbMaximizedFocus)
si quelqu'un pouvais m'aider à reduire ces lignes de codes cela m'aiderais fortement car mon code deviendrais plus propre .
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 25 mars 2004 à 11:32
comme note est une variable et "note" une chaine de caractères, tu ne peux pas avoir de relation entre les deux.
A mon avis, ton code, ainsi, ne se rétrécit pas.
Pour le rétrécir, il faudrait que les entetes dans ton fichier INI soient du style : Entete_1, Entete_2, entete_3, ...
et que tu acceptes de récupérer tes valeurs dans un tableau (et pas dans des variables séparées).
Dim mon_tableau(50) As string
Dim i as Long
For i=0 to 50
mon_tableau(i) = LireINI("variable commune", "Entete_" & i)
Next i
Tu perds en lisibilité sur le nom des variables, mais tu gagnes en taille de code.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 25 mars 2004 à 11:55
pour ton problème de :
If Combo2.ListIndex = 0 Then Call Shell(ie & note, vbMaximizedFocus)
If Combo2.ListIndex = 1 Then Call Shell(ie & fax, vbMaximizedFocus)
If Combo2.ListIndex = 2 Then Call Shell(ie & crr, vbMaximizedFocus)
If Combo2.ListIndex = 3 Then Call Shell(ie & lettre, vbMaximizedFocus)
If Combo2.ListIndex = 4 Then Call Shell(ie & dep, vbMaximizedFocus)
Utilise un select case plutôt :
Select case Combo2.ListIndex
Case 0
Call Shell(ie & note, vbMaximizedFocus)
Case 1
Call Shell(ie & fax, vbMaximizedFocus)
Case 2
'etc.
End Select
cotzy
Messages postés14Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention18 octobre 2005 25 mars 2004 à 12:24
maintenant que j'ai modofié mon code comme tu me la conseillé econs G quelques problemes .
j'ai utilisé ton code et je l'ai intégré dans un module
mais lorsque je clic sur mon comboxbox
je vais executer la commande proposé par Dark Sidious
mais le probleme c'est que maintenant mes variable note etc.. n'existe plus et donc il faudrait que je remplace ces variables par une ecriture qui va lire dans mon module .Mais laquelle?
exemple du code :
'dans la feuille
Select case Combo2.ListIndex
Case 0
Call Shell(ie & note, vbMaximizedFocus)
'mais note n'existe plus
'dans le module nommé init
Public Function char()
Dim valstk(50) As String
Dim i As Long
For i = 0 To 50
valstk(i) = LireINI("variable commune", "val" & i)
Next i
End Function
alors si vous pouviez encore me mettre sur la voie ca srait bien sympatique ;)