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

VB.NET Discussion :

Désactiver "ThisWorkBook" ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    dessinateur projeteur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut Désactiver "ThisWorkBook" ?
    Bonjour, bonsoir toutes et tous,
    fort des conseils avisés de Sankasssss et Pol63, que je remercie encore, je me suis lancé, plus raisonnablement, dans vb.Net, avec Visual Studio Express 2010.
    Avec l'aide de P. Lasserre, de la FAQ du site et de Google, j'ai comencé à transformer mon application Excel VBA en vb.net, et ça fonctionne pas mal du tout ! Sauf que, bien sûr, je me trouve face à quelques "murs" ..., qui n'en sont sûrement pas pour bon nombre d'entre vous.
    The first (je ferai des messages séparés pour la clarté) :
    pour une question de compatibilité avec l'appli que j'ai créé en VBA il y a déjà quelques années, je pilote Excel depuis vb.net. Jusque là, ça le fait pas trop mal, sauf que, l'appli que j'ai créé en VBA, elle démarre dès l'ouverture d'Excel. J'ai mis des trucs dans ThisWorkbook et bien sûr quand j'ouvre Excel avec vb.net, çà se met en route et patati et patata.
    Existe-t-il une solution pour désactiver ThisWorbook à l'ouverture ?
    J'ai bien trouvé sur le tuto de J.M. Rabilloud une interception d'évènement avec Private WithEvents, mais je n'ai rien réussi a intercepter concernant ce fameux ThisWorkBook ... Donc, simplement, est-ce possible ?
    Merci par avance

    Pieche

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    si je comprend bien, tes macros se lancent au démarrage de ton fichier Excel et tu voudrais éviter ça?

    Est-il nécessaire de les lancer à l'ouverture du fichier excel?
    Sinon tu pose une boite de dialogue au début de ta macro qui te demande si tu veux exécuter les macros.
    Si oui , tu ne fais rien.
    Sinon Exit Sub

  3. #3
    Membre averti
    Homme Profil pro
    dessinateur projeteur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut
    Bonjour Hunteshiva, et les autres d'ailleurs,
    je crois que je n'ai pas été très clair
    En fait, j'ai créé une petite application pour le bureau il y a quelques années, en VBA Excel. Le fichier ouvert est un .xlt (modèle) et est sauvegardé en .xls pour conserver les données. Donc depuis ce temps, ça représente un nombre certains de fichiers. Et, comme j'ai voulu faire en grand, à l'ouverture du fichier des macros se déclenchent avec animation, ... Je veux maintenant passer cette application en vb.net, en pilotant Excel (ça je dois y arriver), et pouvoir modifier certains des fichiers préalablement enregistrés, mais j'aimerai bien que l'animation et les questions posées à l'ouverture d'Excel ne soient plus que celles que je crées en vb.net, pas celles de l'appli VBA.
    Mais intercepter ThisWorkbook, est-ce possible ???

    Merci pour les infos

    Pieche

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ré-écrire tout le vba contenu dans thisworkbook en .net et supprimer le vba contenu dans thisworkbook ?

  5. #5
    Membre averti
    Homme Profil pro
    dessinateur projeteur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut
    Je reviens donc à la charge après quelques essais infructueux.
    Je tente d'intercepter l'ouverture d'un classeur Excel ,pour ne pas arriver sur les anciennes boites de dialogue développées en VBA mais sur celle que j'ai créé en vb.Net, et là ça veut pô ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private WithEvents tableur As New Excel.Application
     
        Public Sub stopMacro(truc As System.Object, bidule As Excel.Application) Handles tableur.WorkbookOpen
     
        End Sub
    WorkbookOpen est souligné avec le message laconique : La methode Public ... ne peut pas gérer l'évènement car sa signature n'est pas compatible, alors que WorkbookOpen est proposé par l'IntelliSense. Là je suis paumé, si l'une ou l'un d'entre vous peut me tendre une perche.

    Par avance merci

    Pieche

  6. #6
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    la ou je ne comprend rien moi,
    c'est pourquoi intercepter le lancement du fichier Excel?
    l'idée est vouée à l’échec je pense

    Pourquoi ne pas tout reprendre en vb.net...
    Tu veux t’embêter a faire une partie en VBA et les boite des dialogue en vb.net?

  7. #7
    Membre averti
    Homme Profil pro
    dessinateur projeteur
    Inscrit en
    Janvier 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 12
    Par défaut Attention, tartine ...
    Bonjour, bonjour,
    bon, d'accord, je suis pas très clair, je vais essayé de l'être. Pas facile vu mon grand âge ...
    Il y a quelques années, j'ai développé pour le bureau (je ne suis pas informaticien, juste dessinateur) une "petite" application en VBA sous Excel. Je n'y connaissais pas grand chose et ai découvert, en fouinant sur le net (Daniel Josserand, ...) la puissance de ces outils. Je me suis donc lancé dans une application plus conséquente que prévue. J'ai ramé, attaquer la falaise, posé des questions (souvent un peu neuneu ...). Enfin, bref, j'ai fini par pondre quelque chose de cohérent. Un fichier Excel, avec une belle animation à l'ouverture et un tas de fioritures, sûrement inutiles mais ... et qui permet de stocker des données modifiables au cas ou. Mais chaque fichier créé est stocké avec le code VBA, donc à l'ouverture tout ce qui est dans "ThisWorkbook" se déclenche ... Tout ça sous Office 2000. Nous sommes passés à Office 2003, ça marchait encore. Maintenant, avec les "nouvelles" versions d'Office, il faudrait que je reprenne le code. Tant qu'à faire, autant développer en vb.net. La maintenance sera plus simple. Et puisque je vais tout faire à partir des Forms et DialogBox de vb.net, je ne veux surtout pas qu'à l'ouverture d'un fichier à modifier, donc stocké avec son code VBA, il me refasse sa moulinette et interfère sur mon code vb.net.
    Il n'est donc en aucun cas question de faire moitié moitié VBA/vb.net.
    Je pense que je vais m'orienter pour la solution d'ouvrir mes fichiers Excel déjà créés 1 par 1 et supprimer ce qui est dans "ThisWorkbook".
    J'espère avoir été plus clair.

    Bonne journée

    Pieche

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