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 :

Ordre d'exécution dans un script / msoCotrolEdit


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ordre d'exécution dans un script / msoCotrolEdit
    Bonjour,

    Je travaille sur une application sous VBA Excel 2003 et j'ai un petit souci: dans mon script je crée une zone de texte avec l'objet msoControlEdit. A la propriété OnAction j'associe une macro avec paramètre, qui pemet de récupérer la valeur rentrée par l'utilisateur et de supprimer la commandbar juste après. Dans le script principal, je veux pouvoir utiliser cette valeur mais après l'exécution du OnAction et de la macro associée. En faisant des tests, je me rends compte que le script commce d'abord par exécuter ce qu'il y a après l'appel de la macro associée au OnAction et ensuite il rend la main à l'utilisateur pour qu'il puisse remplir la zone de texte.
    Y a-t-il un moyen de forcer l'ordre d'exécution des différentes parties de mon script?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, c'est à toi d'ordonner ton code en conséquence, pour info voir peut-être http://fring.developpez.com/vba/excel/barremenu/

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci beaucoup pour ta réponse.

    En fait, apparemment mon problème n'est pas lié à l'appel de la fonction associée au OnAction. Je pense que c'est lié à la définition de ma barre. J'ai regardé dans le document joint à ton message mais j'arrive pas à trouver ce qui cloche ..

    Voici le début de mon code:

    ----------------------------------------------------------
    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
    33
    34
    35
    36
    37
    Option Base 1
     
    Sub compare_files()
     
    file_1 = Application.GetOpenFilename_
               (FileFilter:="Fichier (*.*),*.*", Title:= " First file")
    file_2 = Application.GetOpenFilename_
               (FileFilter:="Fichier (*.*),*.*", Title:= " Second file")
     
    If file_1 = False Or file_2 = False then
         MsgBox "Error: No file selected!"
         Exit Sub
    End If
     
    Dim bar as CommandBar
    Dim Ctrl As CommandBarControl
     
    On Error Resume Next
    CommandBars("MaBarre").Delete
     
    Set bar = Application.CommandBars.Add("MaBarre")
     
    With bar
      .Visible= True
      .Top = 500
      . Left = 700
    End With
     
    Set Ctrl = bar.Controls.Add(msoControlEdit)
     
    With Ctrl
       .Caption = "Value "
       .Style = msoComboLabel
       .OnAction "'test ""MaBarre"" '"
    End With
     
    MsgBox "ça ne marche pas"
    .
    .
    suite du code

    ----------------------------------------------------------

    Au moment de l'exécution, ce n'est qu'après l'affichage du msgbox et l'exécution de toute la suite que VBA me rend la main sur la barre(qui est affichée tout au début qd même)

    Je suis à court d'idées .. je sais pas ce qui va pas avec ma barre ..
    Quelqu'un pourrait m'aider svp?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Pas vraiment clair ton message box bloque le code et l'accès à toutes les barres de menu c'est le fonctionnement normal des message box sous Excel ..!

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    J'ai de la peine à comprendre ce que tu veux faire ? Tu voudrais que ta proc s'arrête sitôt que ta zone de texte est crée mais ceci n'est pas possible, il faut que la suite de ton code soit dans la macro appelée par OnAction et à la fin de cette macro tu peux supprimer ta zone de texte.
    La proc appelée par OnAction sera exécutée quand l'utilisateur tapera sur 'Entrée' :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Sub compare_files()
     
        Dim bar As CommandBar
        Dim Ctrl As CommandBarControl
     
        file_1 = Application.GetOpenFilename(FileFilter:="Fichier (*.*),*.*", Title:=" First file")
     
        file_2 = Application.GetOpenFilename(FileFilter:="Fichier (*.*),*.*", Title:=" Second file")
     
        If file_1 = False Or file_2 = False Then
             MsgBox "Error: No file selected!"
             Exit Sub
        End If
     
     
        On Error Resume Next
        CommandBars("MaBarre").Delete
     
        'arrête la gestion d'erreurs
        On Error GoTo 0
     
        Set bar = Application.CommandBars.Add("MaBarre")
     
        With bar
          .Visible = True
          .Top = 500
          .Left = 700
        End With
     
        Set Ctrl = bar.Controls.Add(msoControlEdit)
     
        With Ctrl
     
           .Caption = "Value"
           .Style = msoComboLabel
           .OnAction = "'test""MaBarre""'"
     
        End With
     
    End Sub
     
    Sub Test(Arg As String)
         'retoure la valeur entrée dans la zone de texte ainsi que l'argument passé
        MsgBox CommandBars.ActionControl.Text & vbCrLf & Arg
     
    End Sub
    Hervé.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok .. donc ce que je veux faire n'est pas possible. Je pensais que les OnAction c'était comme les "call proc": tu appelles la macro, et ce n'est qu'à la fin de son exécution, que la suite du main peut être exécutée.

    J'avais pensé à mettre la suite dans la proc appelée, comme tu le suggères, mais ça me génait un peu de mettre mon main dans une proc "secondaire". Mais bon, là j'ai pas le choix apparemment ..

    Merci beaucoup pour ces réponses!

Discussions similaires

  1. [Shell] Rechercher si un fichier est en cours d'exécution dans un script
    Par frepixunli dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 28/08/2014, 00h59
  2. Tracer les requêtes exécutées dans un script PL/SQL
    Par awalter1 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 30/09/2011, 17h57
  3. [PHP 5.2] Ordre d'exécution de deux scripts
    Par renaud26 dans le forum Langage
    Réponses: 7
    Dernier message: 02/03/2011, 09h35
  4. [PL/SQL] [9i] Ordre Create dans un Script
    Par ftrifiro dans le forum Oracle
    Réponses: 14
    Dernier message: 22/05/2006, 12h01
  5. Ordre d'exécution dans une jointure externe
    Par Pero dans le forum Langage SQL
    Réponses: 17
    Dernier message: 20/09/2005, 12h22

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