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 :

Problème de champ [WD-2007]


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 81
    Points : 124
    Points
    124
    Par défaut Problème de champ
    Bonjour,

    J'ai créé un signet dans un fichier word et je souhaite écrire dedans ce qu'un utilisateur entre dans un formulaire.
    Lorsque je recherche le signet via l'interface word je le trouve cependant, lorsque je l'appel en vba, la fonction sort en erreur.

    Voici la partie de mon code ou ce trouve l'erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Ecriture()
    On Error GoTo Fin_Ecriture
     
    NewMacros.X_Ecr_Champ_Signet "ChRef", Ref$
     
    Fin_Ecriture:
    If Err.Number <> 0 Then NewMacros.X_Fin_Erreur Module$, "Ecriture", Err.Number
    End Sub
    Cela appel la fonction suivante :

    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
    Public Function X_Ecr_Champ_Signet(Nom$, Valeur$)
    On Error GoTo Fin_X_Ecr_Champ_Signet
     
    Dim Code$, myRange
    Dim aField As Field
     
        ' Pour éliminer le caractère " qui n'est pas interprèté dans les renvois de champs
        If Valeur$ <> "" Then Valeur$ = Join(Split(Valeur$, Chr$(34)), "'")
     
        ' Remplace les sauts de ligne par des sauts de §
        If InStr(Valeur$, Chr(13)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(13)), Chr(11))
        If InStr(Valeur$, Chr(10)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(10)), "")
        ' Remplace le caractère ^ de saisie de tab par une vraie tabulation
        If InStr(Valeur$, Chr(94)) <> 0 Then Valeur$ = Join(Split(Valeur$, Chr(94)), Chr(9))
     
    'Déclaration des variables
    'intI pour le début de notre Bookmark
    Dim intI As Long
    'un objet range pour le range de notre Bookmark
    Dim MyRng As Range
     
    'Récupération de la position de départ de notre signet
    intI = ActiveDocument.Bookmarks("Nom$").Start
    'Affectation du texte à notre Bookmark
    ActiveDocument.Bookmarks("Nom$").Range.Text = Valeur$
    'Affectation de l'objet Range, où la position de départ est
    ' la même que pour le Bookmark et la fin sera le début augmenté
    ' de la longueur du texte
    Set MyRng = ActiveDocument.Range(Start:=intI, End:=intI + Len(Valeur$))
    ' Crée le Bookmark sur l'objet Range
    ActiveDocument.Bookmarks.Add Nom$, MyRng
    Set MyRng = Nothing
     
     
     
    Fin_X_Ecr_Champ_Signet:
    If Err.Number <> 0 Then
        MsgBox "Le champ " + Nom$ + " est inexistant !", vbInformation, MsgBoxTitre
        X_Fin_Erreur Module$, "X_Ecr_Champ_Signet", 0
    End If
    End Function
    L'erreur ce situe a la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intI = ActiveDocument.Bookmarks("Nom$").Start
    Merci d'avance pour toutes aides ou pistes.

    Cordialement,

    Ltspitfire

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 81
    Points : 124
    Points
    124
    Par défaut
    Bonjour,

    Ce que je cherche a faire semble en faite impossible.
    Je viens de tomber sur un article qui dis que pour utiliser des champs il faut obligatoirement être dans un fichier modèle (.dotm) alors qu'il me faut absolument un fichier .docm.
    Il faudrais donc que j'utilise des signets.
    Je souhaiterais juste une confirmation de cela.

    Cordialement,
    Ltspitfire

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

    On peut utiliser des champs dans un document autre qu'un modèle.
    Le modèle permet d'utiliser un document avec des champs vides ou préremplis alors qu'avec un document, les champs auront les contenus lors de la sauvegarde.

    Pour atteindre un signet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("monsignet").Range.Text = "..."
    Pour récuperer le contenu d'un champ, on ne passe par par son signet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.FormFields("Monchamp").Result
    Par contre, tu ne nous dis pas quelle erreur est levee par ton code.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 81
    Points : 124
    Points
    124
    Par défaut
    Bonjour Heureux-oli,

    Merci de ta réponse.
    J'ai pu résoudre mon problème en changeant totalement de code.
    Mon erreur venait du fait que je confondais signet et champs.

    Cordialement,
    Ltspitfire

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/11/2005, 12h04
  2. Problème de champs Paradox type : mémo formaté
    Par mjp dans le forum Bases de données
    Réponses: 6
    Dernier message: 05/04/2005, 21h13
  3. Problème de champs texte
    Par Benjamin76 dans le forum Access
    Réponses: 1
    Dernier message: 07/01/2005, 11h13
  4. Problème de champs vierge dans un regroupement
    Par GrisburT dans le forum Oracle
    Réponses: 8
    Dernier message: 09/12/2004, 11h08
  5. [CR7][VB6]Problème de champs
    Par jcdupayage dans le forum SDK
    Réponses: 5
    Dernier message: 19/07/2004, 14h54

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