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 :

Pointer vers une partie d'une macro principale dans un userform [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub UserForm_activate()
     
    End Sub

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    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.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    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

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Tu es en train de créer une boucle infinie là, non ?
    Code -> usf1 -> usf2 -> Code...

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    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

  6. #6
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    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 ?

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    heu.... non c'est quoi le non modal??

  8. #8
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    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 : 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
    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 : 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
     
    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.

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    super merci ca marche

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  4. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  5. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47

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