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 :

macro pour ouvrir un document protégé par un mot de passe


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Points : 58
    Points
    58
    Par défaut macro pour ouvrir un document protégé par un mot de passe
    Bonjour le Forum

    Le code ci-dessous se trouve dans un module d'une feuille Excel.
    Après différentes actions dans le classeur Excel, cette macro ouvre un document Word (lettre mailing).
    Pour des raisons de sécurité, je souhaite empêcher l'ouverture de "lettre mailing" si on utilise pas la macro, donc je lui ai affecté un mot de passe (mailing).
    Donc, quand je lance le code ci-dessous une boite de dialogue me demande de saisir le mot de passe.
    Je voudrai insérer une commande qui exécute cette saisie automatiquement.
    J'ai cherché un peu partout mais je n'ai rien trouvé.
    Si quelqu'un peut me dire quel commande et ou je dois l'insérer ce serait super
    Merci de votre aide
    Lenul
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    Sub Mailing()
    '
    ' Copie les valeurs de la feuille Extrait vers la feuille Add
    ' pour placer les données avant impression courrier personalisé
    ' bouton de comande sur feuille Extrait
     
        'copie raison sociale sur feuille Add
        Application.ScreenUpdating = False
        Sheets("Extrait").Range("a15").Copy Sheets("Add").Range("a5")
        'copie  adresse sur feuille Add
        Sheets("Extrait").Range("b15").Copy Sheets("Add").Range("a6")
        'copie code postal+ville sur feuille Add
        Sheets("Extrait").Range("c15,e15").Copy Sheets("Add").Range("a7")
        'copie titre+nom+prénom sur feuille Add
        deprotectfeuille
        Range("B11:K13").Select 'Pour défusioner les cellules de cette zone
        With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = True
        End With
        Selection.UnMerge
     
        Columns("F").Select 'insere une colonne pr passer de Mr à Monsieur etc...
        Selection.Insert Shift:=xlToRight
        Range("F15").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[1]="""","""",IF(RC[1]=""Mr."",""Monsieur"",IF(RC[1]=""Mme"",""Madame"",IF(RC[1]=""Melle"",""Mademoiselle""))))"
        Sheets("Extrait").Range("f15,h15:i15").Copy Sheets("Add").Range("a9")
        Sheets("Extrait").Select
        Columns("F").Select
        Selection.Delete Shift:=xlToLeft
     
        Range("B11:K13").Select ' pour refusionner les cellules de cette zone
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
     
        'copie la ligne sur feuille "Expédiés"
        Sheets("Extrait").Select
        Range("a15:n15").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Expédiés").Visible = True
        Sheets("Expédiés").Select
        Cells(65535, 1).End(xlUp)(2).Select
        ActiveSheet.Paste
        'suprime la ligne traitée
        Sheets("Extrait").Select
        Application.CutCopyMode = False
        Rows("15:15").Select
        Selection.Delete Shift:=xlUp
        Range("B11").Select
        protectfeuille
        Sheets("Add").Visible = True
        Sheets("Add").Select
     
        Dim wdApp As New Word.Application
        Dim wddoc As Word.document
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True
        Set wddoc = wdApp.documents.Open(Filename:="T:\Tableau devis SF\lettre mailing.doc")
        ActiveSheet.Range("a2:c9").Copy
        wdApp.Selection.pasteandformat wdformatplaintext
     
        wddoc.PrintOut ' impression de lettre mailing
     
        wddoc.Close True
        wdApp.Quit
        deprotectfeuille
        Range("A3:C9").Select 'sélectionne cette plage sur feuille Add
        Selection.ClearContents 'efface la sélection
        protectfeuille
        Sheets("Extrait").Select
     
        Set wddoc = Nothing
        Set wdApp = Nothing
        Application.ScreenUpdating = True
    End Sub

  2. #2
    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,

    Pour le mot de passe, il se transmet dans les arguments.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Documents.Open Filename:="",PasswordDocument:=""
    Par contre, j'ai remarqué une incohérence dans ton code.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim wdApp As New Word.Application
        Dim wddoc As Word.document
        Set wdApp = CreateObject("Word.Application")
    La ligne Set est en trop, dans ta déclaration tu crées déjà l'objet avec New.

    Petit réflexe à avoir, il est préférable de déclarer les variables en début de procédure, suivi des affectations et enfin du code.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ....
     
    Dim
    Dim
    ...
     
    Set
    Set
    ...
     
     
    Le code
     
    End Sub
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Bonsoir Heureux-oli

    Merci de ton aide et de tes judicieux conseils.

    Je test tout ça jeudi et je reviens te dire "quoi"

    J'espère que ton pseudo est vrai !!

    Lenul

  4. #4
    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
    Citation Envoyé par lenul78570 Voir le message

    J'espère que ton pseudo est vrai !!
    Rassure toi, il n'est absolument pas phonétique, on me l'a fait remarquer après que je l'aie choisi, mais comme je l'aime bien, je ne veux pas en changer.
    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 !

Discussions similaires

  1. [AC-2007] Ouvrir fichier XLS protégé par un mot de passe
    Par docleka dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/09/2012, 12h49
  2. Lien protégé par un mot de passe
    Par hubald dans le forum Langage
    Réponses: 11
    Dernier message: 05/12/2008, 18h22
  3. Réponses: 3
    Dernier message: 08/11/2008, 09h23
  4. Réponses: 8
    Dernier message: 12/11/2007, 12h04
  5. Formulaire protégé par un mot de passe
    Par SpyesX dans le forum Access
    Réponses: 10
    Dernier message: 13/03/2006, 18h02

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