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

VBA Access Discussion :

Erreur d'exécution 438 : pourquoi ?


Sujet :

VBA Access

  1. #1
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut Erreur d'exécution 438 : pourquoi ?
    bonjour,

    voilà, j'ai le code suivant dans l'un de mes formulaires (ce code est là pour ajuster la taille d'un sous-formulaire en fonction du nombre d'enregistrements, puis positionner les étiquettes proprement en-dessous).

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    'Taille du sous-formulaire FS_OrganiserTourneesSF en fonction du nombre d'enregistrements
    Me.FS_OrganiserTourneesSF.Form.InsideHeight = Me.FS_OrganiserTourneesSF.Form.Section(acHeader).Height _
         + Me.FS_OrganiserTourneesSF.Form.Section(acFooter).Height _
         + Me.FS_OrganiserTourneesSF.Form.Section(acDetail).Height _
             * (Me.FS_OrganiserTourneesSF.Form.RecordsetClone.RecordCount _
              - Me.FS_OrganiserTourneesSF.Form.AllowAdditions)
              
    Me.FS_OrganiserTourneesSF.Height = Me.FS_OrganiserTourneesSF.Form.WindowHeight
    
    'Positionnement de l'étiquette EtiqTransport en fonction de la position et de la taille du sous-formulaire FS_OrganiserTourneesSF
    Me.ÉtiqTransport.Top = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 600
    
    'Positionnement des étiquettes EtiqRolls, EtiqPalettes, EtiqForfait et EtiqKilo en fonction de la position de l'étiquette EtiqTransport
    Me.ÉtiqRolls = Me.ÉtiqTransport.Top + Me.ÉtiqTransport.Height + 150
    Me.ÉtiqPalettes = Me.ÉtiqTransport.Top + Me.ÉtiqTransport.Height + 150
    Me.ÉtiqForfait = Me.ÉtiqTransport.Top + Me.ÉtiqTransport.Height + 150
    Me.ÉtiqKilo = Me.ÉtiqTransport.Top + Me.ÉtiqTransport.Height + 150
    
    'Positionnement des étiquettes EtiqRolls2, EtiqPalettes2, EtiqForfait2 et EtiqKilo2 en fonction de la position de l'étiquette EtiqRolls
    Me.ÉtiqRolls2 = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.ÉtiqPalettes2 = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.ÉtiqForfait2 = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.ÉtiqKilo2 = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    
    'Positionnement des étiquettes NbRolls, NbPalettes, Forfait et NbKilo en fonction de la position de l'étiquette EtiqRolls
    Me.NbRolls = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.NbPalettes = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.Forfait = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    Me.NbKilo = Me.ÉtiqRolls.Top + Me.ÉtiqRolls.Height + 150
    
    'Positionnement des étiquettes EtiqRolls3, EtiqPalettes3 et EtiqKilo3 en fonction de la position de l'étiquette EtiqRolls2
    Me.ÉtiqRolls3 = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    Me.ÉtiqPalettes3 = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    Me.ÉtiqKilo3 = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    
    'Positionnement des étiquettes PrixRoll, PrixPalette et PrixKilo en fonction de la position de l'étiquette EtiqRolls2
    Me.PrixRoll = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    Me.PrixPalette = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    Me.PrixKilo = Me.ÉtiqRolls2.Top + Me.ÉtiqRolls2.Height + 150
    
    'Positionnement de l'étiquette EtiqResTournee en fonction de l'étiquette PrixRoll
    Me.EtiqResTournee = Me.PrixRoll.Top + Me.PrixRoll.Height + 300
    
    'Positionnement de l'étiquette EtiqGasoil en fonction de la position et de la taille de l'objet LienVia
    Me.EtiqGasoil.Top = Me.EtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    Me.PrixGasoil.Top = MeEtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    Me.eurolitre.Top = Me.EtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal1 en fonction de la position et de la taille de l'objet LienVia
    Me.EtiqTotal1.Top = Me.EtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    Me.Total1.Top = Me.EtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    Me.km.Top = Me.EtiqResTournee.Top + Me.EtiqResTournee.Height + 150
    
    'Positionnement de l'étiquette EtiqSTV1 en fonction de la position et de la taille de l'étiquette EtiqRetour
    Me.EtiqSTV1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.STV1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euro1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal2 en fonction de la position et de la taille de l'étiquette EtiqTotal1
    Me.ÉtiqTotal2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.Total2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euros.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqSTV2 en fonction de la position et de la taille de l'étiquette EtiqTotal1
    Me.EtiqSTV2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.STV2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euro2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal3 en fonction de la position et de la taille de l'étiquette EtiqTotal2
    Me.ÉtiqTotal3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.Total3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.colis.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    
    'Positionnement de l'étiquette EtiqSTCV en fonction de la position et de la taille de l'étiquette EtiqTotal2
    Me.EtiqSTCV.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.TotalCV.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.euro3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal4 en fonction de la position et de la taille de l'étiquette EtiqTotal3
    Me.ÉtiqTotal4.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    Me.Total4.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    Me.kg.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    
    'Positionnement de l'étiquette EtiqCATotal en fonction de la position et de la taille de l'étiquette EtiqSTCV
    Me.EtiqCATotal.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    Me.CA2.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    Me.euro4.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    
    'Positionnement de l'étiquette EtiqMarge1 en fonction de la position et de la taille de l'étiquette EtiqCATotal
    Me.EtiqMarge1.Top = Me.EtiqCATotal.Top + Me.EtiqCATotal.Height + 150
    Me.Marge1.Top = Me.EtiqCATotal.Top + Me.EtiqCATotal.Height + 150
    
    'Positionnement de l'étiquette EtiqResultat en fonction de la position et de la taille de l'étiquette EtiqSTCV
    Me.EtiqResultat.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    Me.Resultat.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    Me.euro5.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    
    End Sub
    Et là, j'ai le message d'erreur suivant :

    Erreur d'exécution 438 :
    Propriété ou méthode non gérée par cet objet
    Le bug est au niveau de la ligne rouge en gras.

    Il faut savoir que je n'ai fait que rajouter certaines étiquettes (avant cette opération, il y avait les deux tiers des étiquettes, et le code marchait très bien).


    Quelqu'un voit-il d'ou ça peut venir ?

    Merci de me répondre,

    Steph

  2. #2
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    J'ai modifié une partie de mon code :

    J'ai défini la position de la première série d'étiquettes en fonction du formulaire, et non en fonction de l'étiquette Transport qui se trouve au-dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Positionnement des étiquettes EtiqRolls, EtiqPalettes, EtiqForfait et EtiqKilo en fonction de la position de l'étiquette EtiqTransport
    Me.ÉtiqRolls = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 850
    Me.ÉtiqPalettes = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 850
    Me.ÉtiqForfait = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 850
    Me.ÉtiqKilo = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 850
    Mais j'ai toujours le même message d'erreur.

    Quelqu'un peut-il m'aider svp ?

    Merci

    Steph

  3. #3
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    Maintenant, j'ai encore modifié mon code... j'ai supprimé des étiquettes sous mon sous-formulaire.

    Voici mon nouveau code :


    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    'Taille du sous-formulaire FS_OrganiserTourneesSF en fonction du nombre d'enregistrements
    Me.FS_OrganiserTourneesSF.Form.InsideHeight = Me.FS_OrganiserTourneesSF.Form.Section(acHeader).Height _
         + Me.FS_OrganiserTourneesSF.Form.Section(acFooter).Height _
         + Me.FS_OrganiserTourneesSF.Form.Section(acDetail).Height _
             * (Me.FS_OrganiserTourneesSF.Form.RecordsetClone.RecordCount _
              - Me.FS_OrganiserTourneesSF.Form.AllowAdditions)
              
    Me.FS_OrganiserTourneesSF.Height = Me.FS_OrganiserTourneesSF.Form.WindowHeight
    
    'Positionnement de l'étiquette EtiqResen fonction de la position et de la taille du sous-formulaire FS_OrganiserTourneesSF
    Me.EtiqRes.Top = Me.FS_OrganiserTourneesSF.Top + Me.FS_OrganiserTourneesSF.Height + 600
    
    'Positionnement de l'étiquette EtiqGasoil en fonction de la position et de la taille de l'objet LienVia
    Me.EtiqGasoil.Top = Me.EtiqRes.Top + Me.EtiqRes.Height + 150
    Me.PrixGasoil.Top = MeEtiqRes.Top + Me.EtiqRes.Height + 150
    Me.eurolitre.Top = Me.EtiqRes.Top + Me.EtiqRes.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal1 en fonction de la position et de la taille de l'objet LienVia
    Me.EtiqTotal1.Top = Me.EtiqRes.Top + Me.EtiqRes.Height + 150
    Me.Total1.Top = Me.EtiqRes.Top + Me.EtiqRes.Height + 150
    Me.km.Top = Me.EtiqRes.Top + Me.EtiqRes.Height + 150
    
    'Positionnement de l'étiquette EtiqSTV1 en fonction de la position et de la taille de l'étiquette EtiqRetour
    Me.EtiqSTV1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.STV1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euro1.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal2 en fonction de la position et de la taille de l'étiquette EtiqTotal1
    Me.ÉtiqTotal2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.Total2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euros.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqSTV2 en fonction de la position et de la taille de l'étiquette EtiqTotal1
    Me.EtiqSTV2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.STV2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    Me.euro2.Top = Me.EtiqTotal1.Top + Me.EtiqTotal1.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal3 en fonction de la position et de la taille de l'étiquette EtiqTotal2
    Me.ÉtiqTotal3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.Total3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.colis.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    
    'Positionnement de l'étiquette EtiqSTCV en fonction de la position et de la taille de l'étiquette EtiqTotal2
    Me.EtiqSTCV.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.TotalCV.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    Me.euro3.Top = Me.ÉtiqTotal2.Top + Me.ÉtiqTotal2.Height + 150
    
    'Positionnement de l'étiquette EtiqTotal4 en fonction de la position et de la taille de l'étiquette EtiqTotal3
    Me.ÉtiqTotal4.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    Me.Total4.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    Me.kg.Top = Me.ÉtiqTotal3.Top + Me.ÉtiqTotal3.Height + 150
    
    'Positionnement de l'étiquette EtiqCATotal en fonction de la position et de la taille de l'étiquette EtiqSTCV
    Me.EtiqCATotal.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    Me.CA2.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    Me.euro4.Top = Me.EtiqSTCV.Top + Me.EtiqSTCV.Height + 150
    
    'Positionnement de l'étiquette EtiqMarge1 en fonction de la position et de la taille de l'étiquette EtiqCATotal
    Me.EtiqMarge1.Top = Me.EtiqCATotal.Top + Me.EtiqCATotal.Height + 150
    Me.Marge1.Top = Me.EtiqCATotal.Top + Me.EtiqCATotal.Height + 150
    
    'Positionnement de l'étiquette EtiqResultat en fonction de la position et de la taille de l'étiquette EtiqSTCV
    Me.EtiqResultat.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    Me.Resultat.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    Me.euro5.Top = Me.EtiqMarge1.Top + Me.EtiqMarge1.Height + 150
    
    End Sub
    Et ce coup-ci, le message d'erreur est le suivant :

    Erreur d'exécution 424 :
    Objet requis
    Je ne comprends pas, car tous mes objets existent. Quelqu'un peut-il m'aider ?

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ben, pour déboguer, il faut vérifier si:
    Me.ÉtiqRolls existe (vérifier l'orthographe)
    Me.ÉtiqTransport existe et possède une propriété Top
    Me.ÉtiqTransport possède une propriété Height

    L'interface VBE est d'une grande aide pour vérifier tout ça:
    Taper Me. et vérifier si ÉtiqRolls et ÉtiqTransport sont proposés dans la liste.
    Taper Me.ÉtiqTransport. et vérifier si Top et Height sont proposés dans la liste.

  5. #5
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    Bonjour AlainTech,

    J'ai bien vérifié ce que tu me dis, je viens même de le vérifier à nouveau, et tout est ok.

    tu as vu ? Maintenant, je n'ai plus la même erreur... c'est pire ou c'est mieux ?

  6. #6
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    Ca y est, ça marche... il manquait un point, donc l'erreur 424 est résolue...

    Par contre, en 438, j'avoue que je ne comprends pas...

    Le principal est que ça marche maintenant,

    Merci beaucoup, AlainTech,

    Steph

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

Discussions similaires

  1. Erreur d'exécution 438
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/09/2012, 15h07
  2. erreur d'exécution 438
    Par Rémi GAUDINAT dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/08/2011, 11h21
  3. [OL-2007] Macro : Erreur d'exécution 438.
    Par roidurif dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 15/10/2010, 23h17
  4. Erreur d'exécution 438 lorsque je mets mon application sur serveur
    Par amirad dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 04/12/2008, 16h24
  5. Erreur d'exécution '438'
    Par gbzmt dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/03/2008, 18h41

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