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

Word Discussion :

Erreur de calcul dans l'enregistrement lors d'une fusion ? [WD-2000]


Sujet :

Word

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 964
    Points : 22 758
    Points
    22 758
    Par défaut Erreur de calcul dans l'enregistrement lors d'une fusion ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai un document de publipostage comportant une centaine de champs et pas mal de code conditionnel complexe.

    J'ai lors de mon publipostage une erreur de calcul sur chaque enregistrement mais je n'arrive pas à localiser la source de ce message.

    Mes données imprimées m'apparaissent correctes, il n'y a pas d'indication dans le document créé par la fusion d'où se produit l'erreur.

    Je ne vois pas de faute dans le code conditionnel mais comme il est VRAIMENT complexe (nombreux IF imbriqués) ce n'est pas évident de repérer les problèmes.

    Je pourrais recopier ma logique champ par champ dans un document vierge et tester après chaque modif mais ça va me prendre beaucoup de temps et je ne dispose pas de ce temps.

    Quelqu'un a un truc pour trouver la source du problème ?

    Peut-on exécuter la fusion en mode débuggage ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : février 2006
    Messages : 21 080
    Points : 44 115
    Points
    44 115
    Par défaut
    Salut,

    Dans les champs, il n'est pas possible de faire un debug.

    Par contre, il n'est pas nécessaire de les imbriquer.

    {If }{IF }{If }

    seule la condition remplie sera affichée.
    On peut dès lors trouver plus rapidement l'erreur.
    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 habitué
    Homme Profil pro
    Conseils, formations et assistance aux utilisateurs
    Inscrit en
    septembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseils, formations et assistance aux utilisateurs

    Informations forums :
    Inscription : septembre 2008
    Messages : 137
    Points : 129
    Points
    129
    Par défaut
    Salut,
    Lorsque j'ai des erreurs semblables à celles que tu évoques, souvent, l'origine des anomalies se trouvent :
    • dans un espace manquant (noté par & ci-après { CHAMPFUSION Machin&}) ;
    • une mauvaise interprétation des commutateurs ;
    • une différence dans le séparateur décimal déclaré dans Windows (options régionales du Panneau de Config) et celui utilisé dans tes formules de calcul.


    J'espère que ça pourra t'aider à localiser ton erreur.
    a+

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 964
    Points : 22 758
    Points
    22 758
    Par défaut
    merci à vous de ces tuyaux.

    J'ai un peu l'impression de revenir à mes débuts en informatique, il y a 20 ans où le seul outil de debugage était 1) tes yeux et une relecture TRÈS attentive de ton code et 2) des impressions à l'écran des trucs qui t'interresse.

    Pour les IF imbriqués, malheureusement c'est nécessaire car j'ai des trucs du genre si A et B alors C et ni mon précésseur ni moi ne sommes arrivé à faire fonctionner les OR() et AND() de Word qui ont une syntaxe qui rappèle COBOL et qui les rend aussi illisibles que des IF imbriqués.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre habitué
    Homme Profil pro
    Conseils, formations et assistance aux utilisateurs
    Inscrit en
    septembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseils, formations et assistance aux utilisateurs

    Informations forums :
    Inscription : septembre 2008
    Messages : 137
    Points : 129
    Points
    129
    Par défaut
    Si ta série de champs de fusion n'est pas top secret, joins-la à ce post, qu'on puisse essayer de trouver l'anomalie.

    J'ai déjà bossé sur des champs de fusion un peu alambiqués. Mets également une partie de ta source de données.

    A ce propos es-tu sûr de l'intégrité de cette dernière ? L'erreur se produit bien sur l'enregistrement 1 ?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 964
    Points : 22 758
    Points
    22 758
    Par défaut
    Merci de ta proposition mais sans être top secrètes ces données sont néanmoins hautement confidentielles et je ne peux les transmettre à l'extérieur.

    Ma source de données est correcte et je pense que je sais où se produit l'erreur. J'ai une addition de champs de fusion dont certains peuvent être nuls.

    Par contre as-tu réussi à utiliser OR et AND ? Même si leur syntaxe est VRAIMENT LOURDE cela simplifierait la logique de traitement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : février 2006
    Messages : 21 080
    Points : 44 115
    Points
    44 115
    Par défaut
    Salut,

    Pour les And et Or, il semblerait que ce soit applicable aux versions jusque 98.

    Pour les suivantes, il n'est jamais fait mention de ces possibilités de fonction logique.

    J'ai essayé avec les exemples donnés par MS sur 2003 et 2010 et ça ne fonctionne pas.
    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 !

  8. #8
    Membre habitué
    Homme Profil pro
    Conseils, formations et assistance aux utilisateurs
    Inscrit en
    septembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseils, formations et assistance aux utilisateurs

    Informations forums :
    Inscription : septembre 2008
    Messages : 137
    Points : 129
    Points
    129
    Par défaut
    Salut,
    C'est souvent sur les opérations avec des champs de fusion que j'avais des soucis également.

    Pas d'utilisation de AND et OR de mon côté : je contourne ce manque par des imbrications de IF à faire des dépressions !!

  9. #9
    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 : 58
    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 Marot-r,

    Pour les And et Or, il semblerait que ce soit applicable aux versions jusque 98.

    Pour les suivantes, il n'est jamais fait mention de ces possibilités de fonction logique.

    J'ai essayé avec les exemples donnés par MS sur 2003 et 2010 et ça ne fonctionne pas.
    Chez moi aussi ça ne fonctionne pas

    @+

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 964
    Points : 22 758
    Points
    22 758
    Par défaut
    En théorie cela devrait marcher avec W2000 mais en pratique cela ne génère pas d'erreur mais cela semble aléatoire et de toute façon si ce n'est plus supporté après ça perd de son intérêt.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 964
    Points : 22 758
    Points
    22 758
    Par défaut
    Grace à une de mes collègue j'ai localisé et éliminé le problème. Un de mes FORMTEXT était corrompu. Je m'en suis apperçu lorsque j'ai essayé de modifier ses propriétés.

    Pour ceux que cela interesse voici le code que j'ai fait pour créer un document par champ de fusion et vérifier que la fusion se fait correctement pour ce champ.

    Le code n'est pas un chef-d'oeuvre de programmation mais il fait le travail.

    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
    95
    96
    Option Explicit
     
    Private Sub TesterPublipostageChampParChamp()
        'Cette procédure crée un document par champ de fusion et le fusionne
        Dim o As Object
        Dim s As Shape
        Dim f As Field
        Dim lf As String
     
        On Error GoTo Err_ListField
     
        Dim reponse As Integer
        Dim documentTest As String
        Dim documentFusion As String
        Dim documentFusionne As String
        Dim d As Document
     
        documentTest = ActiveDocument.Name
     
        For Each f In Documents(documentTest).Fields
            lf = Replace(Replace(f.Code, Chr(21), "}"), Chr(19), "{")
     
            If lf = " FORMTEXT " Then GoTo NouveauChamp
            If lf = " FORMCHECKBOX " Then GoTo NouveauChamp
     
            Debug.Print f.Index; "/"; Documents(documentTest).Fields.Count, lf
            f.Select
            Selection.Copy
            Documents.Add DocumentType:=wdNewBlankDocument: documentFusion = ActiveDocument.Name
            Selection.Paste
     
            ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
            ActiveDocument.MailMerge.OpenDataSource Name:= _
                "C:\MonChemin\MaBD.mdb", _
                ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
                AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
                WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
                Format:=wdOpenFormatAuto, Connection:="QUERY rMaRequete", SQLStatement:= _
                "SELECT * FROM [rMaRequete]", SQLStatement1:=""
     
            'Déclenche la fusion
            With ActiveDocument.MailMerge
                .Destination = wdSendToNewDocument
                .MailAsAttachment = False
                .MailAddressFieldName = ""
                .MailSubject = ""
                .SuppressBlankLines = True
                With .DataSource
                    .FirstRecord = wdDefaultFirstRecord
                    .LastRecord = wdDefaultLastRecord
                End With
                .Execute Pause:=True
            End With
     
            'Cherche le nom du document fusionné
            For Each d In Documents
     
                If d.Name Like "Lettres types*" Then
                    documentFusionne = d.Name
                    Exit For
                End If
     
            Next d
     
            Documents(documentFusionne).Activate
     
            'Demande à l'utilisateur si cela c'est bien passé
            reponse = MsgBox("Fusion sans erreur (" & f.Index & "/" & Documents(documentTest).Fields.Count & ")", vbQuestion + vbYesNo + vbDefaultButton2)
     
            If reponse = vbYes Then
                'Ferme le documemt de fusion
                Documents(documentFusion).Close wdDoNotSaveChanges
            End If
     
            'Ferme le document fusionné
            Documents(documentFusionne).Close wdDoNotSaveChanges
     
    NouveauChamp:
            Documents(documentTest).Activate
        Next f
     
    NextShape:
     
    Exit_ListField:
        Exit Sub
     
    Err_ListField:
        Select Case Err.Number
            Case 5917
                Resume NextShape
     
            Case Else
                MsgBox "Erreur : " & Err.Number & ", " & Err.Description
        End Select
     
    End Sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Erreur de calcul dans CalcText
    Par jackvpt dans le forum Rave
    Réponses: 1
    Dernier message: 18/12/2010, 11h22
  2. [AC-2003] Erreur de calcul dans les requêtes
    Par ortiz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/10/2009, 16h49
  3. Réponses: 1
    Dernier message: 12/04/2008, 14h43
  4. Erreur de calcul dans une requête
    Par cofi30 dans le forum IHM
    Réponses: 2
    Dernier message: 24/01/2008, 15h44
  5. Message "#Erreur" pour calculs dans formulaire
    Par tieuphuong dans le forum IHM
    Réponses: 10
    Dernier message: 09/08/2007, 13h27

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