[VBA] vérifier et affecter une valeur

Résolu/Fermé
Mikeline - 6 juil. 2010 à 14:51
 Mikeline - 8 juil. 2010 à 12:39
Bonjour à tous,

Voila mon problème sur ACCESS 2007 :

Dim sav_prd_typ
sav_prd_typ = ""

If (Me.prd_typ.Value) = "Fast Track" Then 'ici je vérifie la valeur du champ
sav_prd_typ = 795 ' j'affecte une valeur
Else
If (Me.prd_typ.Value) = "Special" Then 'je vérifie la valeur du meme champ
sav_prd_typ = 765 'j'affecte une autre valeur
Else
If (Me.prd_typ.Value) = "Derived" Then 'je verifie la valeur du meme champ
"je vérifie si [prd_techno] = noir alors sav_prd_typ = 789
si [prd_techno] = rouge alors sav_prd_typ = 987"

En faite je n'arrive pas a retranscrire les 2 dernières lignes de mon code en VBA, c'est le "je vérifie" qui me bloque.

Pour info le champ [prd_typ] ne peut avoir que 3 valeurs (fast track;special et derived).

Merci pour l'aide que vous pourriez m'apporter.


3 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
Modifié par Bidouilleu_R le 6/07/2010 à 15:57
je pense que ça marche pas ....
je l'écrirai comme ça

Dim sav_prd_typ  
sav_prd_typ = ""  

If (Me.prd_typ.Value) = "Fast Track" Then 'ici je vérifie la valeur du champ  
      sav_prd_typ = 795 ' j'affecte une valeur  
Else If (Me.prd_typ.Value) = "Special" Then 'je vérifie la valeur du meme champ  
     sav_prd_typ = 765 'j'affecte une autre valeur  
Else If (Me.prd_typ.Value) = "Derived" Then 'je verifie la valeur du meme champ  
     if [prd_techno]="rouge" then  
           sav_prd_typ =987 
     end if 
endif
0
Merci pour ta réponse,
Ca devrait fonctionner mais je ne peux vérifier, car la vérification que je fait sur la valeur du champ [prd_typ] afin de savoir si il s'agit d'un "fast track"; "special" ou "derived" ne fonctionne pas, je recupère tout le temps la valeur 766. (je sais pas si je suis suffisament clair)
Voici mon nouveau code :

Dim sav_prd_typ
sav_prd_typ = ""

If (Me.prd_typ) = "Fast Track" Then
sav_prd_typ = "795"
Else
If (Me.prd_typ) = "Special" Then
sav_prd_typ = "765"
Else
If (Me.prd_techno) = "LED" Then
sav_prd_typ = "764"
Else
sav_prd_typ = "766"
End If
End If
End If

Merci pour l'aide apportée !
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 juil. 2010 à 09:46
ton code devrait être comme ça !


Dim sav_prd_typ
sav_prd_typ = ""

If Me.prd_typ = "Fast Track" Then
    sav_prd_typ = "795"
    ElseIf Me.prd_typ = "Special" Then
        sav_prd_typ = "765"
        ElseIf Me.prd_typ = "LED" Then
            sav_prd_typ = "764"
        
    
Else
                sav_prd_typ = "766"
End If



mais je trouve qu'il n'est pas clair ...lisible au premier coup d'oeil
je te propose de l'écrire comme ça.
C'est la même chose mais beaucoup plus clair non?



Dim sav_prd_typ
sav_prd_typ = ""



Select Case Me.prd_typ

    Case "Fast Track"
        sav_prd_typ = "795"

    Case "Special"
        sav_prd_typ = "765"
    Case "LED"
        sav_prd_typ = "764"
    Case Else
        sav_prd_typ = "766"
End Select
0
Bonjour Bidouilleu_R,

je me suis certainement mal exprimé car en faite je cherche à récupèrer la valeur selectionné par l'utilisateur, d'une listbox.

Pour faire simple voila mon souci plus clairement :

La listbox1 contient 3 valeurs (pour faire simple) : vert, jaune et rouge

si je choisis "vert" alors MaVariable = 123
si je choisis "jaune" alors MaVariable = 456
si je choisis "rouge" alors je vérifie la valeur selectionné dans une 2ieme listbox2 et donc
si la valeur de ma listbox2 est "noir" alors MaVariable = 789
sinon MaVariable = 321

Je vais essayer de le faire avec un select case comme tu l'a fait (en l'adaptant biensurs)
Je te tien au courant du résultat.

Merci de ton aide
0
J'ai donc mis cela :

Select Case Me.listbox1

Case "vert"
sav_prd_typ = "795"

Case "jaune"
sav_prd_typ = "765"

Case "rouge"
Select Case Me.listbox2hno
Case "LED"
sav_prd_typ = "764"
Case Else
sav_prd_typ = "766"
End Select
End Select

Malheureusement quelque soit mon choix dans les lisbox1 et 2 je récupère toujours la valeur 766.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 juil. 2010 à 10:32
mieux expliquer comme ça?


Dim sav_prd_typ
sav_prd_typ = ""



Select Case Me.listbox1.value

    Case "vert"
        sav_prd_typ = "123" ' traite le vert

    Case "jaune"
        sav_prd_typ = "456" ' traite le jaune
    Case "rouge"
        sav_prd_typ = "789" ' traite le rouge
    Case Else
        sav_prd_typ = "10 11 12" ' traite le reste de l'arcenciel sauf vert jaune rouge
End Select
0
Encore moi,
Désolé mais la valeur de sav_prd_typ reste toujours la meme et ce quelque soit le choix dans ma zone de liste 1.
sav_prd_typ prend toujours la valeur donnée après le ELSE, ici "10 11 12"
Par contre je vois que tu ne prend pas en considération ma 2ieme listbox, est-ce normal ?
S'en ca tes explications sont tres claires ! Merci.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 juil. 2010 à 14:17
sur quel évènement utilises-tu cette procédure?
pour le deuxième listbox - j'ai du zappé quelquechose...
j'essaie d'analyser
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 juil. 2010 à 14:35
si tu as utilisé ListBox1_Click il est possible que Me.listbox2hno est toujours la valeur null.
0
J'utilise l'évènement Click sur un autre champ que celui des listbox1 et 2.

Private Sub Champs3_Click()

Dim sav_prd_typ
sav_prd_typ = ""

Select Case Me.listbox1.Value

Case "vert"
sav_prd_typ = "795"

Case "jaune"
sav_prd_typ = "765"

Case "rouge"

Select Case Me.listbox2.Value
Case "noir"
sav_prd_typ = "764"
Case Else
sav_prd_typ = "766"

End Select
End Select
If IsNull(Me.Champs3) Then
Me.Champs3= Module1("Table", "Champs3", "0008222" & sav_prd_typ, 3)
End If
End Sub


J'ai besoin de récupèrer ses valeurs pour les intègrer à un numéro auto personnalisé qui se trouve sur le Champs3.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
7 juil. 2010 à 17:31
le code est correct!
il faut que tu vérifie le contenu des listbox dans la procedure
s=msgbox("listbox1 = " & me.listbox1.value & chr(10) & "listbox2 = " & me.listbox2.value,vbyeno,"titre")

tu mets ça dans ta procedure (à plusieurs endroits) et tu verras ce qui se passe
il y a aussi l'espion du debuggueur
0