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 :

Problème pour lancer une macro-commande à partir d'un bouton [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 18
    Points
    18
    Par défaut Problème pour lancer une macro-commande à partir d'un bouton
    J'ai un bouton pour lancer une macro.

    La 1ere partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub creation_projet_Click()
        Application.Run "'Estimations.xlsm'!projet_new"
       indexation.Show
     
    End Sub
    fonctionne à merveille.

    Maintenant, le code pour le formulaire "indexation":
    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
     
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Call UserForm_Initialize
     
    End Sub
     
    Private Sub OK_Click()
    Sheets("nouveau projet").Activate
    Cells.Item(1, 1) = nom_projet.Text
    Cells.Item(5, 2) = no_projet.Text
    Cells.Item(1, 4) = client.Text
    Cells.Item(1, 10) = adresse.Text
    Cells.Item(2, 10) = ville.Text
    Cells.Item(3, 10) = code_postal.Text
    Cells.Item(4, 10) = tel.Text
    Cells.Item(5, 10) = telec.Text
    Cells.Item(6, 10) = email.Text
    If OptionReservoir Then Cells.Item(7, 2) = "Réservoir"
    If OptionPF Then Cells.Item(7, 2) = "Plate-forme"
    If OptionPFA Then Cells.Item(7, 2) = "Plate-forme et abri"
    Range("C10").Activate
    Application.Run "'Estimations.xlsm'!indexation"
    Unload Me
    End Sub
     
    Private Sub Cancel_Click()
    Unload Me
    End Sub
    refuse maintenant de lancer la macro "indexation". Je ne comprends pas, tout fonctionnaire en début de semaine...

    Le code du bouton est situé dans "MS Excel Objects", le code du formulaire dans "indexation", et les macros dans différents modules, tous rattachés au même fichier, Estimation (Estimations.xlsm).

    Est-ce parce que j'ai un formulaire du même nom qu'une macro?

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Alors
    Est-ce parce que j'ai un formulaire du même nom qu'une macro?
    Quelque soit la réponse, ça n'est pas une bonne idée d'avoir ce genre de choses.
    Il est préférable d'avoir des noms distincts, ne serait ce que pour repérer facilement à quoi tu fais référence dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'Estimations.xlsm'!projet_new"
    Ce genre d'appelle est reservé dans le cas ou ta Sub ou fonction se trouve dans un autre classeur. Si ta procedure est dnas un module (et déclaré public) il te suffit d'utiliser son nom, c'est tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    Call UserForm_Initialize
     
    End Sub
    Que veux tu faire? UserForm_Initialize est appelé automatiquement lors du chargement du UserForm.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("nouveau projet").Activate
    Cells.Item(1, 1) = nom_projet.Text
    Cells.Item(5, 2) = no_projet.Text
    Il vaut mieux éviter d'utiliser les Activate et select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Thisworkbook.Sheets("nouveau projet")
       .Cells.Item(1, 1) = nom_projet.Text
       .Cells.Item(5, 2) = no_projet.Text
       '[...]
    End With
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Quelque soit la réponse, ça n'est pas une bonne idée d'avoir ce genre de choses.
    Il est préférable d'avoir des noms distincts, ne serait ce que pour repérer facilement à quoi tu fais référence dans ton code.
    ok, noté. merci.

    Ce genre d'appelle est reservé dans le cas ou ta Sub ou fonction se trouve dans un autre classeur. Si ta procedure est dnas un module (et déclaré public) il te suffit d'utiliser son nom, c'est tout
    corrigé, et maintenant ça fonctionne!
    ça a réglé un autre problème aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    Call UserForm_Initialize
     
    End Sub
    Que veux tu faire? UserForm_Initialize est appelé automatiquement lors du chargement du UserForm.
    C'est un bouton "recommencer" pour vider les champs dans le formulaire au cas où j'ai fait une erreur, mais je n'en était pas rendu là encore, alors le bouton ne fait rien...

    Ça n'est pas urgent de toute façon, et ça se peut que le bouton disparaisse, alors je ne pose pas de question sur ça pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("nouveau projet").Activate
    Cells.Item(1, 1) = nom_projet.Text
    Cells.Item(5, 2) = no_projet.Text
    Il vaut mieux éviter d'utiliser les Activate et select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Thisworkbook.Sheets("nouveau projet")
       .Cells.Item(1, 1) = nom_projet.Text
       .Cells.Item(5, 2) = no_projet.Text
       '[...]
    End With
    ++
    Qwaz
    merci, j'ai tout corrigé. J'ai encore bcp d'optimisation à faire dans mon code, c'est certain.

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

Discussions similaires

  1. Problème pour lancer une commande DOS
    Par groslou2 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 16/03/2011, 15h38
  2. Problème pour lancer une commande PERL
    Par mr_samy81 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 25/03/2009, 14h48
  3. Problème pour lancer une macro dans Excel
    Par jujuf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/12/2008, 16h32
  4. Lancer une macro PPT à partir d'Excel
    Par Rabah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2005, 17h23

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