[VBA] vérifier et affecter une valeur

Résolu
Mikeline -  
 Mikeline -
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

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. Mikeline
       
      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
  2. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. Mikeline
       
      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
    2. Mikeline
       
      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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. Mikeline
       
      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
    2. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      sur quel évènement utilises-tu cette procédure?
      pour le deuxième listbox - j'ai du zappé quelquechose...
      j'essaie d'analyser
      0
    3. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      si tu as utilisé ListBox1_Click il est possible que Me.listbox2hno est toujours la valeur null.
      0
    4. Mikeline
       
      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
    5. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      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