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 :

Savoir si bloc note est ouvert


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut Savoir si bloc note est ouvert
    Bonjour,

    J'ai un code qui me permet de créer ou d'ouvrir un bloc note par l'utilisateur que voici:

    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
    33
    34
    35
    36
    37
    Function ExistenceFichier(sFichier As String) As Boolean
      ExistenceFichier = Dir(sFichier) <> ""
    End Function
     
     
    Private Sub NoTe_Click()
    Dim FichierTXT As String
    Dim E As Date
    FichierTXT = CheminSalarie & "\NOTES-" & MeNu.NoM & ".txt" 'à modifier
     E = Now
        If ExistenceFichier(FichierTXT) Then
     
            '  si il existe
     
            Open FichierTXT For Append As 1
     
            Print #1, "################################################################"
            Print #1, "le " & E
            Print #1, "Remarque:"
            Close
     
     
     
        Else
            Open FichierTXT For Output As 1
            Print #1,
            Close
     
        End If
     
                With CreateObject("WScript.Shell")
                      .Run ("Notepad.exe " & FichierTXT), vbNormalFocus
                     End With
     
     
     
    End Sub
    Il fonctionne très bien, mais le souci est lorsque l'utilisateur clique sur le bouton pour accéder au bloc note, et que celui-ci est déja ouvert, il en ouvre un autre du même nom alors qu'il faudrait qu'il réutilise celui qui est déja ouvert!

    Alors ma question peut-on insérer un code qui demande si le bloc note est déjà ouvert auquel cas il le rend actif?

    merci à vous

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Plusieurs façons de faire...

    Tu peux utiliser cette fonction par exemple pour tester l’existence avant avant d'ouvrir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
                     ByVal lpClassName As String, _
                     ByVal lpWindowName As String) As Long

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Merci EngueEngue, mais comment tu veut que je la place et surtout, comment rendre le bloc note actif si il est déjà ouvert?

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    C'est une fonction qui te permet de savoir si une fenêtre est ouverte... si elle te renvoi le handle de la fenêtre ou 0.

    Il suffit de tester donc avec un if
    Nous allons faire un truc de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        hWnd = FindWindow ("NotePAD", "")
        if (hWnd = 0) then
    'toncode
        else
    enablewindow(hWnd,"")
    avec la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Declare Function EnableWindow Lib "user32" ( _
                     ByVal hWnd As Long, _
                     ByVal fEnable As Long) As Long

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    alors ds mon module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
                     ByVal lpClassName As String, _
                     ByVal lpWindowName As String) As Long
     
    Declare Function EnableWindow Lib "user32" ( _
                     ByVal hWnd As Long, _
                     ByVal fEnable As Long) As Long
    et aussi dans le 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub test4()
    Dim FichierTXT As String
    Dim E As Date
    Dim LigneCourante
    FichierTXT = CheminSalarie & "\NOTES-" & MeNu.NoM & ".txt" 'à modifier
     E = Now
        If ExistenceFichier(FichierTXT) Then
     
            '  si il existe
     
            Open FichierTXT For Append As 1
            Print #1,
            Print #1,
            Print #1,
            Print #1, "################################################################"
            Print #1, "le " & E
            Print #1, "Remarque:"
            Close
     
     
     
        Else
            Open FichierTXT For Output As 1
            Print #1,
            Close
     
        End If
     
         hWnd = FindWindow(FichierTXT, "")
        If (hWnd = 0) Then
    'toncode
                With CreateObject("WScript.Shell")
                      .Run ("Notepad.exe " & FichierTXT), vbNormalFocus
                     End With
     
        Else
       EnableWindow(hWnd, "")
     
     End If
    End Sub
    la je plante!!

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Ta fenêtre s'appelle CheminSalarie & "\NOTES-" & MeNu.NoM & ".txt" ?

    Chez moi quand j'ouvre Notepad mes fenêtres s'appellent plutôt..

    MeNu.NoM & " - Notepad"

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

Discussions similaires

  1. [VB]Savoir si un fichier est ouvert ou non
    Par voileux dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2006, 16h01
  2. [Swing] comment savoir si une fenetre est ouverte ?
    Par uraxyd dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/12/2005, 11h55
  3. savoir si un fichier est ouvert
    Par niclalex dans le forum Access
    Réponses: 2
    Dernier message: 12/10/2005, 19h19
  4. [Excel] comment savoir si une feuille est ouverte ?
    Par scully2501 dans le forum Access
    Réponses: 11
    Dernier message: 07/10/2005, 15h02
  5. Unix - Comment savoir si un fichier est ouvert
    Par freddyboy dans le forum C
    Réponses: 7
    Dernier message: 06/10/2004, 15h53

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