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 :

[VBA-E]Lancer une procédure à un moment T


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Par défaut [VBA-E]Lancer une procédure à un moment T
    Bonjour tout le monde,

    voilà, je voudrais savoir comment faire pour déclencher une procédure à un moment voulu. Je m'explique :

    Je lance une procédure qui rempli aléatoirement la feuille Excel d'une grille de jeu dans lequel l'utilisateur doit trouver les nombres manquants. Ce que je voudrais faire, c'est qu'une fois que l'utilisateur a rempli toutes les cases, une procédure se lance et affiche soit "Gagné" soit "Perdu". Il me faudrait tonc un code (ou une astuce :p) me permettant de lancer la procédure quand on a fini de remplir la grille.

    Merci d'avance pour vos réponses.

    PS : si c'est un peu compliqué, pourriez-vous détailler pour que je puisse comprendre la démarche svp ?

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    un début de solution, à toi d'adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vide As Integer
        For Each c In Worksheets("Feuil1").Range("A1:D8")
            If IsEmpty(c) Then Vide = Vide + 1
        Next c
        MsgBox "Il y a " & Vide & " cellules vides dans la plage"
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Par défaut
    Houlala ça va loin la, il y a des objets dans ton code que je ne connais pas. J'ai à peine une dizaine d'heures de VBA derrière moi et mes connaissances dans ce domaine sont assez restreintes ^^

    1) ByVal Target As Range
    2) Worksheet_Change

    Moi j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Oui_Click()
        For L = 0 To NbL - 1
            For C = 0 To NbC * 2 - 1
                If Application.ActiveWorkbook.ActiveSheet.Range("A1").Offset(2 * L, 2 * C).Value <> UserForm.ValeursGrille(L, C) Then
                    Application.ActiveWorkbook.ActiveSheet.Range("A1").Offset(2 * L, 2 * C).Color = RGB(225, 0, 0)
                End If
            Next C
        Next L
    End Sub
    Mince j'ai cliqué sur le mauvais boutton >.< pas fini mon message.

    Donc je disai :

    le code ci-dessus si l'utilisateur a rentré une (ou plusieurs valeurs fausses), ce code permet de les afficher en rouge (enfin je crois que ça fait ça, j'ai pas encore essayé ^^)

    Et ça c'est pour vérifier si toutes les cases sont remplies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     For L = 0 To NbL - 1
            For C = 0 To NbC * 2 - 1
                If Application.ActiveWorkbook.ActiveSheet.Range("A1").Offset(2 * L, 2 * C).Value <> "" Then
                    Verification = Verification + 1
                End If
            Next C
        Next L
    Ensuite, pour afficher "Gagné" ou "Perdu" j'utilise :

    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
    If Verification = 2 * UserForm.NbL * UserForm.NbC Then
            For L = 0 To UserForm.NbL - 1
                For C = 0 To UserForm.NbC * 2 - 1
                    If Application.ActiveWorkbook.ActiveSheet.Range("A1").Offset(2 * L, 2 * C).Value = UserForm.ValeursGrille(L, C) Then
                        Verification2 = Verification2 + 1
                    End If
                Next C
            Next L
            If Verification2 = 2 * UserForm.NbL * UserForm.NbC Then
                MsgBox (Message1)
                UserForm2.Show
            Else
                MsgBox (Message2)
                UserForm3.Show
            End If
        End If
    Le truc c'est que ces deux codes sont dans la procédure qui génére la grille de jeu et donc se lance juste après que la grille soit créée, et l'utilisateur n'a alors pas eu le temps de remplir quoi que ce soit. Je suis vraiment plus que débutant en VBA, donc je ne sais pas si ces boucles se lancent en continue (dans quel cas j'ai la réponse à ma question) ou non. J'espére être clair dans mes explications (mm si ça m'a pas l'air d'être le cas ).

  4. #4
    Expert éminent


    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
    Par défaut
    WorkSheet_change et une procédure évenementielle déclenchée lorsque un changement intervient dans la feuille concernée... voir

    http://silkyroad.developpez.com/VBA/...Feuille/#LII-E

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Par défaut
    Ok tout s'explique

    Une autre question : dans mon UserForm, je génére un tableau 2D de valeurs. Comment faire pour réutiliser ce tableau dans une procédure ?

  6. #6
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    On ne mélange pas les questions dans un sujet

    Si celui-ci est résolu, alors click sur en bas de la page, et ouvre un nouveau sujet pour ta nouvelle question

    Penser à Lire les règles du forum
    Merci

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

Discussions similaires

  1. [VBA-E]lancer une macro depuis le bureau
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2007, 14h54
  2. [VBA-Excel] Lancer une option de la barre des menu
    Par vovor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2006, 15h41
  3. [VBA-A] Lancer une procédure d'une application ArcMap
    Par TiT0f dans le forum VBA Access
    Réponses: 11
    Dernier message: 05/06/2006, 23h44
  4. [VBA-E] lancer une url
    Par Yaone dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/05/2006, 12h55
  5. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22

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