p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Inscrit en
    avril 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 34
    Points : 5
    Points
    5

    Par défaut [VBA-E] Pause arréter par l'appui d'une touche

    Bonjour,

    J'aimerai pouvoir arréter le fonctionnement d'une macro à un moment donné et pouvoir reprendre le traitement suite à l'appui sur une touche.
    Je travail sur Excel avec des macros VBA. Le systéme serait equivalent en fait à mettre un point d'arret dans la macro. L'utilisateur devra avoir la main sur Excel pour visualiser des données.

    Merci de vos réponses.

  2. #2
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    13 406
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 13 406
    Points : 24 807
    Points
    24 807

    Par défaut

    voir instruction stop

  3. #3
    Invité régulier
    Inscrit en
    avril 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    Oui l'instruction stop arrete bien la macro à l'endroit voulu mais comment la reprendre à partir d'Excel??? Et l'instruction stop ouvre VB editor ce que je ne veux pas du tout , il faudrait que ca soit transparent au niveau utilisateur, juste que l'utilisateur appui sur une touche dans Excel et le macro continue .

  4. #4
    Inactif
    Avatar de jmfmarques
    Inscrit en
    décembre 2005
    Messages
    3 784
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 3 784
    Points : 4 516
    Points
    4 516

    Par défaut

    utilisation d'une boucle sur la valeur boléenne d'une variable toto
    Au er appui toto = true
    au eme appui toto = false
    et tant que toto = true on ne fait rien (doevents, par exemple)

  5. #5
    Invité régulier
    Inscrit en
    avril 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    Oui merci mais quelle est la fonction pour récupérer l'appui sur un bouton?
    merci

  6. #6
    Inactif
    Avatar de jmfmarques
    Inscrit en
    décembre 2005
    Messages
    3 784
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 3 784
    Points : 4 516
    Points
    4 516

    Par défaut

    utilisation de l'événement click.
    ps : tu as bien un userform ?

  7. #7
    Invité régulier
    Inscrit en
    avril 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    Non justement je n'ai pas de userform à ce moment la de l'application !!!

  8. #8
    Inactif
    Avatar de jmfmarques
    Inscrit en
    décembre 2005
    Messages
    3 784
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 3 784
    Points : 4 516
    Points
    4 516

    Par défaut

    Fais-en une, alors (toute petite au besoin) avec un bouton de commande dont tu utilises le click

  9. #9
    Invité régulier
    Inscrit en
    avril 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    Je veux en faire une mais après je n'aurai plus la main sur mon fichier Excel !!

  10. #10
    Expert Confirmé
    Avatar de zazaraignée
    Étudiant
    Inscrit en
    février 2004
    Messages
    3 174
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2004
    Messages : 3 174
    Points : 3 869
    Points
    3 869

    Par défaut

    Salut

    l'arrêt de la macro se produit sous quelle condition? On peut voir le bout de code ent question?
    • Pour les nouveaux : Mode d'emploi et aide aux nouveaux
    • et impérativement les règles du forum. Histoire de garder une ambiance amicale.
    • Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
    • Je ne réponds pas aux questions posées par MP.

  11. #11
    Expert Confirmé Sénior
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    septembre 2002
    Messages
    3 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 672
    Points : 8 406
    Points
    8 406

    Par défaut

    Citation Envoyé par jmfmarques
    utilisation de l'événement click.
    ps : tu as bien un userform ?
    Pas besoin de UserForm, un bouton de commande placé directement sur une feuille Excel possède aussi un évènement Click

  12. #12
    Rédacteur

    Homme Profil pro
    Inscrit en
    août 2005
    Messages
    3 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : août 2005
    Messages : 3 318
    Points : 18 638
    Points
    18 638

    Par défaut

    bonjour

    Peux tu préciser le traitement à appliquer dans la macro

    Excel n'est pas vraiment prévu pour gérer les timers mais tu trouveras ci dessous un exemple qui incrémente la cellule B1 toutes les secondes à paartir du CommandButton placé dans la feuille (procédure à adapter en fonction de ton projet)


    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
     
    '----- au niveau de la feuille---------
    '-------contenant le CommandButton-----
    Option Explicit
     
    Private Sub CommandButton1_Click()
     
    If Btn = False Then
        Btn = True
        Temporisation
        Else
        Btn = False
    End If
     
    End Sub
    '-------------------------------------

    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
    31
    32
     
    '------ dans un module standard -------
    Option Explicit
     
    Public Btn As Boolean
     
    Sub Temporisation()
    'timer toutes les secondes
    Application.OnTime Now + TimeValue("00:00:01"), "maMacro"
    End Sub
     
     
    Sub maMacro()
    '
    'incementation de la cellule B1
    Range("B1") = Range("B1") + 1
    '
     
    If Btn = False Then
    Finir
    Exit Sub
    End If
     
    Temporisation
    End Sub
     
     
    Sub Finir()
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:01"), _
    "maMacro", , Schedule:=False
    End Sub

    bonne journée
    michel

  13. #13
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    13 406
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 13 406
    Points : 24 807
    Points
    24 807

    Par défaut

    @SilkyRoad :désolé , mais j'suis pas sur que ton code corresponde au fonctionnement demandé alors je poste le mien ...

    @gengen ... : Commence par coller dans ta feuille excel un bouton de la boite à outils controle et lie le à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub CommandButton1_Click()
     bEnPause = Not bEnPause
     If bEnPause Then
       CommandButton1.Caption = "Marche"
     Else
     CommandButton1.Caption = "Pause"
     End If
    End Sub
    ensuite 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
     
    Public bEnPause As Boolean 'Variable globale ...
     
    Sub MaProcedure()
     'Varible dFin utilisée seulement pour créer une boucle
     'simulant le traitement en cours
     Dim dFin As Date 'Variable Date de fin de boucle
     dFin = Now + TimeSerial(0, 2, 0)
     
     While Now < dFin ' Boucle Simulant la boucle finale de cacul
        DoEvents 'Obligatoire !! sinon pas d'appui possible sur bouton
        While bEnPause
          DoEvents 'Boucle ici en mode pause
        Wend
     
       ' Traitement à effectuer ici...
       '
       If i > 65000 Then i = 0
       i = i + 1
      '---
     Wend
    End Sub
    bon ne sachant pas ce que fait ton code .. j'ai fai une boucle qui tourne pendant 2 minutes... à toi de remplacer cette boucle , et d'organiser ton code pour qu'il passe en permanence dans la boucle de pause ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/04/2007, 16h22
  2. Faire apparaitre une fênetre sous l'appuie d'une touche
    Par EssaiEncore dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 16h21
  3. Réponses: 3
    Dernier message: 24/01/2005, 11h57
  4. Réponses: 10
    Dernier message: 18/08/2004, 09h44
  5. Simuler l'appui sur une touche, au niveau système
    Par debutant java dans le forum AWT/SWING
    Réponses: 5
    Dernier message: 13/08/2004, 12h51

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