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 :

erreur module Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    responsable technique
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut erreur module Userform
    Bonjour,
    J'aurais besoin d'une aide précieuse, j'ai créé un outil pour mon travail utilisant un Userform qui s'adapte à la taille de l''écran.
    Sur mon PC, pas de soucis particulier tout fonctionne.
    par contre, sur le PC d'une autre personne, il affiche ce message au lancement.

    "Erreur de compilation dans le module caché:Module7..."

    Quelqu'un aurait une réponse à me donner?

    Merci pour le soutien,

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Bonjour,


    as tu compilé ton projet, sur ton poste, pour vérifier qu'il n'y as pas d'erreur de compilation?
    (Débogage\Compiler VBAProject...)

    Cordialement,

  3. #3
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut,

    Et il y a quoi dans ce module???
    car ce message est très vague, il peut y avoir pleins de choses qui peuvent causer ce type d'erreur...regarde sur Google et tu verras...

    Seb

  4. #4
    Membre à l'essai
    Homme Profil pro
    responsable technique
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    Bonjour,

    as tu compilé ton projet, sur ton poste, pour vérifier qu'il n'y as pas d'erreur de compilation?
    (Débogage\Compiler VBAProject...)

    Cordialement,
    Merci pour un retour rapide,

    Je dois avouer que je me suis formé tout seul, sur ce projet.
    Je n'ai donc pas le vocabulaire adapté et surtout une connaissance pointu de VBA.

    Je n'ai pas effectué la vérification, je vais de ce pas le faire!

    je reviendrai dès que possible, car je suppose que je peux trouver plus d'une erreur à corriger.

    cordialement,

    Citation Envoyé par Sebphyto Voir le message
    Salut,

    Et il y a quoi dans ce module???
    car ce message est très vague, il peut y avoir pleins de choses qui peuvent causer ce type d'erreur...regarde sur Google et tu verras...

    Seb
    bonjour Seb,

    merci pour ton retour,

    voici ce qu'il y a dans le module 7 :
    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
    Function modif_UserForm1(uf As Object, Optional modif As Long = &H94CF0080)
      'on determine le handle de la form (identifiant de la fenetre)maintenant avec findwindows +precis lors du choix de la fentre a modifier
       handle = FindWindow(vbNullString, uf.Caption)
     
            'on va memoriser le multiplicateur des dimention de l'usf par rapport a chaque controls dans leurs tags respectifs
        For Each ctrl In uf.Controls                                                                                  '*
            ctrl.Tag = uf.InsideWidth / (ctrl.Left + 0.01) & ":" & uf.InsideHeight / (ctrl.Top + 0.01) & ":" & uf.InsideWidth / ctrl.Width & ":" & uf.InsideHeight / ctrl.Height
            'ici en fonction du type de control si il a  la propriété font size on place l'operateur en derniere position dans le tag
            If TypeName(ctrl) <> "ScrollBar" And TypeName(ctrl) <> "Image" And TypeName(ctrl) <> "SpinButton" Then ctrl.Tag = ctrl.Tag & ":" & uf.InsideWidth / ctrl.Font.Size                                                                       '*
        Next
        'on applique les modification a la fenetre userform en une seule ligne
        SWLA handle, -16, modif: SWLA handle, -20, &H0: DMB handle
     
    End Function
    Sub maForm_Resize(usf As Object)
              'ici on boucle sur tout les controls
            For Each Ctl In usf.Controls
                Properties = Split(Ctl.Tag, ":") 'on coupe le tag de chaque control par les double point
                'chaque morceau du texte du tag corespond a un operateur
     
                'et on applique le multiplicateur au controls pour la largeur et la hauteur en une seule ligne
                'left,top,largeur,hauteur,
                Ctl.Move usf.InsideWidth / Properties(0), usf.InsideHeight / Properties(1), usf.InsideWidth / Properties(2), usf.InsideHeight / Properties(3)
                'tout les controls qui ont le multiplicateur du font size enregistré dans leurs tags respectifs verront leur font size redimentionné en proportion
                If UBound(Properties) > 3 Then Ctl.Font.Size = Round(usf.InsideWidth / Properties(4), 0)
           ' autrement dit au depart si le control posedait cette propriété l'operateur c'est inscrit en derniere position dans le tag
           ' on l'applique alors
            Next
            usf.Repaint
      End Sub

    Cordialement,

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    FindWindow c'est une api windows.

    Est elle bien déclarée, dans l'en-tête du module?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    et si la fonction FindWindow est bien déclarée, en l'état elle n'est valable que pour un Excel 32 Bits

    si sur l'ordinateur où ça ne fonctionne pas, c'est une version 64Bits, c'est la raison du problème ... mais je me serai plutôt attendu à un autre message d'erreur.

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Oui, tout à fait.

    De plus, c'est quoi ce SWLA?
    C'est défini ou?

  8. #8
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Re,
    pour mettre ton code entre balise appuies sur le bouton #, a côté de celui de "citation", et colle ton code entre les balises

  9. #9
    Membre à l'essai
    Homme Profil pro
    responsable technique
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    FindWindow c'est une api windows.

    Est elle bien déclarée, dans l'en-tête du module?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    En fait, non je viens de vérifier et effectivement ce n'est pas le cas.
    FindWindow n'est pas déclarée.
    Je me rends compte que lors de la vérification, il y a pas mal d'erreur à corriger.
    Je reste surpris de pouvoir l'utiliser sans problème depuis mon PC.
    encore merci,
    Je vais faire de mon mieux.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #If VBA7 Then
        Private  Declare PtrSafe  Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #Else
        Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #End If

  11. #11
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    Oui, tout à fait.

    De plus, c'est quoi ce SWLA?
    C'est défini ou?
    une API ?

    en fait je crois qu'il a repris une contribution de Patrick : http://www.developpez.net/forums/d13...m/#post7498049

  12. #12
    Membre à l'essai
    Homme Profil pro
    responsable technique
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut
    Je confirme, que j'ai récupéré certain code de plusieurs endroit qui m'ont permis de créer mon outil.
    dont celui de Patrick, il fonctionne très bien sur mon PC et d'autres de ma société.
    par contre, dès que je l'envoi vers des personnes extérieurs à l'entreprise, il affiche le message d'erreur.

    c'est un problème de version, mais comment puis je résoudre ce problème?

    Citation Envoyé par Sebphyto Voir le message
    Re,
    pour mettre ton code entre balise appuies sur le bouton #, a côté de celui de "citation", et colle ton code entre les balises
    merci Seb,

    c'est fait

    Citation Envoyé par rdurupt Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #If VBA7 Then
        Private  Declare PtrSafe  Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #Else
        Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #End If
    bonjour,

    un moment j'ai cru que le problème pouvait venir du système 64 bits vers 32 bits, est ce vraiment le cas?

    merci,

  13. #13
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Si tu manipules des API et que tu les déclares en mode "32 Bits", elles ne fonctionneront pas sur une version Office 64 Bits

    te dire si ton problème vient de là : c'est à toi de voir la version office du Excel où ça plante.

    maintenant, tu laissais à entendre que certaines déclarations de ces fonctions ne figuraient pas dans ton projet, remet bien toutes les déclaration d'API dans un premier temps, pour voir si le problème ne provenait "que" de là

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu utilise des versions Windows et/ou Excel différente, il faut adapter la déclaration avec PtrSafe d'ou mes directive de compilation #If!

    maintenant il et possible qu'il y ai d'autre problème lié au version VBA! par exemple (Trim,Left,...) (Vba.Trim,Vba.Left,...)

    je t'invite à créer un UserForm vierge et de test les api, pour dissocier le problème!

  15. #15
    Membre à l'essai
    Homme Profil pro
    responsable technique
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    Bonjour,
    si tu utilise des versions Windows et/ou Excel différente, il faut adapter la déclaration avec PtrSafe d'ou mes directive de compilation #If!

    maintenant il et possible qu'il y ai d'autre problème lié au version VBA! par exemple (Trim,Left,...) (Vba.Trim,Vba.Left,...)

    je t'invite à créer un UserForm vierge et de test les api, pour dissocier le problème!
    Je vais suivre ton conseil, et créer un nouvel UserForm avec les api.

    merci,

Discussions similaires

  1. [py2exe] erreur module zipextimporter
    Par nougat dans le forum Py2exe
    Réponses: 1
    Dernier message: 30/08/2007, 21h06
  2. Erreur module introuvable
    Par fafabzh6 dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/08/2007, 15h17
  3. Erreur Module pour empecher le Shift (SetBypassProperty)
    Par lars528 dans le forum Sécurité
    Réponses: 2
    Dernier message: 19/01/2007, 08h50
  4. [VBA-E]Pb de communica° entre module/UserForm[débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/03/2006, 09h44
  5. Erreur module rtl60.bpl / vcl60.bpl
    Par say dans le forum C++Builder
    Réponses: 15
    Dernier message: 11/05/2005, 16h35

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