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 01/12/2011, 14h31   #1
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
Par défaut Pointer vers une partie d'une macro principale dans un userform

Bonjour,
Je veux afficher une barre de progression a partir d'une macro principale. Le probleme est que je ne veux pas revenir au debut du programme principale quand j'ai affiché le userform de la pbarre d'avancement mais je veux continuer mon code de ma macro principale (donc apres l'affichage du userform). Est il possible de faire un Goto ou quelque chose equivalent a la suite de ma macro principale (apres le UserForm3.Show) et dans le userform
quelque chose dans le genre
Call Type_Deal Goto XXXX
'ou Type_Deal est la marco principale et XXX le Goto
???


Macro principale
Code :
1
2
3
4
5
6
7
8
9
 
UserForm3.LabelProgress.Width = 0
UserForm3.Show
 
'on error resume next => ignore les erreurs (le code ne stoppe pas !)
   On Error Resume Next 'car on peut avoir des erreurs en redimensionnant le frame du userform
 
 'ouverture de la progressbar à 0%
    Call UpdateProgress2(0)


Mon userform
Code :
1
2
3
4
 
Private Sub UserForm_activate()
 
End Sub
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h10   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je n'ai pas bien compris ce que tu voulais, car de toute façon, le code n'est pas censé "revenir au début" après affichage du userform.
Mais peut-être qu'une piste est d'afficher le userform en non modal.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h31   #3
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
le code reviendrait au debut car dans le user form je rappelerai la macro principal qui a lancé ce meme userform. Ce que j'aimerai c'est depuis le userform revenir dans le programme principale mais apres le UserForm3.Show
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h50   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu es en train de créer une boucle infinie là, non ?
Code -> usf1 -> usf2 -> Code...
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h58   #5
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
Je fais :
code-> usf3 ->code.
Ce que je veux pour eviter la boulce infinie cest
Code -> usf3 -> code apres le usf3.show
L'usf3 est une barre de progression que j'unload a la fin du code principale
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 16h15   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Il ne faut pas rappeler le code dans usf3. Dès que usf3 s'unload, tu vas revenir dans ton code.
Par contre, si tu as besoin de gérer la progression via ton code, il faut ouvrir usf3 en mode non modal et tout gérer directement à partir de ton code. Le code va continuer à s'executer sans attendre le unload de usf3. Tu vois ce que je veux dire ?
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 17h19   #7
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
heu.... non c'est quoi le non modal??
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 17h29   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
C'est quand la userForm que tu lances ne bloque pas le déroulement de la macro. Je vais essayer de te faire un exemple.

Pour mon exemple, j'ai créé une USF qui s'appelle usfProgression et qui contient une ProgressBar pbExemple.

Code de l'USF :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
 
Public affichageModal As Boolean
 
Private Sub UserForm_Layout()
    If affichageModal Then 'Histoire de ne pas le faire en non modal
        Dim i As Integer
 
        For i = 1 To 100
            'Traitement ici...
            pbExemple.Value = i 'On incrémente la progress bar
            Sleep 50  'Histoire de voir ce qui se passe
        Next i
 
        Unload Me 'On referme, le code appelant va reprendre la main
    End If
End Sub
Code dans un module :
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
Option Explicit
 
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Public Sub MethodeModale()
    usfProgression.affichageModal = True
    'On affiche l'USF
    'Et on attend que son code s'execute
    usfProgression.Show
 
End Sub
 
Public Sub MethodeNonModale()
    usfProgression.affichageModal = False 'Pour le prévenir de ne pas faire son code
 
    'On affiche l'USF, mais on reprendre la main dès qu'il est affiché
    usfProgression.Show 0
 
    'On travaille dessus
    Dim i As Integer
 
    For i = 1 To 100
        'Traitement ici...
        usfProgression.pbExemple.Value = i 'On incrémente la progress bar
        Sleep 50 'Histoire de voir ce qui se passe
    Next i
 
    'On referme l'USF
    Unload usfProgression
End Sub
Essaie de lancer les 2 méthodes du module pour voir la différence. (Tu n'en verras qu'en mode pas à pas).
Ici, on a l'impression que ça fait la même chose, mais en fonction de ce qu'on veut faire le choix d'une méthode ou de l'autre peut-être déterminant.
Pour ce qui est d'une progressBar, je dirais quand même que la méthode non modale est la plus propre.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2011, 20h26   #9
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
super merci ca marche
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h49.


 
 
 
 
Partenaires

Hébergement Web