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 :

Message erreur avec instruction Declare [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut Message erreur avec instruction Declare
    bonsoir le phorum

    j'ai ce message d'erreur sous windows 10 64 bits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Declare Function GetUserName Lib "advapi32.dll" _
          Alias "GetUserNameA" (ByVal lpBuffer As String, _
          nSize As Long) As Long
    quelqu'un a t'il une idée pour rendre ce code compatible 32 et 64 bits ?

    merci d'avance

    david
    Images attachées Images attachées

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    j'ai trouvé ca sur internet mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If Win64 Then
       Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As LongLong) As LongLong
    Else
       Declare Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    End If
    il met toujours le même message

    quelqu'un a t'il une idée ??

    david

  3. #3
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut re
    Hello,

    Je ne sais pas si faisable, avis aux pros du forum
    Mais peut-être indiqué un check de la version. 32 vs 64 pour la déclaration fonction ?

    T as macro serait du moins pour cette fonction compatible 32 et 64 bit

    Peut être un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #if VBA7 then 'Declaration 64bit
     Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
    #else 'Déclaration 32bit
     Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
    #end if

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    merci pour ta réponse
    j'ai modifié le code comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #If Win64 Then
       Public Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #Else
       public Declare Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #End If
    #If VBA7 Then 'Declaration 64bit
     Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #Else 'Déclaration 32bit
     Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #End If
    le code ci dessous est censé me donner le nom de l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function UserName(Utilisateur)
       Dim password As String
          Dim b As String * 100
          Dim L As Long
          L = 100
          GetUserName b, L
          Utilisateur = Left(b, L - 1)
       End Function
    mais rien si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test()
    MsgBox UserName(Utilisateur)
    End Sub
    le msgbox est vide ?!?!

    une idée ?

    merci d'avance

    david

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Sais-tu que ce que tu cherches à extraire est ce que tu peux obtenir tout simplement par l'utilisation de la fonction Environ native de VBA ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = Environ("username")
    est ce que te retournerait (la valeur de toto) la fonction que tu cherches à utiliser la l'Api de Windows.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut

    oui je sais

    c'est d'ailleurs ce que j'utilise
    mais j'aimerai tout de même comprendre ce problème au cas ou et pour ma culture de developpeur débutant....

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

Discussions similaires

  1. [SP-2007] Message erreur avec fonction "Modifier dans Microsoft Office Excel"
    Par Xorbane dans le forum SharePoint
    Réponses: 4
    Dernier message: 18/02/2011, 09h43
  2. Message erreur avec Hibernate
    Par wassimbik dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/07/2010, 12h40
  3. message d'erreur avec la declaration d'une variable
    Par safezahra dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/06/2008, 00h48
  4. Probleme message erreur avec Indy - Email
    Par Chyokyka dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2008, 18h35
  5. message erreur avec fonction diffdate
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 01/09/2006, 16h28

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