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)

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

Membre Club
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

jrivet

Membre Club
Salut,

OneHacker: Vous êtes ici :
Thèmes / Visual Basic 6 / Langages dérivés / VBA / Passer une condition à une sub comme paramètre string

Qu est ce qu il te faut de plus????

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>

vendredi 7 juillet 2006 à 11:01:19 | Re : Passer une condition à une sub comme paramètre string

OneHacker

Ben maintenant que j'ai cliqué sur le lien je le vois pardi ! Mais mettez le dans le titre qu'on lui puisse savoir car c'est pénible à force !

Redman

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

jrivet

Membre Club
Pas besoin de cliquer sur le lien c'est marque en haut de la page!!!! faut savoir apprécier les nouvelles version du forum....

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>

vendredi 7 juillet 2006 à 15:41:19 | Re : Passer une condition à une sub comme paramètre string

larsene67

Merci du coup de main, mais ca ne suffit pas, car en fait, dans mes conditions, j'ai des trucs du genre
Liste(i).Denomination

Et là, ca complique un peu.

Bon, j'ai ouvert un autre sujet pour cette partie, si on m'y répond, et en y mélangeant savamment un peu de regex.replace à la place de replace, j'éspère y arriver...

(voir suite au:
http://www.vbfrance.com/infomsg_RECUPERER-PROPRIETE-ELEMENT-COLLECTION-TRAVERS-PARAMETRE-FONCTION-VBA_775175.aspx )



1 2

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


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.