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 :

enchainement de macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut enchainement de macro
    Bonjour,

    Voici mon problème.
    J'ai dans un premier temps créer un userform avec un bouton d'enregistrement.
    Un clique sur ce bouton entraine la création d'un nouveau fichier excel, de sa mise en page et de la saisie des infos trouvées dans le userform.

    Mon problème vient de la segmentation de la macro. En effet, lorsque les macro sont "bout à bout" (1 sub au début et 1 à la fin) il n'y a pas de problème lorsque qu'elle sont dans différentes sub elles ne s'enchainent pas.

    Voici un exemple :

    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
    Public Sub Cmd_save_Click()
     
    'On appelle le fichier
    'Variable représentant le classeur "destination"
    Dim sNomFichier2 As String
    Dim Wb As Workbook
     
    'Ouverture du classeur de destination
         sNomFichier2 = "monchemin.xlsx"
         If Dir(sNomFichier2) <> "" Then
     
    Set Wb = Application.Workbooks.Open(sNomFichier2)
     
    Call Wb.Activate
     
    ActiveWindow.WindowState = xlMinimized
         Else
    Workbooks.Add
    ActiveWorkbook.SaveAs sNomFichier2
     
    Set Wb = Application.Workbooks.Open(sNomFichier2)
    Call Wb.Activate
    ActiveWindow.WindowState = xlMinimized
         End If
     
    Call MEP_fichier_ind
    Call insertion_userform
     
    Call Wb.Close(True)
    Set Wb = Nothing
     
    End Sub
    La macro MEP_fichier_ind commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Wb.Sheets.Add
    ActiveSheet.Name = "PAGE DE GARDE"
    mais s'arrête à la première ligne.

    Cette dernière macro est stockée dans un module alors que la première est sur le userform.

    Si je copie colle la macro MEP_fichier_ind à la place de
    elle s'execute normalement.

    Merci de vos réponses

  2. #2
    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
    Bonjour.

    Ta variable objet est de portée limitée à la procédure "Cmd_save_Click". Elle n'existe pas pour la procédure "MEP_fichier_ind ". Deux solutions :
    • Passer wb en argument de la procédure "MEP_fichier_ind "
    • Déclarer Wb comme variable objet publique dans un module standard.


    Cela n'a rien à voir mais il me semble que l'instruction sur la ligne 21 va tenter d'ouvrir un classeur déjà ouvert.

    Cordialement,

    PGZ

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Le passage en argument est de loin préférable à la variable publique..


    cordialement,

    Didier

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut
    impeccable merci beaucoup

    Re bonjour,
    J'édite mon message car un nouveau problème apparait et je pense qu'il est de même nature.
    J'ai bien déclaré wb en tant que parametre comme conseillé dans les messages précédents.

    Plus loins dans la macro il s'agit d'intégrer les textbox depuis un userform.
    J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        wb.Worksheets("PAGE DE GARDE").Range("B21").Value = txt2.Text
    Faut il déclarer les text box, bouton d'option et autres check box en paramètre ou bien faut il déclarer le userform dans sa totalité et si oui comment ?

    PS : lorsque j'entre le code suivant la macro fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        wb.Worksheets("PAGE DE GARDE").Range("B21").Value = "coucou"

    Merci de vos réponses

    Cordialement

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par braquin Voir le message
    i
    Re bonjour,
    J'édite mon message car un nouveau problème apparait et je pense qu'il est de même nature.
    Bonjour,

    le plus pratique pour répondre est de donner la nature du problème, le contenu du message d'erreur, à quelle ligne etc...

    si tu mets un point d'arrêt sur ta première ligne de code citée, le survol de la souris donne quoi pour la valeur de ton textbox ?

    cordialement,

    Didier

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut
    Bonjour,

    Le message d'erreur est :

    erreur '424':
    Objet requis

    Concernant la valeur du textbox rien n'apparait.

    Le code utilisé est le suivant :
    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
    Public Sub Cmd_save_Click()
     
    'On appelle le fichier
    'Variable représentant le classeur "destination"
    Dim sNomFichier2 As String
    Dim wb As Workbook
     
    'Ouverture du classeur de destination
         sNomFichier2 = "D:\travail\chantiers\EAE\EAE " & Year(Date) & txt1.Text & "_" & txt2.Text & ".xlsx"
         If Dir(sNomFichier2) <> "" Then
     
    Set wb = Application.Workbooks.Open(sNomFichier2)
     
    Call wb.Activate
     
    ActiveWindow.WindowState = xlMinimized
         Else
    Workbooks.Add
    ActiveWorkbook.SaveAs sNomFichier2
     
    Set wb = Application.Workbooks.Open(sNomFichier2)
    Call wb.Activate
    ActiveWindow.WindowState = xlMinimized
         End If
    Application.Run "test", wb
    'Application.Run "MEP_fichier_ind", wb
    'Application.Run "MEP_userform", wb
    'Application.Run "recap"
     
     
    End Sub
    Cette première macro est dans le userform (rattachée au bouton d'enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test(wb As Workbook)
    wb.Sheets.Add
    wb.Worksheets("Feuil1").Name = "PAGE DE GARDE"
    wb.Worksheets("PAGE DE GARDE").Range("A14").Value = "ENTRETIEN ANNUEL D'EVALUATION"
    wb.Worksheets("PAGE DE GARDE").Range("B20").Value = txt1.Text
     
    End Sub
    Cette seconde marco est dans un module.
    Le problème survient sur la dernière ligne de cette seconde macro

    J'éspère avoir été assez précis.
    Merci de vos réponses

    Cordialement

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

Discussions similaires

  1. [XL-2010] 2 macros qui s'enchainent
    Par vponcet0774 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/09/2013, 20h31
  2. [XL-2003] Enchainer les macros les unes à la suite des autres
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2011, 14h55
  3. [AC-2007] enchainer plusieures macros
    Par nabou dans le forum Access
    Réponses: 7
    Dernier message: 28/01/2011, 16h46
  4. PBs enchainement Macros do while
    Par Adrien0634 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2010, 16h23
  5. Peut-on enchainer plusieurs Macros ?
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/08/2007, 22h18

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