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 :

Appel par bouton d'une procédure avec argument


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Appel par bouton d'une procédure avec argument
    Bonjour à tous,

    Décidément, ce n'est pas mon jour de chance.

    Quant à la question, elle est dans le sujet.

    Dans la suite de mon message précédent sur ce forum http://www.developpez.net/forums/d12...ent-procedure/, je voudrais être éclairé sur la chaine de caractère à affecter à OnAction pour qu'un bouton exécute l'équivalent de l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run (Action, ThisWorkbook.ActiveSheet)
    D'avance, mille mercis

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    salut,

    j'ai un peu de mal à saisir ta question

    - tu veux que la fonction Run "simule" le clic d'un bouton ?
    - tu veux que l'application.run soit lancé à partir d'un bouton ?

    Merci de nous éclairer sur ce point stp
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Comme dit dans mon message précédent, le classeur 2 comporte un bouton qui doit exécuter la procédure sur la feuille activée dudit classeur.
    Il faut donc affecter la commande effectuant cette opération à l'évènement OnAction de ce bouton.

    L'argument de la feuille sur lequel la procédure doit s'effectuer n'est variable que quand celle-ci est appelée, par un classeur extérieur, Classeur 1 dans le message précédent.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    la FAQ est merveilleuse
    mais elle ne peut penser à tout.
    Le problème réside semble-t-il dans les guillemets ou les apostrophes et dans leur combinaison.
    La chaine de OnAction doit être encadrée par des guillemets. Mais, à l'intérieur de celle-ci, le chemin et le nom du classeur doit l'être également pour le cas où il contiendrait des espaces.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Action = "'" & ThisWorkbook.FullName & "'!AddNoPol " & "'""" & "ThisWorkbook.ActiveSheet""" & "'"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Action = "'" & ThisWorkbook.FullName & "'!AddNoPol ""ThisWorkbook.ActiveSheet"""
    Dans les 2 cas, j'ai l'erreur 2004 : Erreur définie par l'application ou par l'objet.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    OK,

    passons en revue les possibilités qui s'offrent à nous :
    - remplacer les multiquotes par des chr(34) pour s'assurer qu'on n'en a pas en "trop"
    - essayer de voir si un code du style ferait l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Action = "'" & ThisWorkbook.FullName & "'!AddNoPol " & "'""" & ThisWorkbook.ActiveSheet  & """'"
    - envisager la possibilité d'avoir au lieu du passage en paramètre de la spreadsheet l'utilisation d'un optional et d'un activesheet par défaut si absence du paramètre.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    A part le numéro de l'erreur qui change, même topo.

    Je continue à chercher et j'ai constaté que quand la procédure ne comporte pas d'argument, cela fonctionne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      OnAction = "'" & ThisWorkbook.FullName & "'!AddNoPol"
    De même, si la macro procédure est activée à partir du classeur qui la contient cela fonctionne également avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      OnAction = "'AddNoPol " & "ThisWorkbook.ActiveSheet" & "'"
    C'est la concaténation des 2 qui provoque une erreur.

  8. #8
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    J'ai enfin trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        OnAction = "'" & ThisWorkbook.FullName & "'!'AddNoPol ThisWorkbook.ActiveSheet" & "'"
    Merci à jpcheck pour ses conseils.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/03/2014, 09h38
  2. Appel sans arguement d'une fonction avec argument
    Par debutant100 dans le forum Général Python
    Réponses: 2
    Dernier message: 03/04/2011, 13h04
  3. [XL-2010] Appel de procédure avec arguments pour RowSource d'une ListBox
    Par RicardoBxl dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/01/2011, 22h06
  4. Appel d'une procédure avec argument d'un autre script
    Par behonestinlife dans le forum VBScript
    Réponses: 1
    Dernier message: 10/05/2010, 00h04
  5. Réponses: 1
    Dernier message: 18/04/2007, 23h02

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