Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 06h03   #1
Invité de passage
 
Inscription : août 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 3
Points : 0
Points : 0
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
Toto_1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 06h49   #2
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 702
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

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

Informations forums :
Inscription : juin 2006
Messages : 1 702
Points : 3 622
Points : 3 622
Salut, c'est à toi d'ordonner ton code en conséquence, pour info voir peut-être http://fring.developpez.com/vba/excel/barremenu/
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 16h51   #3
Invité de passage
 
Inscription : août 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 3
Points : 0
Points : 0
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 :
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?
Toto_1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 17h16   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
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 ..!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 17h35   #5
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
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 :
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 18h50   #6
Invité de passage
 
Inscription : août 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 3
Points : 0
Points : 0
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!
Toto_1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h25.


 
 
 
 
Partenaires

Hébergement Web