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 :

Envoi de données dans un Signet


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Par défaut Envoi de données dans un Signet
    Un petit soucis avec la première méthode proposée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub InfoCC(MO As String, MOE As String, design As String, CP As String, start As String)
    Dim bs As Integer
    Dim stTemp As String
    Dim stBM As String
    Dim rng As Range
    
    bs = ActiveDocument.Bookmarks("MO").start
    stBM = ActiveDocument.Bookmarks("MO").Name
    ActiveDocument.Bookmarks("MO").Range.Text = MO
    Set rng = Range(start:=bs, End:=bs + Len(MO))
    Selection.Bookmarks.Add Name:=stBM, Range:=rng
    
    [...MOE, design,...]
    End sub
    La ligne en gras est facultative, puisque j'ai déjà le nom du signet, mais j'ai laissé ainsi dans un premier temps pour éviter les erreurs.

    J'ai revu le code pour mon appli, ayant le nom de chaque signet par avance, je n'ai pas "besoin" de le récupérer où de l'envoyer à la procédure.

    J'appelle ma procédure ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If etatCC = 2 Then
        With wApp
           .Documents.Open (CheminCC)
        End With
        InfoDocs.InfoCC Me.txtMO.Value, Me.txtMOE.Value, Me.txtDesign.Value, Me.txtCP.Value, Me.txtstart.Value
     
    End If
    J'ai une erreur de compilation : Sub ou function non définie.
    En jaune, cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub InfoCC(MO As String, MOE As String, design As String, CP As String, start As String)
    et dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rng = Range(start:=bs, End:=bs + Len(MO))
    Le "Range" est sélectionné en bleu.

    Je suis sur Access 2007.

    Je m'en vais essayer la seconde proposition, mais elle m'avait l'air moins abordable de prime abord !

    Wulfram

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Tu ne dois jamais utiliser des mots réservés comme Start, End pour définir des variables.
    Essaie autre choses.
    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 confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Tu ne dois jamais utiliser des mots réservés comme Start, End pour définir des variables.
    Essaie autre choses.
    Hop, je viens de replacer tous les "start" de mon code et de mes formulaires/tables en "debut".

    L'erreur de compilation est toujours la même.

    Me.txtdebut (ex txtstart servant dans l'appel de procédure) est un champ au format date, le fait d'en passer la valeur dans une variable string peut-il jouer ?

    (PS : étant sur le forum Word - je viens de le remarquer - je me permet de repréciser que j'essaye de faire cela depuis Access2k7)

    J'ai essayé la seconde méthode, qui apporte aussi son lot de problèmes, et qui surtout, ne modifie pas le texte, mais le rajoute aussi, précédant celui d'avant...

    [EDIT :

    pour commencer, une récap de l'ensemble de mes codes concernant le sujet :

    Dans un module nommé "InfoDocs" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub InfoCC1(signet As Bookmark, LeMot As String)
    Dim deb As Integer, fin As Integer, Nom As String
        deb = signet.start 'début du signet
        fin = signet.end   'fin du signet
        Nom = signet.Name  'nom du signet
        MsgBox (Nom)
        signet.Range.Text = LeMot 'remplace le texte contenu
        With ActiveDocument.Range(start:=deb, end:=fin) 'emplacement du signet
            .Bookmarks.Add Name:=Nom 'ajoute le signet
        End With
    End Sub
    Dans le code de mon formulaire de création de document :

    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
    Dim wApp As Word.Application
    Set wApp = New Word.Application
        wApp.Visible = True
     
    If etatCC = 2 Then
    MsgBox (CheminCC)
        With wApp
           .Documents.Open (CheminCC)
        'InfoDocs.InfoCC Me.txtMO.Value, Me.txtMOE.Value, Me.txtDesign.Value, Me.txtCP.Value, Me.txtdebut.Value
     
        Dim signet As Bookmark, LeMot As String
        Set signet = ActiveDocument.Bookmarks("MO")
        LeMot = Me.txtMO.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("MOE")
        LeMot = Me.txtMOE.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("design")
        LeMot = Me.txtDesign.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("CP")
        LeMot = Me.txtCP.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("debut")
        LeMot = Me.txtdebut.Value
        InfoCC1 signet, LeMot
     
        End With
    End If
    Et dans celui de modification de ces données :

    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
        Dim wApp As Word.Application
        Set wApp = New Word.Application
     
            wApp.Visible = True
     
        If Me.lstCC.Column(0, 0) = 2 Then
            With wApp
             .Documents.Open (CheminCC)
             .Activate
        Dim signet As Bookmark, LeMot As String
        Set signet = ActiveDocument.Bookmarks("MO")
        LeMot = Me.txtMO.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("MOE")
        LeMot = Me.txtMOE.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("design")
        LeMot = Me.txtDesign.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("CP")
        LeMot = Me.txtCP.Value
        InfoCC1 signet, LeMot
     
        Set signet = ActiveDocument.Bookmarks("debut")
        LeMot = Me.txtdebut.Value
        InfoCC1 signet, LeMot
            End With
        End If
    Quelques soucis :

    Lors de la création de document, il m'arrive d'avoir pour message d'erreur (462) : le serveur distant n'existe pas ou n'est pas disponible.
    La MsgBox(cheminCC) juste avant indique pourtant une adresse locale. En utilisant le débogage, j'ai cette ligne en jaune :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set signet = ActiveDocument.Bookmarks("MO")
    Cette erreur se produit aussi parfois lors de la modification. Faut-il ajouter un "timer" pour laisse le temps au document de s'ouvrir complètement, est-ce un problème dans l'utilisation des "with" (je ne suis pas familiarisé avec ça, en fait j'ai du mal à en comprendre le fonctionnement)

    Lors de la modification, j'ai aussi parfois le message d'erreur 4248 : "commande non disponible : aucun document n'est ouvert." Le débogage m'indique la même ligne que ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set signet = ActiveDocument.Bookmarks("MO")
    Problème de timer, de with ? Autre ?

    Autre soucis : Lorsque ça "fonctionne" (je garde un document ouvert plutôt que le faire ouvrir), le texte du signet n'est pas changé, mais précédé du nouveau texte.

    help ! /EDIT]

    Wulfram

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    si tu dois passer une variable texte alors qu'au départ c'est une date, le résultat ne sera pas celui qu'attend.
    Pour transformer un date en texte, il faut utiliser la fonction Format().
    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 confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    si tu dois passer une variable texte alors qu'au départ c'est une date, le résultat ne sera pas celui qu'attend.
    Pour transformer un date en texte, il faut utiliser la fonction Format().
    Hop, merci !
    Même si ça ne règle en rien le problème de base, c'est quand même mieux avec la date !

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Explique ce que tu veux faire, parce que je pense que nous ne sommes pas sur la bonne voie.
    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 !

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

Discussions similaires

  1. envoie de donnée dans une requéte depuis un liste déroulante
    Par steve o'steen dans le forum Langage
    Réponses: 1
    Dernier message: 17/10/2006, 16h24
  2. [MySQL] envoi de données dans une table
    Par suya95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/06/2006, 15h48
  3. [FPDF] envoi de donnes dans document pdf
    Par gator dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 19/06/2006, 09h58
  4. Réponses: 15
    Dernier message: 10/04/2006, 15h06
  5. (DotNet c++) envoi de données dans une textbox
    Par stgi02 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 02/02/1970, 02h52

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