Probleme de variable Public sous Access 2010

Résolu
Bonjour,

Avant tout merci à ceux qui m'aideront

J'ai déclaré une variable public dans un module :

Option Compare Database
Option Explicit

Public TypeUtilisateur As String

Ensuite j'ouvre un formulaire :F_Revendeurs

Dans ma procedure FormLoad j'ai ceci :

If TypeUtilisateur <> "Agent" Then
Me.Modifiable53.Enabled = True
Else
Me.Modifiable53.Enabled = False
End If

A la ligne if TypeUtilisateur <> "Agent" Then
J'ai le message d'erreur "Erreur d'execution 5 (Argument ou appel de procedure incorrect)

et la je seche
Merci d'avance pour votre aide

8 réponses

  1. Modérateur
    Salut,

    et si tu fais un msgbox TypeUtilisateur avant ton test, tu as quoi à l'affichage ?

    Se pourrait-il que la variable ne contienne rien ?
    1. Bonjour et merci de me repondre ,
      Oui j'ai mis un msgbox et j'ai bien ma valeur
      Merci a toi
      1. Modérateur
        Alors là, je ne vois pas du tout...
        Ta variable n'est pas dans une fonction ?
        Tu as essayé de supprimer la ligne et de la retaper ?
        Si tu déclares une variable locale d'un autre nom que tu remplis, as-tu le même message en faisant le même test ?
    2. Merci beaucoup pour ta réactivité

      Ma variable n'est pas dans une fonction
      j'ai du supprimer la ligne je ne sais combien de fois
      J'ai fais ce que tu m'as demandé à savoir affecté ma variable public dans une variable locale.

      Une Question : Je suis allé un peu trop vite dans mon premier message :

      En fin de compte mon Form F_Revendeurs est une Sous-Form d'un formulaire F_General qui lui comporte des onglets dont un contient le Form F_Revendeurs.

      J'ai mis un curseur dans ma procédure Form Load de F_General avec ceci :

      Private Sub Form_Load()

      If TypeUtilisateur = "Agent" Then

      Me!Onglets.Pages(0).Visible = True
      Me!Onglets.Pages(1).Visible = False
      Me!Onglets.Pages(2).Visible = True
      Me!Onglets.Pages(3).Visible = False
      Me!Onglets.Pages(4).Visible = False
      Me!Onglets.Pages(5).Visible = False
      Else
      Me!Onglets.Pages(0).Visible = True
      Me!Onglets.Pages(1).Visible = True
      Me!Onglets.Pages(2).Visible = True
      Me!Onglets.Pages(3).Visible = True
      Me!Onglets.Pages(4).Visible = True
      Me!Onglets.Pages(5).Visible = True
      End If

      End Sub

      Mais l'application ne passe pas par F_General mais directement par F_Revendeurs .

      Y a t-il un lien vace mon bug.
      D'avance je te remercie
      1. Modérateur
        Je ne vois pas pourquoi il y aurait un lien...

        As-tu essayé :

        If TypeUtilisateur = "Agent" Then
            msgbox TypeUtilisateur
        else
            msgbox TypeUtilisateur
        End If


        Qu'on essaye de trouver ce qui cloche...
    3. Meme mess d'erreur à la ligne : If TypeUtilisateur = "Agent" Then

      C'est délirant
      Ce que je ne comprends pas c'est que mon Form F_Utilisateurs appelle mon Form F_General de cette facon et qui contient mon sous Form F_Revendeurs :

      TypeUtilisateur = [Type Util]

      stFormName = "F_General"
      stLinkCriteria = ""

      DoCmd.Close acForm, "F_Utilisateurs"
      DoCmd.OpenForm stFormName, , , stLinkCriteria

      Mais il ne passe pas par mon Form F_General

      Mereci de ton devouement
      1. une derniere chose , si je lance mon Form F_Revendeurs directement et donc ma variable public = "" le test ne plante pas !!!!
        Merci
        1. Blux,
          J'ai changé ma variable Public de String en Integer et ca marche nickel
          C'est à ne rien comprendre.
          En tout cas je tenais à te remercier de ton aide
          Merci
          1. Modérateur
            Comment peux-tu tester qu'un integer contient une valeur de chaine ?
            Au pire, mets-lui le type 'variant', tu n'auras plus de soucis à te faire pour ça...
        2. Encore une fois j'ai parlé trop vite : j'ai passé ma variable en integer mais du coup je teste soit la valeur 1 pour "Admin", 2 pour "collaborateur", 3 pour Agent et ca marche"
          Merci pour tout
          1. Modérateur
            Une question : n'existe-t-il pas un autre endroit où cette variable est également définie ?
            Ce qui pourrait expliquer qu'on teste une variable définie localement alors qu'on croit adresser la variable publique.
        3. j'ai fouillé partout pas de variable identique. De plus je tiens ma liste de variables à jour
          Merci