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 : bazar de mélange de collection, propriétés, conditions en vba-excel [ Langages dérivés / VBA ] (larsene67)

lundi 10 juillet 2006 à 11:22:13 | bazar de mélange de collection, propriétés, conditions en vba-excel

larsene67

bon ,maintenant, je commence à patauger, si quelqu'un pouvait m'aider sur ce bout de code que je n'arrive pas à faire marcher:
(suite de http://www.vbfrance.com/infomsg_RECUPERER-PROPRIETE-ELEMENT-COLLECTION-TRAVERS-PARAMETRE-FONCTION-VBA_775175.aspx#3 )
Public Liste As New Collection
Public regEx As New VBScript_RegExp_55.RegExp 'New RegExp

Sub sub1()
Dim machin As New Classe1

machin.nom = "CHRIST"
machin.prénom = "Jesus"
machin.age = "33 ans"
Liste.Add machin
Set machin = Nothing

machin.nom = "LUCAS"
machin.prénom = "GEORGES"
machin.age = "50 ans"
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = "75 ans"
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = "73 ans"
Liste.Add machin
Set machin = Nothing

'condition = "Liste(i).nom = "DES BATIGNOLES" and Liste(i).age = "75 ans"
Condition = Chr(34) & "Liste(i).nom" & Chr(34) & "=" & Chr(34) & "DES BATIGNOLES" & Chr(34)
result = sub2(Liste, Condition)

End Sub

Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
regEx.Pattern = "(Liste\(i\))(\.\S+)"

For i = 1 To Liste.Count
    sub2 = regEx.Replace(Condition, CallByName(Liste(i), "$2", VbGet))
    If r.Eval(sub2) Then
        MsgBox sub2
    End If
Next i

End Function


lundi 10 juillet 2006 à 11:37:06 | Re : bazar de mélange de collection, propriétés, conditions en vba-excel

larsene67

bon, je trouve pas comment modifier ma question, alors je reposte le code, plus prooche de ce que je veux faire:


Public Liste As New Collection
Public regEx As New VBScript_RegExp_55.RegExp 'New RegExp

Sub sub1()
Dim machin As New Classe1

machin.nom = "CHRIST"
machin.prénom = "Jesus"
machin.age = 33
Liste.Add machin
Set machin = Nothing

machin.nom = "LUCAS"
machin.prénom = "GEORGES"
machin.age = 50
Liste.Add machin
Set machin = Nothing

machin.nom = "LUCAS"
machin.prénom = "Gérard"
machin.age = 50
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 75
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 73
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 120
Liste.Add machin
Set machin = Nothing

'si la ligne precedente a le meme nom, et l'age est inférieur à 100ans, on la vire
Condition = "Liste(j).nom = Liste(i).nom Or Liste(i).age > " & Chr(34) & "100" & Chr(34)
sub2 Liste, Condition

Debug.Print Liste.Count
End Sub

Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
regEx.Pattern = "(Liste\(i\))(\.\S+)"

Do While i <= Liste.Count
    For j = 1 To i - 1
        Condition2 = regEx.Replace(Condition, CallByName("$1" & "($2)", "$3", VbGet))
        If r.Eval(Condition2) Then
            Liste.Remove (i)
            i = i - 1
            Exit For
        End If
    Next j
    i = i + 1
Loop

End Function


lundi 10 juillet 2006 à 11:56:18 | Re : bazar de mélange de collection, propriétés, conditions en vba-excel

larsene67

Encore un essai qui ne marche toujours pas :(:( :

Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
Set Regex2 = New RegExp
regEx.Pattern = "(Liste)(\([ij]\))(\.)(\S+)"
Regex2.Pattern = regEx.Pattern

Do While i <= Liste.Count
    For j = 1 To i - 1
        For Each tmp In regEx.Execute(Condition)
            tmp2 = Regex2.Replace(tmp, "$1$2")
            tmp3 = Regex2.Replace(tmp, "$4")
            tmp4 = Regex2.Replace(Condition, CallByName(tmp2, tmp3, VbGet))
            Condition = regEx.Replace(Condition, tmp4, VbGet)
        Next tmp
        If r.Eval(Condition) Then
            Liste.Remove (i)
            i = i - 1
            Exit For
        End If
    Next j
    i = i + 1
Loop

End Function




Cette discussion est classé dans : liste, age, machin, condition, ans


Répondre à ce message

Sujets en rapport avec ce message

Base de donnée : j'ai un problème [ par LEAU ] Bonjour, j'ai un problème j'ai une base de donnée simple, avec trois colones : nom, prénom, et ageJe voudrais pouvoir créer une liste de choix qui se 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 donner une valeur par défaut à une liste déroulante ne contenant pas cette valeur [ par nanach ] bonjour tout le monde ^^ petit souci sur vba (youpie) que je vous explque : ) j'ai une liste déroulante qui me fournit des ages quinquénale (0-5-10 trier une collection vba-excel [ par larsene67 ] bon, on va essayer une approche différente de mon problème: soit la collection suivante:(Dans class1:)Public nom, prénom, age(dans module1:)<font face Affichage liste sous condition [ par horazon ] Bonjour à tous je suis débutant sous excel et VB pourtant il faudrait que je fasse un fichier regroupant pas mal d'informations.Je voudrais si possibl Passer une condition à une sub comme paramètre string [ par 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 vou Condition pour retour à la ligne introuvable ... [ par Pinzut77 ] Bonjour,Voici une macro qui permet de mettre info de contact de ma colonne sur une ligne mais voila je ne trouve pas de condition pour aller à la lign Remplir Liste [ par tedparker ] Bonjour,J'ai récupéré une liste de fichiers avec leur chemin courant et j'aimerai ensuite remplir une sorte de zone de liste avec ces fichiers et perm recuperer une propriété d'un élément de collection au travers d'un paramêtre de fonction (VBA-excel) [ par larsene67 ] Re-bonjour, voici une autre question à un de mes soucis.Alors l'exemple n'est pas très clair quand à l'utilité, mais j'ai simplifié pour la question.C Retirer des composantes [ par Amonbofis ] Bonjour!Quelqu'un peux me dire comment retirer des composantes de la listede VB6?Ici je veux dire, quand on veux ajouter une composante au projet,par


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

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,218 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é.