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

VBA Word Discussion :

VBA Word / Excel


Sujet :

VBA Word

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut VBA Word / Excel
    bonjour a tous

    voici mon pbl

    J'ai crée un model de document sous word avec une macro...
    ma macro fonctionne au poil seulement lorsque j'enregistre le document en ".doc" et que par la suite je rouvre mon doc dernierement enregistré il m'execute tout de meme ma macro

    Comment pourrai-je faire pour que la macro ne s'execute que sur le modele de document

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu as plusieurs solutions...
    Par exemple en jouant sur l'extention du document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ExecuteMacroSelonExt()
      Select Case Right(ThisDocument.Name, 3)
        Case "dot"
        Case Else
          ' ON EXECUTE LA MACRO
      End Select
    End Sub
    Par exemple en jouant sur le nom du document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ExecuteMacroSelonNom()
      Select Case Right(ThisDocument.Name, 3)
        Case "Le nom de mom modèle.dot"
        Case Else
          ' ON EXECUTE LA MACRO
      End Select
    End Sub
    Argy

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    J'ai essayé ton code mais le probleme est que quelque soit le nom de mon fichier il execute la macro

    et lorsk je regarde kel valeur prend thisdocument.name et bien surprise c toujours le nom de mon model qui pass alors que mon fichier est un ".doc"

    quel est le probleme ?? :'(:'(:'(

    merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quelques lignes de code nous aiderait à mieux comprendre le pb.

    Merci de ton aide...

    A tout'

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Document_Close()
     
    Select Case Right(ThisDocument.Name, 3)
        Case "modij.dot"
        Case Else
          DonnéesWordVersExcel  'Execute la macro
      End Select
     
    End Sub

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Joue alors sur la propriété Saved:
    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
     
    Option Explicit
     
    Private Sub Document_Open()
      If ThisDocument.Saved Then
        'C'est automatiquement un nouveau DOC donc on exécute pas
      Else
        If Right(ThisDocument.Name, 3) = "dot" Then
          'C'est le modèle donc on exécute...
          DonnéesWordVersExcel
        End If
      End If
    End Sub
     
    Private Sub DonnéesWordVersExcel()
      MsgBox "Test DonnéesWordVersExcel"
    End Sub
    Argy

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    je dois avoir la poisse lol

    ton code semble marcher mais il y a un autre pbl

    je m'explique

    lorsque je double clique sur le modele de document il m'ouvre un "document1.doc"

    il faudrai que la macro s'execute sur le "document1.doc" vu qu'apparement c toujours sous ce nom la que ca s'ouvre kelksoit le nombre de fois ouvert...

    Cependant j'ai constaté qu'il continu de garder comme nom de fichier "modij.dot"

    ya-t-il une solution ?

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par forsay1
    lorsque je double clique sur le modele de document il m'ouvre un "document1.doc"
    Non, c'est faux, il t'ouvre un Document1, sans extension
    Citation Envoyé par forsay1
    il faudrai que la macro s'execute sur le "document1.doc" vu qu'apparement c toujours sous ce nom la que ca s'ouvre kelksoit le nombre de fois ouvert...
    Non car si je l'utilise 2 x alors qu'il est encore ouvert, j'aurais un Document2 et ainsi de suite...
    Le but est d'identifier si tu es sur le modèle ou pas, là, je t'ai proposé l'événement Open(), tu dois aussi exploiter l'événement New()
    Argy

    P.S. Langage SMS à proscrire sur ce forum

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    ok je suis d'accord mais comment je fais si je veux que la macro s'execute a la fermeture du document...
    l'evenement New ne me sert a rien dans ce cas la non ?

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Après la bagarre, toujours... mais je peux pas m'empêcher
    Si tu fais ça, tu as un pb, c'est clair
    Select Case Right(ThisDocument.Name, 3)
    Case "modij.dot"
    Case Else
    Par contre, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Case Right(ThisDocument.Name, 3) 
    Case "dot" 
    Case Else
    ça aurait des chances de marcher...

    Juste en passant...

    A+

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    J'ai essayé les deux cas deja mais c'est toujours pareil



    je crois que je vais pleurer loool

    tout le reste de mon code fonctionne sauf CA et ca commence a m'enerver lool

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu sais que, tant qu'un document n'a pas été enregistré il n'a pas l'extension "doc" ni de point ?
    Enregistre-le si tel n'est pas le cas ou essaie de le tester avec "Instr(NomFich,"document") <> 0 and instr(NomFich,".") = 0 pour identifier le .doc

    A tout hasard (je n'ai pas pris le temps de lire ce qu'a mis Argy qui est certainement une autre et meilleure manière de traiter le pb).

    A+

  13. #13
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    tu utilise la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Document_Close() 
     
    Select Case Right(ThisDocument.Name, 3) 
        Case "modij.dot" 
        Case Else 
          DonnéesWordVersExcel  'Execute la macro 
      End Select 
     
    End Sub
    mais a tu essayer d'utilise dans ta macro un sub document_save()
    pour lancer ta macro seulement a la sauvegarde du fichier?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    Pour Calimero

    Ben je ne veu pas que ma macro s'execute dans l'evenement save...
    je veu que cela se passe dans le document close

  15. #15
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    ce qui m'epate (et pour avoir utiliser la methode document close a plusieur reprise) ce que ta macro ce lance au demarrage de word et pas seulement a la fermeture. en toute logique la macro ne se lance au demerrage que si tu a un document_open.or ce n'est apparement pas le cas.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    ben non ma macro ne demarre pas a l'ouverture de word
    elle se lance quand je ferme mon document c tout...

  17. #17
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par forsay1
    si je veux que la macro s'execute a la fermeture du document
    Tu nous le dit seulement maintenant ???
    L'événement Document_Close existe...*

    Argy

  18. #18
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    ok pardon je n'avais pas bien compris le probleme.
    dans ce cas la essaye d'ajouter un composant(meme invisible si tu ve) sur ta feuille au moment de la fermeture. ensuite tu fait une boucle pour verifier la presence de ce composant sur la feuille. et si la feuille contient le composant tu desactive ta macro si il n'est pas present tu lance ta macro.
    pour info j'ai utiliser cette methode sur microsoft Visio et ça fonctionner parfaitement donc je pense que c'est realisable sur word.

    bon codage, et a plus.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    et comment je fai pour mettre ce truc invisible ?

    et si ce truc invisible se trouve sur le document enregistré comment je fais lol ?

    je sais je dois etre bien chiant avec mes problemes lool

  20. #20
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    tu creer une forme quelquonque (exemple un carre) avec une propriete invisible. tu applique cette forme avec ta macro la premiere fois. et tu inclu dans ta macro une boucle qui recherche les formes presente dans la feuille, dans cette boucle tu recherche le nom de ta forme et si tu la trouve tu sort de la subroutine.

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

Discussions similaires

  1. VBA WORD / Excel
    Par forsay1 dans le forum VBA Word
    Réponses: 2
    Dernier message: 11/01/2006, 16h58
  2. VBA Word / Excel
    Par forsay1 dans le forum VBA Word
    Réponses: 3
    Dernier message: 29/12/2005, 16h48
  3. VBA Word / Excel
    Par forsay1 dans le forum VBA Word
    Réponses: 6
    Dernier message: 28/12/2005, 15h39
  4. VBA WORD / Excel
    Par forsay1 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/12/2005, 14h14
  5. VBA WORD / EXCEL
    Par forsay1 dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/12/2005, 09h58

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