|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Passer une condition à une sub comme paramètre string [ Langages dérivés / VBA ] (larsene67)
Informations & options pour cette discussion
vendredi 7 juillet 2006 à 09:33:56 |
Passer une condition à une sub comme paramètre string

larsene67
|
Bonjour,
J'ai un programme qui repete regulierement une boucle conditionelle mais avec une condition différente. Afin de simplifier celui-ci, j'ai voulu creer une sub contenant cette boucle, et lui passer la condition comme paramêtre string. Le problème est que cette chaine contient une collection, et que le programme me fais une erreur "type incompatible" Pourriez-vous m'aider?
Sub zzz(Condition)
Dim Liste As New Collection Dim r As New ScriptControl r.Language = "vbscript"
'sert à trier une copie de la collection "Options" 'For i = 1 To Options.Count ' Liste.Add Options(i) 'Next i 'Pour l'exemple, on va dire: Liste.Add "ligne1" Liste.Add "ligne2" Liste.Add "ligne3" Liste.Add "ligne4"
i = 1 Do While i <= Liste.Count If r.Eval(Condition) Then Liste.Remove (i) i = i - 1 End If i = i + 1 Loop
End Sub
Sub test() tmp = "ligne1" zzz ("Liste(i)=" & Chr(34) & tmp & Chr(34)) End Sub
Merci d'avance pour votre coup de main...
|
|
|
vendredi 7 juillet 2006 à 09:41:07 |
Re : Passer une condition à une sub comme paramètre string

jrivet
|
Salut, Essaie cette boucle (dans la condition tu doit remplacer i par sa valeur dans la boucle sinon cela ne sert a rien)  Do While i <= Liste.Count Condition = Replace(Condition, "(i)", i) If r.Eval(Condition) Then Liste.Remove (i) i = i - 1 End If i = i + 1 Loop

Coloration syntaxique automatique [AFCK]  @+, Julien Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>
|
|
|
vendredi 7 juillet 2006 à 09:57:03 |
Re : Passer une condition à une sub comme paramètre string

larsene67
|
Raté :( En fait, le remplacement devrait être Condition = Replace(Condition, "(i)", "(" & i & ")")
Pour que ma condition contienne toujours la reference à ma collection Liste(1) mais même dans ce cas, cela me fait toujours la même erreur de "type incompatible".
Dans ton exemple, le code ne fais plus d'erreur, mais compare une variable Liste1 à une chaine "ligne1", ce qui n'est pas ce que je veux :(
Merci quand même, mais aurriez-vous d'autres idées?
|
|
|
vendredi 7 juillet 2006 à 10:05:31 |
Re : Passer une condition à une sub comme paramètre string

larsene67
|
Réponse acceptée !
Bon, ton idée m'a quand même mis sur la voie, et j'ai trouvé ceci:
Do While i <= Liste.Count ConditionBis = Replace(Condition, "Liste(i)", Chr(34) & Liste(i) & Chr(34)) If r.Eval(ConditionBis) Then Liste.Remove (i) i = i - 1 End If i = i + 1 Loop
Du coup, maintenant cela passe, bien que je trouve cela un peu lourd... En tout cas, merci du coup de main, et si quelqu'un à une solution plus light, n'hésiter pas à m'en faire part...
|
|
|
vendredi 7 juillet 2006 à 10:56:58 |
Re : Passer une condition à une sub comme paramètre string

OneHacker
|
Préciser dans le titre si c'est du VB6 ou VB.Net ! Redman
|
|
|
vendredi 7 juillet 2006 à 10:59:50 |
Re : Passer une condition à une sub comme paramètre string
|
vendredi 7 juillet 2006 à 11:01:19 |
Re : Passer une condition à une sub comme paramètre string
|
vendredi 7 juillet 2006 à 11:06:14 |
Re : Passer une condition à une sub comme paramètre string

larsene67
|
Je trouve pas où modifier le titre :(
|
|
|
vendredi 7 juillet 2006 à 11:08:59 |
Re : Passer une condition à une sub comme paramètre string
|
vendredi 7 juillet 2006 à 15:41:19 |
Re : Passer une condition à une sub comme paramètre string
|
Cette discussion est classé dans : string, liste, add, passer, condition
Répondre à ce message
Sujets en rapport avec ce message
Passer un tableau de string de VB vers une DLL C++ [ par paco ]
Salut, mon problème est le suivant : je désire travailler avec des tableaux de string dans une de mes DLL C++. Ces tableaux, dynamiques, doivent venir
Recup de donnees de liste modifiable ss access [ par tema ]
Salut a tous, voila g un peti prob, en fait je voudrais recuperer la valeur contenue dans une zone de liste modifiable pour pouvoir ouvrir un formulai
recupere un String pour le faire passer comme le Nom d'1 Control [ par Rmano ]
Salut !Mon Pb consiste à faire qu'une chaine de caractere soit reconnue comme le nom d'un controle ! Pour etre plus explicite, je vais donner un peti
Requete vb [ par rabbiwan ]
salut g un problem de requete sous vb je veux faire passer ma requete a travers un string mais le string n'est pas assez grand (674 caractère) et je v
taleau [ par labartho ]
je debute alors j'ai un peu de mal :-))j'ai une liste MSFLEXGRID qui comporte 62 colonnes et x lignes. Chaque colonne correspond a 1/2 journée et cha
Comment passer un caractère dans une fonction [ par CBTech ]
ThierryBonjour à tousPour commencer je ne connais pas le langage VBscript et donc j'essai de faire mon apprentissage.Ma question est comment passer un
condition sur zone de liste modifiable [ par d_zyl ]
Salut, voila mon souci : dans un formulaire, j'ai deux zones de liste modifiable . la première donne les choix A,B et C et la deuxième donne les choix
passer une valeur d'une form à une autre (URGENT) [ par tchoo83 ]
Bonjour voila j'ai un petit soucis...J'ai une form1 qui recupere une variable string d'un listviewdonc j'ai dans mon controleCode: listview_click()Dim
Empêcher la saisie dans un ComboBox [ par deseb ]
Salut,Dans mon prog je désire proposer un liste de choix déroulante à l'utilisateur => je veux passer par une ComboBox, le problème est que je veux l'
Votre avis de développeur : Passer beaucoup de paramètres à une fonction VB... [ par jockos ]
Selon vous, quel est l'inconvénient de passer 15 paramètres de type String (en ByRef) a une fonction ?Chaque String fait au maximum 30 caractères. De
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

LG KP501
Entre 9€ et 159€
|