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 :

passage de parametre incorrect dans une sub


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 44
    Par défaut passage de parametre incorrect dans une sub
    Bonjour,

    Je vous expose mon souci. Je dispose d'un formulaire sous Access, et sur ce formulaire d'un bouton. Lors du clic sur ce bouton, je souhaite (entre autre chose) faire appel à une procédure qui utilise notamment un objet (un classeur Excel). Le souci et qu'il me retourne l'erreur suivante :"propriété ou méthode non géré par l'object".

    Ma sub (engeristré dans un module) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Remplir_Cellule(Ligne_Valeur As Integer, Colonne_Valeur As Integer, Ligne_Intitullé As String, _
                        Colonne_Intitullé As String, Valeur, Intitullé, Nom_Classeur, Nom_Onglet, Classeur)
     
    If Classeur.Worksheets(1).Cells(Ligne_Intitullé, Colonne_Intitullé) = Intitullé Then
       Classeur.Worksheets(1).Cells(Ligne_Valeur, Colonne_Valeur) = Valeur
    Else
       MsgBox "L'intitullé de la colonne n° " & Colonne_Intitullé & " a changé sur l'onglet " & Nom_Onglet & " du classeur " & Nom_Classeur & " . La donnée " & Intitullé & " ne sera pas renseignée.", vbInformation, "Programme RTA"
    End If
     
     
    End Sub

    l'appel de ce sub : (placé dans le code du boutton)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bibliotheque.Remplir_Cellule (i), (3), (7), (3), (Valeur), ("GLOBAL TRAITE"), ("PGP"), ("Semaine"), (Classeur_PGP)
    Dernier points, dans ma recherche (infrutueuse hélas) de solution, j'ai tenté de transformer ma sub en fonction, et là l'erreur disparait ! Sauf que bon je ne veut pas une fonction (et puis j'aimerai comprendre)
    Si quelqu'un a une idée. Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Nonobstant d'autres erreurs que je n'aurais pas identifiées, dans cette syntaxe
    Classeur.Worksheets(1).Cells(Ligne_Intitullé, Colonne_Intitullé)
    Ligne_Intitullé et Colonne_Intitullé doivent être des nombres
    - compris entre 1 et 65536 (=>XL2003) 1048576 (XL2007) pour la ligne
    - compris entre 1 et 256 (=>XL2003) ou 16384 (XL2007) pour la colonne.
    Or, les arguments que tu passes sont des chaines de caractères...

    De plus, si ton classeur est valide (<> nothing), tu peux te passer de l'argument Nom_Classeur puisque tu peux le retrouver via
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 44
    Par défaut
    Exact, j'etais passé à coté . Du coup ca donne désormais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub Remplir_Cellule(Ligne_Valeur As Integer, Colonne_Valeur As Integer, Ligne_Intitullé As Integer, _
                        Colonne_Intitullé As Integer, Valeur, Intitullé, Nom_Classeur As String, Nom_Onglet As String, Classeur)
    Pour le nom du classeur, l'idée c'est d'afficher le nom sous lequel l'utilisateur connais son classeur, et non pas le nom un poil barbare sous lequel il est enregistrée.

    Par contre ça ne résout pas mon soucie.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par shinta Voir le message
    Pour le nom du classeur, l'idée c'est d'afficher le nom sous lequel l'utilisateur connais son classeur, et non pas le nom un poil barbare sous lequel il est enregistrée.
    Pour afficher le nom du classeur, tu n'as pas besoin de le passer spécifiquement en paramètre puisque tu peux le trouver à partir du paramètre Classeur.

    Classeur est une variable importante. Tu dois avoir une instructionTu peux la montrer?

    Il reste dans la procédure des paramètres sans type : dangereux.

    Dans ta ligne d'appel de la procédure, ça sert à quoi les parenthèses?

    En espérant que cela t'aide,

    PGZ

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 44
    Par défaut
    Salut. Désolé de répondre si tard, mais j'étais parti sur une autre appli (ah ! la joie des projets multiples) et du coup je ne me suis repenché sur ce sujet qu'en toute fin d'après-midi.
    Tout d'abord, le plus important : Ca marche !!! En fait il me suffisait d'enlever les parenthèses autour de Classeur. Il me semblait pourtant avoir vu quelque part qu'il fallait en mettre mais manifestement non.

    Sinon réponse en vrac pour pgz :

    Pour le nom du classeur, le nom système, je peux effectivement le récup, vu que je m'en sert pour l'ouvrir. Le pb c'est que ce nom est 'trop compliqué' pour les utilisateurs (c'est eux qui me l'on dis). En gros mon classeur se nomme :"Reporting_Hebdomadaire_RTA1_RTA2_PGP_SemaineSXX.xls" & eux le connaisse sous le nom de 'classeur semaine'. Voila l'intérêt de ma variable :-)

    Pour les variables non déclarées, j'avou avoir la mauvaise habitude de spécifier le typage une fois que la fonction est finalisée et opérationnelle (donc maintenant) et non pas quand je suis en train de la créer.

    et pour finir, un grand merci pour votre aide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/01/2010, 14h01
  2. [Struts] [HashMap] passage d'un bean dans une HashMap
    Par cosmos38240 dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/09/2005, 16h05
  3. Réponses: 20
    Dernier message: 23/09/2005, 13h50
  4. [SQL Server] Passage d'un paramètre dans une procédure
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2005, 13h19
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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