Entrer une variable à partir d'un userform [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
28 mai 2009
-
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
28 mai 2009
-
bonjour,
je voudrais pouvoir changer le 10 par une variable que l'utisateur choisie pendant l'acquisition et après pour choisir de pousuivre le traitement ou de changer le paramètre.
Sub applicationmacrojoseph()
    Call lequalize(image0, 10, "image1")
End sub
merci de votre aide

7 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Ok, la c'est plus claire ! On va pouvoir avancer !!!

Donc je reprend ce que dit steph064 tu peux créer des simples boites de dialogue te demandant ces valeurs comme ceci :

Dim strIma As String
    strIma = Viewer.ActivateImg  
(pour selectionner l'image active)

Dim Value As Integer
Dim Request As Srting

10: Request = InputBox ("Image active") 

    If Not IsNumeric (Request) Then
        MsgBox ("Vous devez entrer une valeur numérique !")
        Goto 10
    Else
       Value = cInt(Request)
    End If
  
   Call lequalize(strIma, Value , "image1")    
(fonction pour égalisé les contrastes)

'On recommence pour la deuxième valeur :

20 : Request = InputBox ("Image active") 

    If Not IsNumeric (Request) Then
        MsgBox ("Vous devez entrer une valeur numérique !")
        Goto 20
    Else
        Value = cInt(Request)
    End If
  
    Call medianfilter("image1", Value, "image1")
    Call rgbgetplane("image1", M_GREEN, "image2")
    ReDim VlgIArray1(0 To 1)
    VlgIArray1(0) = 0
    VlgIArray1(1) = 0
    ReDim VlgIArray2(0 To 1)
    VlgIArray2(0) = 0
    VlgIArray2(1) = 255
    Call equalize("image2", M_MIN_MAX, VlgIArray1, VlgIArray2, "image4")
    bErr = Viewer.DCLut(eDSPLUT_CONTEXT_LINEAR, eDSP_CONTEXT_INT)
    Call Viewer.ThresholdSetCursors(1, 60)
    Call Viewer.ThresholdSetCursors(2, 60, 78)
    Call Viewer.ThresholdReset
    ReDim VlgArray1(0 To 1)    VlgArray1(0) 45#: VlgArray1(1) 82#
    Call I_threshold("image4", VlgArray1, "image3")
   
End Sub

Voila c'est du basique de chez basique, mais ca fonctionne, si tu cherche à faire quelque chose de plus évolué, alors dis moi ou se situe ton code (dans un formulaire ? Un module?) 

Au fait, si ce code est dans une macro alors tu n'es pas dans le bon thème (c'est pas VB2005)
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Bonjour,

Qelle aquisition ? Nous ne pouvons pas voir on ne possedent pas la source de ton programme ! Exprime toi plus clairement, donne plus de détails pour toi qui à l'application devant toi cela parrait évidant mais pas pour les autres...

Je vais essayé de t'aider quand même :

Sub applicationmacrojoseph()
    Dim Num As Integer
    
    Num = ' <= Donne une valeur à num à l'aide d'un composant que tu placera sur ta feuille par exemple : 

    Num = NumericUpDown1.Value

    Call lequalize(image0,Num, "image1")
End sub

@+ Mayzz
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
28 mai 2009

j'utilise un loiciel de traitement d'image et je sais automatiser l'analyse. c'est à dire que l'utilisateur selectionne la photo et lance la macro pour réaliser les différentes opération d'analyse.
ce que je veux faire c'est afficher des boîte de dialogue où l'utilisateur choisi les paramètres (qui sont des chiffres). Dans l'exemple ci dessus la fonction lequalize permet d'équilibrer les contrastes de l'image et la valeur (10 ici) est le nombre de zone d'équilibrage des contrastes
Merci de ton aide.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
En fait, je n'ai strictement rien compris à ce que tu m'explique....

Tavaille-tu sur un projet en vb.net ?

Peux-tu poster un exemple de ton code (concret), et expliquer quels formulaire comporte ton application, comment se déroule les événements

"j'utilise un loiciel de traitement d'image et je sais automatiser l'analyse. c'est à dire que l'utilisateur selectionne la photo et lance la macro pour réaliser les différentes opération d'analyse."

"Macro" = VBA/VBE ?, logiciel de traitement d'image ? quel logiciel ? fait-il partie de ton application ? quelle macro ? de quel fichier ? c'est du word du exel ? les analyses ? Analyses de quelles images ? celle du logiciel ? comment les récupère tu ? Bref c'est du baclé ce que tu me décris, prend le temps avant de poster, détaille, montre ton code, donne des explication, je sais pas moi... 

Comment veux tu que l'on t'aide avec si peu de détails... NOUS NE SOMMENT PAS DEVINS !

Merci.
Messages postés
90
Date d'inscription
mardi 30 décembre 2008
Statut
Membre
Dernière intervention
10 juin 2009

Oui donne des précisions ! si tu veux ouvir une boite genre msgbox avec une textbox, si tu est sur visual studio tu peux utiliser:
'Variable' = InputBox("TITRE","TEXTE")

ca affichera une box ac un titre, un texte et l'utilisateur n'aura plus qu'à taper ce qu'il souhaite dans la textbox, VARIABLE prendra cette valeur.
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
28 mai 2009

"Macro" = VBA/VBE ?, logiciel de traitement d'image ? quel logiciel ? fait-il partie de ton application ? quelle macro ? de quel fichier ? c'est du word du exel ? les analyses ? Analyses de quelles images ? celle du logiciel ? comment les récupère tu ? Bref c'est du baclé ce que tu me décris, prend le temps avant de poster, détaille, montre ton code, donne des explication, je sais pas moi... 
le logiciel que j'utilise est visilog , il permet d'acquérir d'analyser des images à partir d'une caméra.
après l'acquisition j'utilise des fonctions de ce logiciel pour permettre les information que je souhaite.
ainsi il est possible lorsque l'enchainement des fonctions est obtenu d'enregistrer une macro sous visual basic qui enchaine les différentes étapes.
voici le script que j'ai obtenu

Sub applicationmacro()
Dim strIma As String
    strIma = Viewer.ActivateImg  
(pour selectionner l'image active)
    Call lequalize(strIma, 50, "image1")    
(fonction pour égalisé les contrastes)
    Call medianfilter("image1", 5, "image1")
    Call rgbgetplane("image1", M_GREEN, "image2")
    ReDim VlgIArray1(0 To 1)
    VlgIArray1(0) = 0
    VlgIArray1(1) = 0
    ReDim VlgIArray2(0 To 1)
    VlgIArray2(0) = 0
    VlgIArray2(1) = 255
    Call equalize("image2", M_MIN_MAX, VlgIArray1, VlgIArray2, "image4")
    bErr = Viewer.DCLut(eDSPLUT_CONTEXT_LINEAR, eDSP_CONTEXT_INT)
    Call Viewer.ThresholdSetCursors(1, 60)
    Call Viewer.ThresholdSetCursors(2, 60, 78)
    Call Viewer.ThresholdReset
    ReDim VlgArray1(0 To 1)    VlgArray1(0) 45#: VlgArray1(1) 82#
    Call I_threshold("image4", VlgArray1, "image3")
   
End Sub

les ligne Call correspond à des fonctions du logiciel
ce que je voudrais c'est pouvoir changer les valeurs en rose qui sont compri entre 0 et 99 sans changer le code.
j'espère être plus claire
Messages postés
4
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
28 mai 2009

merci ça fonction il juste fallu que je change le type variable (long à la place de integer)
merci encore pour ton aide et désolé pour le peu de claireté