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 :

Documents(MonDoc).Activate - comment faire?


Sujet :

VBA Word

  1. #1
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut Documents(MonDoc).Activate - comment faire?
    Bonjour tous!

    Voici une macro que j'ai créée et que je souhaite insérer dans plusieurs document. Je souhaite que ma macro fasse exactement comme quand on ouvre un .dot avec Fichier/Nouveau, c'est-à-dire, ouvrir le modèle et en faire une copie alors on reste à l'écran avec seulement un "Document2.doc" à l'écran.

    Mais voilà, ma macro fonctionne juste à 95%. Elle m'ouvre bien un "Document2.doc" à l'écran, elle referme mon "Modelexyz.doc" sans sauvegarder mais si j'avais plusieurs documents déjà d'ouvert à l'écran, elle ne revient pas à "Document2.doc" mais pluôt à "Document1.doc" par exemple.

    Comment est-ce que je dis à la macro, reviens à mon document que je viens juste de créer?

    Merci de votre aide!
    Souriane

    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
    Private Sub Document_Open()
     
    Dim docModele As Document
    Set docModele = ActiveDocument
     
    If ActiveDocument.ReadOnly = True Then
        ActiveDocument.ReadOnlyRecommended = False
     
    'Créé une copie du document qui vient d'être ouvert
        Application.Documents.Add ActiveDocument.FullName
     
    Dim docCopie As String
    docCopie = ActiveDocument.FullName
     
    'Ferme le Modèle sans sauvegarder
    docModele.Close wdDoNotSaveChanges
     
    '****************Ça fonctionne pas cette méthode :
    Documents(docCopie).Activate
     
    End If
     
    End Sub
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Je ne sais pas si cela peut t'aider beaucoup mais tu es sur quelle version de Word.
    La macro fonctionne chez moi lorsque je la lance.
    En revanche si le document que j'essaye d'ouvrir est exécuté en mode compatibilité, elle se lance mais j'ai le nom du fichier qui est conservé.

    Ceci dit il revient toujours sur le dernier document ouvert.

    Cordialement,
    Christophe
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Je travaille (encore!) avec Word 2003.
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Est-ce que tu peux rajouter deux lignes remettant à zéro tes variables docmodele et doccopie à la fin juste avant end sub.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set docModele = Nothing
    set doccopie = Nothing
    Si ton code plante, alors c'est que doccopie n'est pas correctement réinitialisé.
    Le End if se trouve bien après la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Documents(docCopie).Activate
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut Souriane,

    Le problème vient du fait que le document qui appelle pour l 'activation est refermé et de ce fait, l'ordre des documents change.

    J'ai par acquis de conscience tenté de rendre actif un autre document qui était ouvert et ça ne fonctionne pas.
    On peut activer un document contenu dans la collection des documents ouverts si cette collection ne change pas.

    J'ai essayé de faire un appel à un procédure externe, mais sans résultat, dès que l'on modifie la collection, l'ordre change.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Souriane,

    Comme le dit Heureux-Oli l'ordre des documents change dès qu'on renferme un (et ce depuis le début de Word multi-document). La seule solution qui fonctionne toujours est de ruser avec le nom (l'index ne peut ici te servir puisqu'il est modifié) et d'utiliser le nom de la fenêtre. En fait on n'utilise pas le nom mais seulement son début pour éviter des problèmes liés à des ouvertures multiples d'un même document (ou dans ton cas pour Document1, Document2...). Cette technique marche depuis longtemps (mais elle n'est pas très jolie mais elle marche à tous les coups ) et elle est encore plus efficace avec Word 2007 (à cause du suffixe docx au lieu de doc) et de l'ajout des textes ("Mode de compatibilité") ou ("Lecture seule").

    Si tu en as besoin, n'hésite pas mais sache qu'elle ne peut pas être efficace car elle a besoin de parcourir la liste des fenêtres actives avant la fermeture d'une fenêtre pour la comparer à la nouvelle (et tout ça pour retrouver nos petites fenêtres ). Envoie ta macro pour qu'on la complète.

    @+

  7. #7
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Merci de votre aide jusqu'ici!

    J'ai travaillé extrêmement fort avant de vous relancer. J'ai cherché pendant des heures (je n'exagère pas!).

    Sepia, j'ai cherché sur ta suggestion entre autres sur "Window Caption" entre autre mais je n'arrive à rien!.

    Je bloque toujours avec la même macro. Pouvez-vous m'aider?

    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
    Private Sub Document_Open()
     
    Dim docModele As Document
    Set docModele = ActiveDocument
     
    If ActiveDocument.ReadOnly = True Then
        ActiveDocument.ReadOnlyRecommended = False
     
    'Créé une copie du document qui vient d'être ouvert
        Application.Documents.Add ActiveDocument.FullName
     
    Dim docCopie As String
    docCopie = ActiveDocument.FullName
     
    'Ferme le Modèle sans sauvegarder
    docModele.Close wdDoNotSaveChanges
     
    '****************Ça fonctionne pas cette méthode :
    Documents(docCopie).Activate
     
    End If
     
    End Sub
    Merci!
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut Souriane,

    Je ne vois pas d'issue.
    J'avais pensé fermer tous les documents pour ensuite les réouvrir et le bon doc en dernier.
    Mais si un document n'est pas sauvegardé, on se retrouve avec un nouveau problème.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 55
    Points
    55
    Par défaut
    Bonjour Souriane,

    Et comme ça est-ce que cela fonctionne?
    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
    Public Sub Document_Open()
     
    Dim docModele As Document
    Set docModele = ActiveDocument
     
    If ActiveDocument.ReadOnly = True Then
        ActiveDocument.ReadOnlyRecommended = False
     
    'Créé une copie du document qui vient d'être ouvert
     
     
    Dim docCopie As Document
    Set docCopie = Application.Documents.Add(ActiveDocument.FullName)
     
    'Ferme le Modèle sans sauvegarder
    docModele.Close wdDoNotSaveChanges
     
    Documents(docCopie).Activate
     
    End If
    Chez moi c'est ok, mais je suis sous Word 2010 donc...

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 55
    Points
    55
    Par défaut
    ou bien enregistrer le document copie que tu viens de créer pour lui donner un nom, quitte à le mettre en lecture seule pour obliger l'utilisateur à le renommer s'il veut l'enregistrer...
    Dans ce cas, Word pourra le réactiver grâce à son nom "fixe"

  11. #11
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    J'ai travaillé fort sur celle-ci et j'en suis très fière! (surtout que mon idol Heureux-Oli n'y voyait pas de solution!!!)

    Ce que dewcaro ne fonctionnait pas ici, ni sur Word2003 ni sur Word2007.

    Pour ceux qui consulterait ce post dans le futur, voici ce que j'ai trouvé avec plusieurs essais-erreurs et qui est tout simple :

    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
    Public Sub Document_Open()
    'Macro pour ouvrir un document ".doc" ou ".docm" de la même qu'un ".dot/m" dans fichier nouveau.
    'Le document s'ouvre, une copie est créée et l'original et refermé.
     
    'Si le document est en lecture seule, c'est que cette macro s'applique
    If ActiveDocument.ReadOnly = True Then
        ActiveDocument.ReadOnlyRecommended = False
     
    'Créé une copie du document qui vient d'être ouvert
     Application.Documents.Add ActiveDocument.FullName
     
    'Ferme le document original
    Documents(2).Activate
        ActiveDocument.Close wdDoNotSaveChanges
     
    'Ramène le focus sur la copie du document
    Documents(1).Activate
    End If
    End Sub


    P.S. Merci à tous de votre aide, vous avez pas idée à quel point ça m'est utile dans mon travail! Sans vous, je ne serais probablement pas rendue où j'en suis rendue aujourd'hui!
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/09/2006, 23h25
  2. Réponses: 4
    Dernier message: 07/07/2006, 19h17
  3. [C#] ProgressBar active ? Comment faire
    Par aeled dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/04/2006, 15h50
  4. Comment faire 1 documentation technique??
    Par fchafia dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2006, 17h15
  5. Réponses: 1
    Dernier message: 21/01/2006, 16h31

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