IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Pb Variable saisie à l'ouverture du classeur pour utilisation ultérieure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut Pb Variable saisie à l'ouverture du classeur pour utilisation ultérieure
    Bonjour à tous,

    je fais une fois de plus appel à vos compétences.

    A l'ouverture de mon classeur, il est demandé à l'utilisateur si le nom (obtenu grâce à une fonction) correspond bien au nom d'utilisateur requis, à défaut de saisir le bon nom d'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Public utilisateur As String
    Private Sub Workbook_Open()
     
    Worksheets("Sommaire").Select
     
    utilisateur = UCase(Left(UserName, Len(UserName) - 1))
     
    answer = MsgBox("Is the user '" & utilisateur & "' the right user ?", vbExclamation + vbYesNo, "Attention")
     
    If answer = 7 Then
        utilisateur = UCase(InputBox("Name of the quartz user"))
        If UCase(Left(utilisateur, 3)) = "QTZ" Then
            utilisateur = Right(utilisateur, Len(ulisateur) - 3)
        End If
    End If
     
    End Sub
     
    Public Function UserName() As String
     
    Dim llReturn As Long
    Dim lsUserName As String
    Dim lsBuffer As String
     
    lsUserName = ""
    lsBuffer = Space$(255)
    llReturn = GetUserName(lsBuffer, 255)
     
    If llReturn Then
       lsUserName = Left$(lsBuffer, InStr(lsBuffer, Chr(0)) - 1)
    End If
    UserName = lsUserName
     
    End Function
    Ce nom d'utilisateur ainsi saisi est repris dans plusieurs macro suivantes (du même classeur) pour la créations de feuilles diverses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub CreateFileQuartz()
     
    ...
    cells(1,1)=utilisateur
    ...
     
    End Sub
    Mon problème est le suivant: lors de l'exécution des macros suivantes, à l'emplacement où devrait se trouver le nom d'utilisateur, je n'ai rien.

    Quelqu'un saurait-il pourquoi ?

    Merci d'avance
    Mél

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    salut,

    dis moi si je me trompe mais si tu veux recupérer le nom de ton utilisateur dans la cellule "A1", il faut que, dans ta Private Sub Workbook_Open(), il y ai quelque part cells(1,1).value = utilisateur ...

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Bein non.

    A l'ouverture du classeur la fonction UserName() s'exécute, afin de récupérer le nom d'utilisateur de la session windows. Il demande confirmation à l'utilisateur via MsgBox; s'il est faux, l'utilisateur le saisit lui même dans une InputBox.

    Ainsi est enregistré sous la variable string 'utilisateur' le bon nom qui sera utilisé par la suite.

    A l'ouverture du classeur, le nom ne se trouve nulle part.

    Donc à l'ouverture tout se passe bien. Le nom d'utilisateur système est bien trouvé, donc la macro de ThisWorkbook fonctionne. Mais lorsque je réutilise 'utilisateur' dans des procédures de divers modules, 'utilisateur' est = "".

    Et je ne vois pas pourquoi. J'ai entre-temps changé tous les private en public.
    Toujours rien.

    A l'aide !!!

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    peux-tu nous envoyer ton fichier...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Melouille56,

    Si le code inséré dans votre message est bien la copie conforme du code réel, regardez ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If answer = 7 Then
        utilisateur = UCase(InputBox("Name of the quartz user"))
        If UCase(Left(utilisateur, 3)) = "QTZ" Then
            utilisateur = Right(utilisateur, Len(ulisateur) - 3)
        End If
    Pour éviter ce genre de chose indiquez "Option Explicit" en début de procédure.

    Amicalement.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Le voilà. J'ai supprimé beaucoup (le USF, la macro pour le sommaire, etc), mais ca devrait suffire pour voir le pb.
    Tks
    Mél
    Fichiers attachés Fichiers attachés

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Jacques-Jean, merci 1000 fois.

    Bon, une chose est sûre, c'est pas ca le problème, étant donné qu'à chaque fois c'est bien moi la bonne utilisatrice à utiliser, et que quand je fais des test avec d'autres noms au hasard, je n'ai jamais encore tapé QTZ devant.

    Mais en tous cas, merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Vba pour effacer Vba ou bloquer l'ouverture du classeur
    Par pointp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2010, 15h36
  2. Réponses: 1
    Dernier message: 27/07/2009, 18h20
  3. [VBA-E] Ouverture des classeurs d'un dossiers
    Par Nicos77 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/03/2006, 17h48
  4. Excel : lancement d'un userform à l'ouverture du classeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2005, 17h29
  5. [excel] Empecher l'ouverture du classeur
    Par maketossss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/12/2005, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo