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 :

Activation - désactivation des macros


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Points : 70
    Points
    70
    Par défaut Activation - désactivation des macros
    Bonjour à tous

    J'espère que mes explications seront claires et que quelqu'un pourra m'aider.

    J'ai un classeur Excel au format modèle (extention .xlt) que j'utilise comme un formulaire.

    L'utilisateur rempli le formulaire et le sauve, du nom qu'il veut, avec l'extention xls.

    Jusque là pas de problèmes, mes macros s'exécutent sans problème, tout est normal.

    Je voudrais que les macros ne s'éxécutent pas lorsque le classeur porte l'extention xls.

    Elle doivent s'exécuter UNIQUEMENT lorsque l'extention est xlt.

    Mon problème est comment reconnaitre le classeur xls en n'indiquant que son extention, l'utilisateur donnant le nom qu'il veut à son classeur.


    Pour moi il faudrait tester si le classeur est xlt ou xls (mais comment) dans

    ThisWorkBook

    Private Sub Workbook_Open()

    avec un If testant l'ActiveWorkbook

    Application.EnableEvents = True quand le classeur est xlt et

    Application.EnableEvents = False quand le classeur est xls.

    Un grand merci d'avance à tous.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if activeworkbook.name = "*" & ".xlt" then
    Application.EnableEvents = True
    else
    Application.EnableEvents = false
    end if

  3. #3
    Membre régulier
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Points : 70
    Points
    70
    Par défaut
    Merci pour ta réponse.

    J'ai placé ta macro dans Private Sub Workbook_Open().

    Le code fonctionne mais il y a un petit mais . . . Explications !

    Les macros qui sont dans Private Sub Workbook_Open() fonctionnent lorsque j'ouvre mon modèle xlt. Mais les autres macros du style Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ne fonctionnent pas.

    Pourtant le classeur n'a pas encore été sauvé et par conséquent ne porte pas l'extention xls.

    Je voudrais que les macros puissent s'exécuter durant la création du formulaire et qu'elles ne s'exécutent pas lorsque l'on reprend le classeur sauvé par l'extention xls.

    J'ai essayé d'inversé la macro en mettant une extention xls. J'ai également essayé avec un nom de classeur xls identique au modèle xlt. J'ai pas trouvé de soluce.

    C'est sûrement tout bête . . .

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    l'erreur me parait être là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if activeworkbook.name = "*" & ".xlt" then
    = veut dire égal et il n'y aura jamais de classeur nommé *.xlt !
    C'est Like qu'il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if activeworkbook.name Like "*" & ".xlt" then
    ou encore (on peut également) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if right(activeworkbook.name,4) =  ".xlt" then
    EDIT : je voudrais maintenant savoir ce que tu as prévu de faire pour empêcher l'utilisateur (après avoir renommé et sauvegardé) d'aller modifier l'extension depuis l'explorateur (voire d'utiliser la barre d'outils de Excel pour le faire).

    Il y a sans aucun doute moins "innocent" à faire ...

  5. #5
    Membre régulier
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Points : 70
    Points
    70
    Par défaut
    Merci de ta réponse, je vais esssayer les nouveaux codes ! .

    Je ferai un retour dès que j'aurais fait les tests.

    Effectivement rien ne peut empêcher un utilisateur de renommer les fichier.

    Petite précision, mes macros qui doivent s'activer dans le fichiers xlt sont des macros qui testent le remplissage des cellules et qui envoye un message "au cas ou" et des macros pour l'enregistrement et de l'impression.

    Je pense que lorsque l'on utilise un modèle au format xlt, le formulaire (classeur) que l'on rempli n'est plus considérer comme xlt et je suppose que c'est la raison pour laquelle les macros en dehors de Private Sub Workbook_Open() ne fonctionnent pas.

    Je me suis apperçu que ta macro était gardée en mémoire dan une sorte de buffer et qui empèche l'exécution des toutes autres macros si j'ouvre un autre classeur. Le problème se résout si je ferme Excel et que je le réouvre.

    [EDIT]
    @ ucfoutu

    J'ai tester tes 2 propositions et le problème reste entier car le résultat est le même qu'avec ta soluce d'hier.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2008, 17h34
  2. Ouverture de fichier et désactivation des macros
    Par Aethis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/07/2007, 11h47
  3. Activation automatique des macros excels
    Par Rgent dans le forum Excel
    Réponses: 2
    Dernier message: 27/06/2007, 15h54
  4. Réponses: 21
    Dernier message: 31/01/2006, 16h39
  5. Activer / désactiver des périphériques
    Par adage2000 dans le forum MFC
    Réponses: 3
    Dernier message: 28/04/2005, 16h51

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