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 :

code champ adresse fichier avec noms de répertoires tronqués


Sujet :

VBA Word

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut code champ adresse fichier avec noms de répertoires tronqués
    Bonjour à tout le monde.
    J'ajoute aisément, au pied de page de mes documents word, le chemin de provenance et le nom du fichier (Insertion/Champ/Filename et je coche ajouter chemin).
    Or, je voudrais savoir comment faire pour mettre seulement le chemin SANS le nom de fichier, et -encore plus difficile ! - TRONQUER le nom de chaque niveau de répertoire au deuxième caractère!
    Ca va, je ne suis pas trop exigeant
    Merci à quiconque peut m'aider!

    Je m'explique peut-être avec un exemple: si le fichier est:
    C:\05Lettres\03Casse-pieds\12Findenonrecevoir\lalettreconcernée.doc
    je voudrais qu'on ne voit (pour des raisons évidentes) que:
    C:\05\03\12\

    Merci!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 103
    Points : 58
    Points
    58
    Par défaut Solution en script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim Tabl() As String
    Dim Nom As String
     
    Tabl = Split(ActiveDocument.FullName, "\")
    Nom$ = ""
    If UBound(Tabl) >= 1 Then
        For I = 0 To UBound(Tabl) - 1
            Nom$ = Nom$ & Left(Tabl(I), 2) & "\"
        Next I
    End If
    Debug.Print ActiveDocument.FullName, Nom$
    End Sub
    C'est une solution en script pour mettre à jour par exemple une variable de doc et mettre dans le pied de page un champ vers cette variable.

    Bon courage

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut comment l'utiliser?
    Tout d'abord merci pour ta réponse.
    Malheureusement, je n'ai pas compris comment utiliser ta macro.
    J'ai collé le code dans l'éditeur VBA, j'ai lancé la macro, aucun effet.
    J'ai inséré le champ Filename dans le document et j'ai relancé la macro après, aucun effet.
    Dernière tentative en lançant la macro avec le champ sélectionné, aucun effet non plus...
    Pourrais-tu me guider par la main?
    (désolé, je programme assez en Excel, mais en Word je ne suis pas doué!)
    Merci encore.

  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
    Salut,

    Le code donné ne crée ni ne modifie un champ, c'est juste un exemple montrant comme à l'aide d'un code ne prendre que les deux première lettre de chaque niveau.

    Une solution serait d'injecter le résultat dans une variable et d'utiliser un champ pour afficher la variable.
    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 !

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Je comprends. Et je te remercie également pour cette approche très pédagogique qui évite les « plats cuisinés » pour privilégier l’apprentissage : je suis exactement dans cette démarche.
    Toutefois, même si j’ai quelques notions de programmation VBA en Excel, mon niveau en VBA Word est tel que je suis encore totalement perdu. Voici donc quelques questions que je me pose.

    1) Comment instituer un champ personnalisé à mettre dans le document ? Tout ce que j’ai pu trouver concerne uniquement le publipostage, ce qui n’est pas mon cas.
    2) Comment l’utiliser ensuite ? Est-ce que un truc du genre Insertion / Champ / Formule {=DOCPROPERTY mavariable} fonctionnerait ?

    Si je devais utiliser les concepts d’Excel, j’essayerais de faire plutôt une fonction avec ton code pour l’utiliser plus ou moins de la manière suivante : Insertion / Champ / Formule {=TAFONCTION(MAVARIABLE)}, où il faudrait que MAVARIABLE contienne FILENAME /p. Mais j’ai beau retourner tout ça dans tous les sens, je n’y arrive pas.

    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
    Sub parcabrege()
    Dim monparc As String, parcabr As String
    monparc = ActiveDocument.FullName
    parcabr = coupe2car(monparc)
    End Sub
     
    Function coupe2car(acouper) 'c'est ton code un peu bidouillé
    Dim Tabl() As String
    Dim Nom As String
    Tabl = Split(acouper, "\")
    Nom$ = ""
    If UBound(Tabl) >= 1 Then
    For I = 0 To UBound(Tabl) - 1
    Nom$ = Nom$ & Left(Tabl(I), 2) & "\"
    Next I
    End If
    Debug.Print acouper, Nom$
    End Function

    A vrai dire, je me pose aussi une autre question, mais cette fois c’est dû à ma préparation autodidacte qui a encore des trous : comment se fait-il qu’on déclare une variable « Nom » et qu’ensuite on utilise « Nom$ » ? J’ai déjà vu ça quelque part et je ne le comprends pas.

    Merci encore pour ton attention.

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

    Comme j'avais prévu que tu poserais la question

    http://heureuxoli.developpez.com/office/word/variables/

    Par contre, tu as vu clair, on déclare Nom et on utilises Nom$, c'est une erreur de programmation.

    Le $ à la fin d'une variable la déclare en String.

    est équivalent à Mais il est préférable de ne plus utiliser ce $.
    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 !

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    ouh là! J'ai du boulot!
    J'étudie un peu, puis j'essaye, puis je reviens ici.
    En attendant, merci!

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut question intermédiaire
    Le lien que Heureux-oli m'a envoyé est presque résolutif, je suis en train de travailler son manuel et de construire une macro qui ajoute une propriété au document, contenant le parcours. Ca marche!
    J'aurais besoin d'une petite précision concernant les fonctions en général. En effet, j'ai transformé le code de Canard338 en Function; ma macro lui passe en argument une variable à charcuter (parcours). Le problème est que, au retour dans la macro, le parcours n'est pas charcuté du tout, et il reste entier...
    Je suis sûr qu'il y a un truc bête comme tout, que je rate: comment on récupère une valeur à la sortie d'une Function?
    Si j'écris...
    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
    Function coupe2car(acouper)
    '
    Dim Tabl() As String
    Dim Nom As String
     
    Tabl = Split(acouper, "\")
    Nom = ""
    If UBound(Tabl) >= 1 Then
    For I = 0 To UBound(Tabl) - 1
    Nom = Nom & Left(Tabl(I), 2) & "\"
    Next I
    End If
    Debug.Print acouper, Nom 
    monparc = Nom
    End Function
    .. et puis...
    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
    Sub parcabrege()
    Dim monparc As String, parcabr As String
    monparc = ActiveDocument.FullName
    parcabr = coupe2car(monparc)
    NouvPropAvecTest (monparc)
    Debug.Print monparc
    End Sub
    ______________________________________________
    Sub NouvPropAvecTest(MaVar As String)
    On Error GoTo Ajout
    If Not (IsNull(ActiveDocument.CustomDocumentProperties("MaProp").Value)) Then
    ActiveDocument.CustomDocumentProperties("MaProp").Value = MaVar
    End If
    Ajout:
    Select Case Err.Number
    Case "5"
    ActiveDocument.CustomDocumentProperties.Add Name:="MaProp", LinkToContent:=False, Value:=MaVar, Type:=msoPropertyTypeString
    Case "0"
    Exit Sub
    Case Else
    MsgBox "Erreur non gérée" & vbCrLf & Err.Number & vbCrLf & Err.Description
    End Select
    End Sub
    ... la nouvelle propriété se crée, mais la charcuterie ne marche pas!

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

    C'est un peu normal.

    Comme tu aimes la lecture, j'en ai encore en stock.
    http://heureuxoli.developpez.com/off...page=page8#8-B

    La fonction doit renvoyer une valeur or, dans ce que je vois il n'y a pas de typage de la valeur et je ne retrouve pas dans la fonction la valeur retournée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function coupe2car(acouper) As String
     
    ...
    ...
    coupe2car = Nom
     
    End Function
    Et dans ce cas, lorsque tu feras appel à la fonction, tu auras une valeur retournée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ....
     
     
    parcabr = coupe2car(monparc)
     
    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 !

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Merci Heureux-oli, et merci aussi à canard338!
    Comme-ça ça marche:

    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
    Function coupe2car(acouper)
    '
    Dim Tabl() As String
    Dim Nom As String
     
    Tabl = Split(acouper, "\")
    Nom = ""
    If UBound(Tabl) >= 1 Then
    For I = 0 To UBound(Tabl) - 1
    Nom = Nom & Left(Tabl(I), 2) & "\"
    Next I
    End If
    Debug.Print acouper, Nom
    coupe2car = Nom
    End Function
    Sub parcabrege()
    Dim monparc As String, parcabr As String
    monparc = ActiveDocument.FullName
    parcabr = coupe2car(monparc)
    NouvPropAvecTest (parcabr)
    'Debug.Print monparc
    End Sub
    Sub NouvPropAvecTest(MaVar As String)
    On Error GoTo Ajout
    If Not (IsNull(ActiveDocument.CustomDocumentProperties("MaProp").Value)) Then
    ActiveDocument.CustomDocumentProperties("MaProp").Value = MaVar
    End If
    Ajout:
    Select Case Err.Number
    Case "5"
    ActiveDocument.CustomDocumentProperties.Add Name:="MaProp", LinkToContent:=False, Value:=MaVar, Type:=msoPropertyTypeString
    Case "0"
    Exit Sub
    Case Else
    MsgBox "Erreur non gérée" & vbCrLf & Err.Number & vbCrLf & Err.Description
    End Select
    End Sub
    Maintenant je dois trouver comment automatiser la mise à jour du champ (l'équivalent VBA de F9) au moment de la sauvegarde. Si je ne trouve pas je reviens ici.
    Merci à tous les deux!

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.fields.Update
    devrait le faire.
    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 !

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut encore un petit coup de main, svp
    Je m'en doutais: je n'ai pas trouvé, donc me revoilà. Je m'explique.
    Le code, maintenant, fonctionne bien. Il va chercher le chemin du document, il le coupe en tranches, il ajoute les initiales de l'utilisateur après confirmation de celui-ci, il fait de tout ça une belle propriété et la met à l'endroit où le curseur se trouve à ce moment-là. D'ailleurs, le voici, si quelqu'un veut s'en inspirer:
    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
     
    Function coupe2car(acouper)
    '
    Dim Tabl() As String
    Dim Nom As String
     
    Tabl = Split(acouper, "\")
    Nom = ""
    If UBound(Tabl) >= 1 Then
    For I = 0 To UBound(Tabl) - 1
    Nom = Nom & Left(Tabl(I), 2) & "\"
    Next I
    End If
    'Debug.Print acouper, Nom
    coupe2car = Nom
    End Function
     
    Sub traccia()
    Dim monparc As String, parcabr As String, salvatore As String
    monparc = ActiveDocument.FullName
    salvatore = Application.UserInitials
    salvatore = InputBox("Confermare iniziali di chi salva: ", "Iniziali", salvatore)
    parcabr = coupe2car(monparc)
    NouvPropAvecTest (parcabr & " (" & salvatore & ")")
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "DOCPROPERTY  MaProp ", PreserveFormatting:=True
    End Sub
     
    Sub NouvPropAvecTest(MaVar As String)
    On Error GoTo Ajout
    If Not (IsNull(ActiveDocument.CustomDocumentProperties("MaProp").Value)) Then
    ActiveDocument.CustomDocumentProperties("MaProp").Value = MaVar
    End If
    Ajout:
    Select Case Err.Number
    Case "5"
    ActiveDocument.CustomDocumentProperties.Add Name:="MaProp", LinkToContent:=False, Value:=MaVar, Type:=msoPropertyTypeString
    Case "0"
    Exit Sub
    Case Else
    MsgBox "Erreur non gérée" & vbCrLf & Err.Number & vbCrLf & Err.Description
    End Select
    End Sub
    Maintenant, mon problème est de trouver une parade pour que ce code s'exécute TOUTES les fois que l'utilisateur lance la commande "Enregistrer sous..." (à la limite, "Enregistrer" tout court, mais ce serait moins bien).
    Dans mes recherches, j'ai trouvé ceci: http://word.developpez.com/faq/?page...macroevenement mais est-il exhaustif? Parce que mon cas n'est pas dedans.
    Et sinon, je pense qu'on devrait pouvoir lancer ma macro à partir d'une mention dans les déclarations du module ou quelque chose comme-ça, non?
    Est-ce que je dis des bêtises?
    Merci à qui peut m'aider à faire un peu d'ordre dans ma pauvre tête...

    P.S.: C'est juste pour savoir: à quoi sert la commande Debug.Print ? Je l'ai annulée et tout fonctionne sans problème.

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

    Tu as raison, l'entrée dans la FAQ n'est pas complète.
    On peut utiliser cet évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub appWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
     
    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 !

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut ça ne marche pas
    C'est très gentil de ta part, d'avoir toute cette patience.
    J'avais déjà chargé tout mon module dans Normal.dot et j'y ai ajouté le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub appWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    reponse = MsgBox("Mettre à jour les codes avant de sauvegarder?", vbYesNo)
    If reponse = vbYes Then
    traccia
    End If
    End Sub
    Je l'ai mis tout en haut, en sélectionnant "Déclarations", mais je suppose que le "private sub" le définit comme macro.
    Et ça ne marche pas, ni avec Enregistrer, ni avec "Enregistrer sous...
    Où je me trompe?
    Merci encore...

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

    L'utilisation des évènements application n'est pas très complexe, mais ne s'utilise pas comme une simple macro.

    Jette un oeil à ce tuto, il devrait t'éclairer.
    http://heureuxoli.developpez.com/off...age=page2#L2-C
    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 !

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Excellent! Enfin, presque... J'ai tout fait sauf le dernier point (initialisation - instancier le module) parce que... je n'y ai rien compris.
    Sur mon module, je ne trouve même pas les événements, qui apparaissent uniquement dans le module de classe EventClassModule.
    Mais si je comprends bien c'est justement celui-ci qui doit être déclaré dans mon module personnel (qui s'appelle "Traccia").
    Et une autre chose: ton tutoriel cite le modèle normal.dotm; il ne se réfère par hasard uniquement à Word 2007 ? Le mien est 2003.
    Que dois-je faire?

  17. #17
    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 2003 et les versions antérieures, c'est Normal.dot
    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 !

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Oui, justement, pour Word 2003 c'est normal.dot.
    Mais comment je dois faire la dernière étape (instancier le module) décrite dans ton tutoriel?
    Parce que la description du tutoriel ne semble pas pouvoir s'appliquer à mon projet en VBA...

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

    Cette routine doit être mise dans le normal.dot ou un autre modèle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MyApp As New EventsClassModule
    Sub Document_New()
    Set MyApp.appWord = Word.Application
    End Sub
    Si tu souhaites l'utiliser sur un document, il est préférable d'utiliser l'évènement _Open().

    Le principe est assez simple, on crée un module de classe qui permet l'utilisation des évènements liés à l'application.
    Ensuite, il faut déclarer et instancier le module de classe pour utiliser l'évènement.
    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 !

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 53
    Points
    53
    Par défaut Où sont les événements dans normal.dot ?!?
    Heureux-oli, je te remercie vraiment pour ta patience, mais je vois que je ne me suis toujours pas expliqué efficacement, ou alors je suis vraiment tête de mule.
    J'ai fait exactement tout ce que tu décris, mais, comme je ne trouve pas d'événement dans le normal.dot, je ne peux pas coller la déclaration de MyApp et la macro Document_New dans l'événement _Open: il n'y a pas d'événement dans normal.dot. J'ai cherché partout, je t'assure que je ne comprends pas où ils sont cachés!
    Désespéré, j'ai collé tout ça ici: Normal - Microsoft Word Objets - ThisDocument. Mais bien-sûr cela ne marche pas.
    D'autre part, il me semble évident qu'il ne s'agit pas des événements dans le module de classe, étant donné que c'est justement lui, qu'il faut déclarer...
    Ma femme aussi me dit toujours qu'un jour je perdrai ma tête. Mais en attendant, la question "où sont passées mes chaussettes" exige une réponse claire, et non "à leur place".
    Merci encore...

Discussions similaires

  1. renommer des fichiers avec nom du répertoire
    Par mitch123 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/05/2013, 19h35
  2. Renommer liste de fichiers selon nom du répertoire avec incrémentation
    Par thibaut06 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 15/10/2012, 20h31
  3. Champ de formulaire avec nom de la forme a[b][c][x]
    Par Baldurien dans le forum Struts 2
    Réponses: 5
    Dernier message: 01/03/2007, 17h47
  4. Réponses: 1
    Dernier message: 23/08/2006, 17h38
  5. Excel : lien hypertexte vers un autre fichier avec nom page
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 09h33

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