windows().activate
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

windows().activate



  1. #1
    bdragon

    windows().activate


    ------

    Bonjour,

    Me voici avec un nouveau problème :

    Si j'écris windows(monfichier).activate et que monfichier est ouvert, tout ce passe bien.
    Mais je voudrais que si monfichier n'est pas ouvert, plutôt que de planter, ma macro envoie un message d'erreur.

    Je vous remercie d'avance
    Guy

    -----

  2. #2
    Pauldair

    Re : windows().activate

    Bonjour,

    Avant de lancer windows(monfichier).activate, il faut que tu testes si le fichier est ouvert.

    Si ce n'est pas le cas, l'ouvrir, puis lancer alors windows(monfichier).activate.

    Cordialement.

  3. #3
    bdragon

    Re : windows().activate

    Merci,

    En fait, je ne veux pas l'ouvrir s'il n'est pas ouvert.

    Donc, tester si le fichier est ouvert, s'il ne l'est pas, fin de la macro.
    Je pense que c'est ça?
    Mais je ne sais pas l'écrire en vba

    je débute avec les macros

    cordialement
    Guy

  4. #4
    Pauldair

    Re : windows().activate

    Tu trouveras ton bonheur ici:

    Detect whether Excel workbook is already open (using VBA)

    La première réponse t'indique comment créer la fonction IsWorkBookOpen() qui teste si le fichier est ouvert. La fonction retourne True si c'est le cas et False si ce n'est pas le cas

  5. A voir en vidéo sur Futura
  6. #5
    bdragon

    Re : windows().activate

    bé j'ai pas réussi.

    Je voudrais simplement mettre au début de ma macro :

    Si le fichier c:\dossier\nomdufichier.xls est ouvert alors on continue la macro, sinon, on stop la macro.

    Merci
    Guy

  7. #6
    Stan_94

    Re : windows().activate

    Bonjour,
    place un "on error resume next" avant la commande d'activation.
    (ou un on error goto xxxx si tu veux intercepter l'erreur)

  8. #7
    Pauldair

    Re : windows().activate

    Si tu suis le lien que j'ai donné plus haut, tu trouves le srcipt suivant:

    Code:
    Option Explicit
    
    Sub Sample()
        Dim Ret
    
        Ret = IsWorkBookOpen("C:\myWork.xlsx")
    
        If Ret = True Then
            MsgBox "File is open"
        Else
            MsgBox "File is Closed"
        End If
    End Sub
    
    Function IsWorkBookOpen(FileName As String)
        Dim ff As Long, ErrNo As Long
    
        On Error Resume Next
        ff = FreeFile()
        Open FileName For Input Lock Read As #ff
        Close ff
        ErrNo = Err
        On Error GoTo 0
    
        Select Case ErrNo
        Case 0:    IsWorkBookOpen = False
        Case 70:   IsWorkBookOpen = True
        Case Else: Error ErrNo
        End Select
    End Function
    Après la ligne:

    Code:
     If Ret = True Then
    au lieu de:

    Code:
            MsgBox "File is open"
    Tu mets ce que doit faire ton programme si le fichier est ouvert.

    et après:

    Code:
     Else
    au lieu de:

    Code:
            MsgBox "File is Closed"
    Tu mets ce que doit faire ton programme si le fichier n'est pas ouvert.

    Ça ne me semble pas insurmontable, même pour un débutant.

  9. #8
    bdragon

    Re : windows().activate

    Mais c'est parfait !

    ça fonctionne nickel

    Merci beaucoup

    Problème résolu

    Guy

Discussions similaires

  1. Avast 2014 payant ou windows sécurity essentials pour windows xp sp3?
    Par Bdx50 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 3
    Dernier message: 05/02/2014, 07h21
  2. Réponses: 3
    Dernier message: 24/09/2010, 15h56
  3. Impossibilité de télécharger les mises à jour Windows pour Windows XP
    Par invite3750ca14 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 21/12/2006, 00h37