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 :

Publipostage des lignes d'une facture


Sujet :

Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut Publipostage des lignes d'une facture
    Bonjour,

    Je réalise actuellement un publipostage sous word permettant d'extraire les facture d'une base access.

    Pour les informations relatives à la facture elle-même (numéro, nom client...), pas de problème.
    Par contre je ne comprends pas comment extraire les lignes d'une facture.

    Est ce que l'un de vous pourrait orienter mes recherches? je ne vois vraiment pas comment m'y prendre.

    Merci d'avance.

  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
    Points : 42 925
    Points
    42 925

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Merci beaucoup!!!
    Promis, j'avais cherché avant!!!
    Peut être pas correctement... je l'accorde!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut En fait, c'est pas bon...
    J'ai parlé trop vite...
    J'ai encore un soucis avec le paramétrage de ma connexion...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub testPublipostage()
                
    Dim oConn As ADODB.Connection, oRS As ADODB.Recordset
    Dim i As Integer
     
    Set oConn = New ADODB.Connection
    oConn.ConnectionString = "Provider=SQLOLEDB;DATA SOURCE=OLIVIERPC\SQLEXPRESS;" & _
          "INITIAL CATALOG=DBSQL;" & _
          "INTEGRATED SECURITY=SSPI;"
    Ma source est une base access nommée compte.mdb
    Je ne vois pas comment adapté la chaine...
    A quoi correspondent le provider, la source...

    Merci d'avance

  5. #5
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Non, je suis d'accord avec toi, mais si tu as lu le fil, c'est déjà une étape de franchie !
    Un tuto pour la route http://heureuxoli.developpez.com/publipostage/

    La différence entre un serveur SQL et une base de données Access se situe au niveau de l'accès aux données.

    Comme tu as pu le constater, en SQL, on accède aux données en ADO, alors qu'avec Access on y accède en DAO.

    La première chose à faire est une connexion aux données.

    Dans ton projet tu va déclarer la bibliothèque DAO.

    Outils
    Références
    Microsoft DAO

    Cette bibliothèque est utile pour extraire les données.

    Un tuto sur le DAO http://warin.developpez.com/access/dao/

    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
    Sub AccessAuxDonnee()
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim sql As String
     
    sql = "Select * from myTable"
    Set db = OpenDatabase("LeCheminDeMaDB")
    Set rs = db.OpenRecordset(sql)
    While Not rs.EOF
        Debug.Print rs.Fields(1)
        rs.MoveNext
    Wend
    Set db = Nothing
    Set rs = Nothing
     
    End Sub
    Essaie ce bout de code en remplaçant les données de la table et de la base de données par les vrais chemins et nom de table.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    ...Amen...

    (Je mettrai le post en résolu dès que tout fonctionnera )

  7. #7
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Je suis pour la méthode des petits pas si tu rencontre une difficulté, annonce la couleur.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Petit pas-dawan est de retour....

    Voici l'état du code actuel, et la bibliothèque Microsoft Word... a bien été ajouté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
    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
    Sub AccessAuxDonnee()
    Dim oRs As DAO.Recordset
    Dim db As DAO.Database
    Dim sql As String
    Dim stTemp As String
    Dim oDoc As Document
    stTemp = ""
    
    sql = "SELECT *  FROM ExtraireDonnee"
    Set db = OpenDatabase("H:/compte.mdb")
    Set oRs = db.OpenRecordset(sql)
    
    Debug.Print "1"
    
    stTemp = ""
    While Not oRs.EOF
       If stTemp <> oRs.Fields(1).Value Then
    ' si l'enregistrement traité n'est pas le premier du recordset, on ferme le
    ' document.
           If oRs.AbsolutePosition <> 1 Then  oDoc.Close 
    ' On va ajouter un document et l'affecter à la variable oDoc
             Set oDoc = Documents.Add("H:\Doc1.doc")
    ' On utilise les signets du document pour inscrire certaines valeurs
             oDoc.Bookmarks("lib").Range.Text = oRs.Fields("don_lib").Value
    'Après les signets, on attaque la table, on va y ajouter une ligne et
    ' y inscrire des valeurs.
             With oDoc.Tables(1).Rows
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
             End With
    'On sauve le document avec le nom
             oDoc.SaveAs "H:\fichesG\" & oRs.Fields("don_lib") & ".doc"
    ' On remplit la variable temporaire pour faire le test
             stTemp = oRs.Fields(1).Value
       Else
    ' Si c'est le même identifiant, on continue de remplir la table.
             With oDoc.Tables(1).Rows
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
             End With
    'On sauve le document
             oDoc.Save
       End If
    
       oRs.MoveNext
    Wend
     End Sub
    Le problème vient de oDoc.close ... "variable objet ou variable bloc With non définie"
    A l'autocomplession, il trouve bien la méthode .Close

  9. #9
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Chose que je n'ai pas trouvée dans le Fil ??
    Tu es en Access.

    Alors que nous sommes dans un Forum Word
    J'ai basé mon code sur le fait que tu partais de Word et non d'Access.

    Il te manque les références à Word.Application.


    Essaie le code au départ de Word et pas d'access.

    Si tu veux partir d'access, le code sera différent.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    re bonjour,

    Bon je suis en mode pas réveillé ce matin...

    Je travaille bien avec Word!!! (enfin c'était le cas hier)... et ce matin, je ne sais pour quelle raison... J'ai recommencer avec Access...
    Mais je veux rester parmi vous!!!!!

    Bon pb de la version WORD!


    Le 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
    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
     
     
    Sub AccessAuxDonnee()
    Dim oRs As DAO.Recordset
    Dim db As DAO.Database
    Dim sql As String
    Dim stTemp As String
    Dim oDoc As Document
    stTemp = ""
     
     
    sql = "SELECT *  FROM ExtraireDonnee"
    Set db = OpenDatabase("H:/compte.mdb")
    Set oRs = db.OpenRecordset(sql)
     
    Debug.Print "1"
     
     
    stTemp = ""
    While Not oRs.EOF
    Debug.Print "2"
       If stTemp <> oRs.Fields(1).Value Then oDoc.close
    Debug.Print "3"
    ' si l'enregistrement traité n'est pas le premier du recordset, on ferme le
    ' document.
     
    ' On va ajouter un document et l'affecter à la variable oDoc
             Debug.Print "4"
             Set oDoc = Documents.Add("H:\doc1.doc")
             Debug.Print "5"
    ' On utilise les signets du document pour inscrire certaines valeurs
             oDoc.Bookmarks("lib").Range.Text = oRs.Fields("don_lib").Value
    'Après les signets, on attaque la table, on va y ajouter une ligne et
    ' y inscrire des valeurs.
             Debug.Print "6"
             With oDoc.Tables(1).Rows
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
             End With
                      Debug.Print "7"
    'On sauve le document avec le nom
             oDoc.SaveAs "c:\temp\" & oRs.Fields("don_lib") & ".doc"
                      Debug.Print "8"
    ' On remplit la variable temporaire pour faire le test
             stTemp = oRs.Fields(1).Value
                      Debug.Print "9"
       Else
    ' Si c'est le même identifiant, on continue de remplir la table.
             Debug.Print "10"
             With oDoc.Tables(1).Rows
                      Debug.Print "11"
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
                         Debug.Print "12"
             End With
                      Debug.Print "13"
    'On sauve le document
             oDoc.Save
       End If
                Debug.Print "14"
    oRs.MoveNext
    Wend
    end sub
    L'affichage de la console:

    Le message d'erreur: "Variable objet ou variable de bloc With non définie"


    et encore mea culpa!

  11. #11
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Essaie un debug.print sur le stTemp.

    Je ne vois pas ce qui coince pour l'instant.

  12. #12
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Ok, je pense avoir trouvé.

    Comme aucun document n'est ouvert, il ne peut le fermer.

    Essaie de mettre

    dans ta procédure pour voir !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    code actuel :
    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
     
    Sub AccessAuxDonnee()
    Dim oRs As DAO.Recordset
    Dim db As DAO.Database
    Dim sql As String
    Dim stTemp As String
    Dim oDoc As Document
    stTemp = ""
     
     
    sql = "SELECT *  FROM ExtraireDonnee"
    Set db = OpenDatabase("H:/compte.mdb")
    Set oRs = db.OpenRecordset(sql)
     
    Debug.Print "1"
     
     
    stTemp = ""
    While Not oRs.EOF
    Debug.Print "2"
       If stTemp <> oRs.Fields(1).Value Then
    Debug.Print "3"
    ' si l'enregistrement traité n'est pas le premier du recordset, on ferme le
    ' document.
    On Error Resume Next
             If oRs.AbsolutePosition <> 1 Then oDoc.Close
    ' On va ajouter un document et l'affecter à la variable oDoc
    Debug.Print "4"
             Set oDoc = Documents.Add("H:\doc1.doc")
    Debug.Print "5"
    ' On utilise les signets du document pour inscrire certaines valeurs
             oDoc.Bookmarks("lib").Range.Text = oRs.Fields("don_lib").Value
    'Après les signets, on attaque la table, on va y ajouter une ligne et
    ' y inscrire des valeurs.
    Debug.Print "6"
             With oDoc.Tables(1).Rows
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
             End With
    Debug.Print "7"
    'On sauve le document avec le nom
             oDoc.SaveAs "H:\fichesG\" & oRs.Fields("don_lib") & ".doc"
    Debug.Print "8"
    ' On remplit la variable temporaire pour faire le test
             stTemp = oRs.Fields(1).Value
    Debug.Print "9"
       Else
    ' Si c'est le même identifiant, on continue de remplir la table.
    Debug.Print "10"
             With oDoc.Tables(1).Rows
    Debug.Print "11"
                .Add
                .Last.Cells(1).Range.Text = oRs.Fields("don_lib")
    Debug.Print "12"
             End With
    Debug.Print "13"
    'On sauve le document
             oDoc.Save
       End If
    Debug.Print "14"
    oRs.MoveNext
    Wend
     
    Set db = Nothing
    Set oRs = Nothing
     
    End Sub
    Alors, maintenant ca marche presque bien...ca boucle juste à l'infini...
    EDIT:
    Pour être plus précise, il créer tous les fichiers une permière fois et recommence.... et recommencer... et recommence....

    En mode recherche

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    C'est bon, ca marche encore une étourderie de ma part!!!!


    Merci pour ton temps, ta dispo et ton expertise!!!!

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Encore un un petit pb.... décidémment...

    dans le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sql = "SELECT *  FROM ExtraireDonnee"
    Set db = OpenDatabase("H:/compte.mdb")
    Set oRs = db.OpenRecordset(sql)
    la ligne en rouge ne fonctionne pas car la base est déjà ouverte.
    Je ne vois pas par quoi je peux la remplacer...

  16. #16
    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
    Points : 42 925
    Points
    42 925
    Par défaut
    Surprenant que ce soit h:/ et pas h:\ ??

Discussions similaires

  1. [JTable] coloration des lignes d'une JTable
    Par MathiasM dans le forum Composants
    Réponses: 3
    Dernier message: 22/06/2009, 10h19
  2. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  3. Copier des lignes d'une table
    Par thomas_strass dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 01/07/2005, 15h42
  4. Creer une TADOTable aprtir des lignes d'une autre ?
    Par Rainmaker dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/04/2005, 18h41
  5. Réponses: 4
    Dernier message: 31/05/2004, 12h26

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