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 :

Exécuter un script VBA dans une autre WorkSheet [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Par défaut Exécuter un script VBA dans une autre WorkSheet
    Bonjour,

    J'ai à peine commencé à m'adapter au code VBA. Je suis d'habitude branché sur du code MATLAB: je pouvais créer plusieurs fichiers de procédures ou fonctions, pour ainsi donc structurer mes outils, faciliter la lecture et le débogage. Tout un script dans un seul fichier ne me facilite rien.

    Ici je veux faire la même chose avec du VBA, mais je n'arrive pas à trouver la solution à mon problème qui est le suivant:

    - Je souhaite faire de mon "ThisWorkBook" (comme en grafcet pour ceux qui s'y connaisse) mon programme principal, qui contiendra par exemple les procédures suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Prog_Prin()
        PRE_TRAITEMENT
        TRAITEMENT
        POST_TRAITEMENT
    End Sub
    PRE_TRAITEMENT est un script écrit dans la première page "Feuil1" ou "WorkSheet(1)", pareil pour TRAITEMENT dans "Feuil2" ("WorkSheet(2)"), idem pour POST-TRAITEMENT dans "Feuil3"("WorkSheet(3)"). Chacun possède un script particulier et doit être exécuter dès que "ThisWorkBook" l'appelle.

    Ca ne pouvait pas exécuter car, si j'ai bien compris, la procédure est inconnue ou inexistante. J'ai du coup essayé de corriger ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Prog_Princ()
        WorkSheet(1).PRETAITEMENT
        WorkSheet(2).TRAITEMENT
        WorkSheet(3).POST-TRAITEMENT()
    End Sub
    ou en ajoutant un "Call" avant "WorkSheet(i_page).MonScript".

    En bref: Comment exécuter un script (fonction, procédure, ou autre) venant d'un autre WorkSheet?

    Merci beaucoup

  2. #2
    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
    Pourquoi ne pas mettre tout simplement ces procédures en public dans un module standard et leur passer un objet worksheet à traiter en paramètre ?

  3. #3
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir,

    les questions sur VBA sont dans la page réservée...

    Les procédures et fonctions sont écrites dans des modules à créer ou "derrière" les feuilles, dans ce cas double clic sur Feuil1 par exemple. Pour créer un module faire <DEVELOPPEUR><VISUALBASIC><INSERTION><MODULE>
    Dans l'editeur taper le code
    Les procédures et fonctions sont accessibles dans le projet par call ou nom de la fonction.
    Voilà un code possible (exemple d'appels) :
    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
    Sub Prog_Prin()
    Call pretraitement
    Call traitement
    Call posttraitement
    End Sub
    Sub pretraitement()
    'exemple
    Feuil1.Cells(1, 1) = "bonjour"
    End Sub
    Sub traitement()
    'exemple
    Feuil2.Cells(1, 1) = Feuil1.Cells(1, 1) & " la feuille 2"
    End Sub
    Sub posttraitement()
    'exemple
    Feuil3.Cells(1, 1) = "bonjour la feuille 3"
    x = MsgBox("c'est fini", vbOKOnly, "Fin du programme")
    End Sub
    Les procédures et fonctions ne sont pas des méthodes de l'objet feuille de l'application. Pour exécuter ton code on peut l'exécuter dans l'éditeur en pas à pas ou en entier, mais aussi en creant un bouton dans une feuille ou en utilisant le menu macro.

    bonne continuation
    geogeo

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Par défaut
    Bonjour,

    D'abord excusez moi car je ne suis pas spécialisé en codage informatique (que ce soit MATLAB, VBA, C++, Python,...), et j'ai du coup du mal à comprendre votre raisonnement "Pourquoi ne pas mettre tout simplement ces procédures en public dans un module standard et leur passer un objet worksheet à traiter en paramètre ?"

    En tout cas j'ai pu trouver ma solution un peu plus tard en utilisant Run ou en mettant: NomdelaFeuille.NomduSub(entrées). Et ça marche =)

    Merci en tout cas pour votre aide.

    Je lirai vos réponses à ma question pour continuer à m'améliorer sur ce point.

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

Discussions similaires

  1. Exécuter un script.bat dans une session standard
    Par Vmcine dans le forum Développement
    Réponses: 0
    Dernier message: 23/05/2014, 17h19
  2. Problème d'exécution de script Python dans une JSP
    Par bleno dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/07/2013, 09h41
  3. exécuter un script php dans une nouvelle window
    Par lucaazori1988 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/03/2011, 21h37
  4. Réponses: 10
    Dernier message: 15/07/2008, 11h52
  5. Réponses: 5
    Dernier message: 23/12/2007, 15h12

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