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 : Stocker l'adresse d'un document dans un string


Sujet :

Word

  1. #21
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    C'est vrai ? Ce n'est pas possible ? En fait j'avais imaginé que la requête SQL en dernière ligne permettait de choisir la feuille sur laquelle on voulait travailler.
    Quelle est la solution d'après vous ? dois-je modifier ma macro Excel dans le but de faire des fichier excel à la place d'onglets ?

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    C'est vrai ? Ce n'est pas possible ? En fait j'avais imaginé qu'il serait possible de sélectionner l'onglet sur lequel on veut travailler en modifiant le code SQL en dernière ligne.

    Que faudrait il faire selon vous ? Créer un nouveau fichier excel, pour chacun des tableaux à la place d'un onglet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub DocSource1(ByVal Adresse2 As String)
     
     'ByVal signifie que lors de la passation d’un argument, celui-ci est évalué, et que seule sa valeur est prise en compte.
        'activation du document, puis du format d'étiquette
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:=Adresse2, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
           WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
           "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & Adresse2 & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
           , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
     
    End Sub

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Je ne dis pas qu'il n'existe pas de solution avec la requête, mais force est de constater le résultat. Vous aurez peut-être une réponse d'un expert.

    Il vous faudrait expliquer la raison pour laquelle vous devez choisir un onglet spécifique. Dans votre situation, j'irai ouvrir le fichier, copier l'onglet retenu dans un nouveau fichier pour alimenter le publipostage.

    Nb : Vos données sont confidentielles. Supprimez votre fichier.

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    en fait un des objectifs de cette opération est de séparer les documents Français des documents étrangers, ainsi que des clients recevant 50 calendriers ou 5 dès l'étiquetage, afin de ne pas avoir à re-trier après.
    La solution que j'ai trouvé, c'est de créer quatre tableaux séparant chacun de ces critères afin de pouvoir imprimer quatre feuilles de publipostage distinctes prètes à être collées sur les enveloppes. Ainsi, on n'a pas besoin de retrier toutes les enveloppes à postériori (il y en a quand même un certain nombre)

    Mais, bien sur, il faut que je trouve le moyen de réaliser une telle opération en rédigeant le code adéquat...

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    En triant votre tableau par pays et par type d'envoi avant de démarrer votre publipostage, cela ne suffirait pas ?

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Si, je pense que ça va se terminer comme ça.

    Mais je souhaite tout de même que ce travail soit automatique, et non manuel. Je pense que je vais toujours travailler dans un seul onglet, en triant le fichier excel, en le détriant, puis en le retriant d'une autre manière en appliquant à chaque itération la macro word, dont je connais l'efficacité.

    Je vous tiens au courant

  7. #27
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Il faut éviter les colonnes fusionnées dans la ligne de titre de votre tableau.
    La procédure, ci-dessous, permet de trier un tableau selon deux critères. L'ordre pour chaque colonne est à adapter.

    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
     
    Option Explicit
     
    Sub TriDuFichier(ByVal FeuilleATrier As Worksheet, ByVal LigneDeTitre As Long, ByVal Colonne1ATrier As Long, ByVal Colonne2ATrier As Long)
     
    Dim DerniereColonne As Long, DerniereLigne As Long
    Dim AireATrier As Range, AireColonne1 As Range, AireColonne2 As Range
     
        With FeuilleATrier
     
             DerniereColonne = .Cells(LigneDeTitre, .Columns.Count).End(xlToLeft).Column
             DerniereLigne = .Cells(.Rows.Count, Colonne1ATrier).End(xlUp).Row
     
             If DerniereLigne > LigneDeTitre Then
     
                Set AireATrier = .Range(.Cells(LigneDeTitre, 1), .Cells(DerniereLigne, DerniereColonne))
                Set AireColonne1 = .Range(.Cells(LigneDeTitre, Colonne1ATrier), .Cells(DerniereLigne, Colonne1ATrier))
                Set AireColonne2 = .Range(.Cells(LigneDeTitre, Colonne2ATrier), .Cells(DerniereLigne, Colonne2ATrier))
     
                .Sort.SortFields.Clear
                .Sort.SortFields.Add Key:=AireColonne1, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                .Sort.SortFields.Add Key:=AireColonne2, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     
                With .Sort
                     .SetRange AireATrier
                     .Header = xlYes
                     .MatchCase = False
                     .Orientation = xlTopToBottom
                     .SortMethod = xlPinYin
                     .Apply
                 End With
     
                 Set AireColonne2 = Nothing
                 Set AireColonne1 = Nothing
                 Set AireATrier = Nothing
     
              End If
     
        End With
     
    End Sub
     
    Sub TestTriDuFichier()
     
        TriDuFichier Sheets("Feuil1"), 1, 14, 19
     
    End Sub

  8. #28
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Salut, désolé pour le retard, mais il y avait pas mal de taf.

    Alors, j'ai fait ce qu'on a dit, c'est à dire ne travailler que sur un seul onglet en triant et dé-triant et en appliquant la macro entre chaque itération, et je rencontre le même problème ! Le programme me dit que ma chaine contient plus de 255 caractères à l'exécution de ce passage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:=Adresse2, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
           WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
           "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & Adresse2 & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
           , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
    Pourtant, je ne comprend pas parce que ce code marche si on ne réalise pas de filtrage sur le tableau. Et je ne vois pas comment contourner le problème.

    Est ce que tu as une idée ?

    Merci

  9. #29
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Le code ci-dessous ne pose pas de problème chez moi. Le fichier ne contient plus qu'un onglet.

    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
     
    Option Explicit
     
    Public Adresse As String
     
    Sub Test()
        Adresse = AdresseFichierExcel
        If Adresse <> "" Then DocSource Adresse
    End Sub
     
    Sub DocSource(ByVal Adresse2 As String)
     
    Dim MonDocument As Document
     
        Set MonDocument = ActiveDocument
        With MonDocument.MailMerge
             .MainDocumentType = wdFormLetters
             .OpenDataSource Name:=Adresse2, ReadOnly:=True, Format:=wdOpenFormatAuto, Revert:=False, _
                             Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & _
                                       Adresse2 & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Ty" _
                                       , SQLStatement:="SELECT * FROM `Feuil1$`"
        End With
        Set MonDocument = Nothing
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Google Maps] Stocker les adresses dans une base mysql
    Par roy2work dans le forum APIs Google
    Réponses: 1
    Dernier message: 17/12/2013, 13h05
  2. [WD-MAC 2004] Publipostage avec les adresses dans un fichier Excel
    Par Alooha dans le forum Word
    Réponses: 2
    Dernier message: 03/02/2011, 05h13
  3. Réponses: 6
    Dernier message: 22/05/2007, 09h55
  4. modifier l'adresse d'un dll dans un .exe
    Par Mr Meuble dans le forum Windows
    Réponses: 4
    Dernier message: 02/03/2004, 16h39
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23

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