+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  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 084
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 13 084
    Points : 23 983
    Points
    23 983

    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
    Responsable Visual Basic

    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    septembre 2002
    Messages
    3 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

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

    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
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

    MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
    iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...

  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 613
    Points
    18 613

    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 :
    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 :
    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 084
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 13 084
    Points : 23 983
    Points
    23 983

    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 :
    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 :
    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 ...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •