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 :

Utilisation de l'api windows pour fermer un classeur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Par défaut Utilisation de l'api windows pour fermer un classeur Excel
    Bonjour,

    Voici le sujet qui me préoccupe. J'ai un classeur Excel qui traite des données récupéré directement via un autre classeur est généré par un logiciel de communication modbus.
    Ce classeur généré n'est pas enregistré et je ne souhaite pas l'enregistrer. Je suis donc passé par l'api de windows pour le fermer. J'arrive à donner l'ordre de fermer le fichier ,par contre celui-ci me demande de fermer en sauvegardant ou pas ( normal !! ). Et la je n'arrive pas à gérer via l'api, la commande "TAB" et "Entrer" pour passer le curseur sur "NE PAS SAUVEGARDER" et valider. Pourtant ces commandes fonctionnent sur la page excel mais du coup, pas sur la box de validation de la sauvegarde.

    Je m'en remet donc à vous pour résoudre ce soucis.

    Déclaration des ddl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare Function cherche_fenetre Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
     
    Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Public Const VK_RETURN = &H9
    Public Const WM_KEYDOWN = &H100
    Sub pour fermer le classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ferme_fenetre()
     
        nom_fenetre = "Classeur1 - Excel"
        PostMessage cherche_fenetre(vbNullString, nom_fenetre), 16, 0, 0
     
    End Sub
    Sub pour valider ou non l'enregistrement.

    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
    Sub nePasEnregistrerClasseur1()
     
    'envoyer un message sur notepad
     
    nom_fenetre = "Classeur1 - Excel"
    notepad = FindWindowA(vbNullString, nom_fenetre)
    SetForegroundWindow (notepad)
    'notepad = GetWindow(notepad, 5) 'se placer dans la fenetre du texte
    'txt = "BONJOUR TOUT LE MONDE"
     
    'For num = 1 To Len(txt)
    PostMessage notepad, VK_RETURN, 0, 0
    'Next
    'PostMessage notepad, WM_KEYDOWN, VK_RETURN, 0 'enter
    'SetForegroundWindow (notepad)
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    appliation.quit
    avec le dispayalerts a false
    en fin de macro
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Par défaut
    Oui mais ceci va fermer le fichier qui contient la macro. Et moi je veux fermer un autre fichier excel non enregistré sur le pc.

    Du coup ça ne fonctionne pas. C'est pour ça que je voulais utiliser les API.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    un truc du genre alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    application.displayalerts=false
    for each Wk in applcation.workbooks
    if Wk.name="tartanpion.xls" then Wk.close
    next
    application.displayalerts=true
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Par défaut
    Ok, merci, je testerai lorsque je reviendrai sur le sujet.

Discussions similaires

  1. [Débutant] Utilisation de l'API Windows pour personnaliser des contrôles
    Par noftal dans le forum VB.NET
    Réponses: 10
    Dernier message: 12/11/2013, 23h21
  2. API Windows pour manipulation d'images avec transparence
    Par Grosbenji dans le forum Windows
    Réponses: 2
    Dernier message: 28/08/2007, 11h51
  3. Une FAQ API Windows pour C
    Par O( N ) dans le forum C
    Réponses: 2
    Dernier message: 27/11/2006, 21h30
  4. api/windows pour extraire le nom de repertoire
    Par youssefinfo00 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/09/2006, 16h03
  5. [DOM] Utilisation de l'API DOM pour créer du HTML sous IE
    Par pedouille dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2006, 14h48

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