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 :

Sortir et entrée dans des procédures


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Sortir et entrée dans des procédures
    Bonjour,
    j'ai créé une macro dans Excel avec des userforms et une procédure (sub) générale qui gère les userforms. Dans la procédure générale, il y a en particuler une boucle "For Next" et dans l'un des userforms, j'aimerai crée un bouton "suivant" pour passer des données.

    Mon problème est que je n'arrive pas à renvoyer l'évenement "Click" du bouton "suivant" à l'endroit où j'aimerais dans ma procédure générale (juste avant le "next i" de la boucle "for").

    J'avais penser à effectuer un GOTO dans le code de l'Userfom qui renvoyait dans la procédure générale. Mais, cela ne fonctionne pas car GOTO semble ne fonctionner que dans une procédure, userform ou fonction.

    Est-ce que quelqu'un sait comment faire pour résoudre mon problème ?
    Merci,

    Au faite, est-ce que j'ai été claire pour expliquer mon problème ?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est un fait, l'est pas trés claire ton histoire...
    Déjà, n'utilise jamais de goto dans une boucle, réserve leur utilisation à la gestion d'erreur.
    Ensuite, si je n'ai pas compris de travers, tu souhaites intervenir "en temps réel", à l'aide d'un bouton, sur le déroulement d'une procédure. Si c'est ça, je ne vois pas comment tu peux faire ça puisque tant que la procédure se déroule, tu n'as pas accès aux contrôles de l'usf.
    Il serait bien que tu nous montres ta boucle et que tu nous indiques l'intervention que tu souhaites réaliser.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Voici le code de la procédure générale qui gère à apeller toutes les sous-procédures et les userforms :

    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
    Sub ImportALaChaine()
    For i = 5 To 43 Step 2
        Cells(i, 2).Activate
        If Cells(i, 2) <> "" Then
            UserForm1.Show
        Else
            UserForm2.Show
        End If
        Call procédure 1
        Select Case Cells(i, 62)
        Case "GMF + PIMOF"
            Call procédure 2
        Case "PDCA"
            Call procédure 3
        Case "GMF"
            Call procédure 4
        End Select
        Call procédure 5
    suivant:
    Next i
    End Sub
    et voici le code de l'userform1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub CommandButtonFin_Click()
    Unload UserForm1
    End
    End Sub
     
    Private Sub CommandButtonSuivant_Click()
    Unload UserForm1
    Goto Suivant 
    End Sub
     
    Private Sub CommandButtonOk_Click()
    Unload UserForm1
    End Sub
    J'aimerais retourner dans la procédure générale à la fin de CommandButtonSuivant en sautant toutes les sous-procédures de mon code générale (mais en restant dans la boucle).

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Sinon, j'ai trouvé sur le forum la réponse à ma question. Comme quoi en cherchant, on trouve nos réponses.

    http://www.developpez.net/forums/d48...re-retour-sub/

    Le code proposé par House MD fonctionne dans mon programme.

    Au cas vous avez des sugestions à me faire, n'hésitez pas !!!
    Merci à tous.

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    J'ajoute ceci pour les lecteurs du forum...

    Dans ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButtonSuivant_Click()
    Unload UserForm1
    Goto Suivant 
    End Sub
    il y a un Goto bien inutile...

    Goto ne peut aller que vers un bout de code à l'intérieur de la procédure en cours. Pas ailleurs! Et comme le dit ouskel'n'or (ben! au nord! tiens! salut vieux!), il vaut mieux utiliser le Goto pour la gestion d'erreur. Pour l'utilisation correcte des Goto, jette un œil dans l'aide de VB.

    Si suivant est une procédure (macro) dans un module, il vaut mieux l'appeler avant le Unload, car une fois le UserForm déchargé de la mémoire, je ne vois pas comment l'instruction qui suivait pourrait être exécutée.

    zaza

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/02/2015, 12h31
  2. Problème pour des ORDER BY dans des procédures stockées
    Par mathiaschoquet dans le forum SQL
    Réponses: 0
    Dernier message: 12/01/2012, 10h13
  3. Colonne référéncée dans des procédures stockées
    Par plochert dans le forum Oracle
    Réponses: 3
    Dernier message: 03/03/2006, 14h10
  4. Taille des champs entres dans un stringGrid
    Par gilles641 dans le forum Composants VCL
    Réponses: 15
    Dernier message: 11/07/2005, 10h38
  5. [VB6] suggestion des entrés dans un combobox
    Par s.rais dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/02/2004, 15h32

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