Eviter de réecrire toujours la meme fonction 10 fois

cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005 - 25 mars 2004 à 11:22
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 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.

exemple :

note = LireINI("variable commune", "note")
fax = LireINI("variable commune", "fax")
crr = LireINI("variable commune", "crr")
lettre = LireINI("variable commune", "lettre")
dep = LireINI("variable commune", "dep")
frais = LireINI("variable commune", "frais")
ppt = LireINI("variable commune", "ppt")
diriti = LireINI("variable commune", "diriti")
homepage = LireINI("variable commune", "homepage")

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 .

Merci d'avance

4 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
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.

Manu
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 octobre 2005
25 mars 2004 à 12:03
MERCI BEAUCOUPS A VOUS 2

JE VAIS ESSAYER CA DE CE PAS
ET JE VOUS TIENS O COURANT

TCHAOO
0
cotzy Messages postés 14 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 18 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 ;)

merci
0
Rejoignez-nous