Séquence de fusion et publipostage

Séquence de fusion et publipostage - VB/VBA/VBS - Programmation

Marsh Posté le 11-01-2006 à 23:07:06    

Bonjour
Al l'aide. je deviens fou
Je vous explique mon probleme!  :fou:  
J'ai un document word qui est compose de deux pages tres importantes...
la premieres lors de la fusion est censee editer que des docs donc le champ type de la base de donnée excel est egale a A  
le seconde que des docs dont le chp type dans la base de données excel est T!
le probleme c'est que j'aimerais arriver dans un premier tepms a le faire avec des signets ou SKIPIF...enfin un truc qui marche !
ca serait par expl
 
etiquette 1: si "A ok" je fusionne tout ce qui correspond a la premiere page, la fusion n'est donc pas appliquée sur la deuxieme page censée rapatrier des champs du fichier excel.
etiquette 2: si "T ok" je fusionne tout ce qui correspond à la deuxieme page, apres l'etiquette 2 donc la page 1 n'est pas publipostée.
commun peut on dans un meme fichier sequencer l'enregistrement ou bien separer lors de la fusion.
 
 
need some help please!
thx
lden


Message édité par lden le 18-01-2006 à 08:10:36
Reply

Marsh Posté le 11-01-2006 à 23:07:06   

Reply

Marsh Posté le 12-01-2006 à 09:04:45    

Dis-donc, tu n'as que des problèmes  ;) ...
 
Ne serait-ce pas plus facile si il y avait 2 fichiers word... 1 pour la première page et 1 pour la seconde ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 12-01-2006 à 11:26:19    

si d'ailleur sc'est ce que j'ai fais mais mine de rien!!! ca doit pouvoir se faire?

Reply

Marsh Posté le 12-01-2006 à 11:29:06    

Est-ce que ca marche avec deux fichiers différents ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 12-01-2006 à 11:49:00    

oui

Reply

Marsh Posté le 12-01-2006 à 11:51:49    

Tu peux mettre le code pour l'adapter à un seul fichier ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 12-01-2006 à 11:59:23    

Oue mais ca va etre hardu car le code run un user form et ce la requete SQLstatement qui specifie quelle donnée importer!
Comment sur le fichier "double" je peux adapter une requete d'une macro ainsi que des conditions ecrite sur le fichier.
expl, la macro prend les donnee du mois date system et peux analyser le fichiers ^pour passer à la sequence suivante!!
à mon avis ce choo!
 
voila le code de la macro qui rapatrie la base avec la requete month!
 
Function fusion_master(month As String) As Boolean
'
' e_c_t Macro
' Macro enregistrée le 06/01/2006 par DENISE Louis
'
MyMonth_num = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" )
MyMonth_letter = Array("Janvier", "Fevrier", "Mars", "Avril", "mai", "Juin", "juillet", "Aout", "Septembre", "Octobre", "Novenbre", "Decembre" )
 
Const separateur As String = "/"
Const appos As String = "'"
Dim i As Integer
Dim MyDate
MyDate = Date
 
If month = "mois_anterieur" Then
    i = 0
    iret2 = Split(MyDate, separateur, -1, vbTextCompare)
    mois = CInt(iret2(1))
    fusion_master = True
    Do
    i = i + 1
    Loop Until (CInt(MyMonth_num(i - 1)) = mois)
    st = MyMonth_letter(i - 1)
    X = "(Mois = " & appos & st & appos & " )"
 
ActiveDocument.MailMerge.OpenDataSource Name:= _
        "I:\comptabilité matiière\liste_MASTER.xls", ConfirmConversions:=False, _
        ReadOnly:=True, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=I:\comptabilité matiière\liste_MASTER.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLE" _
        , SQLStatement:="SELECT * FROM `'Fichier Master$'` WHERE ((Type = 'A') AND " & X & " )" & "", SQLStatement1:="", _
        SubType:=wdMergeSubTypeAccess
        With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
ElseIf month = "" Then
    MsgBox ("veuillez sasir un mois" )
    fusion_master = False
Else
    X = "(Mois = " & appos & month & appos & " )"
    fusion_master = True
ActiveDocument.MailMerge.OpenDataSource Name:= _
        "I:\comptabilité matiière\liste_MASTER.xls", ConfirmConversions:=False, _
        ReadOnly:=True, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=I:\comptabilité matiière\liste_MASTER.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLE" _
        , SQLStatement:="SELECT * FROM `'Fichier Master$'` WHERE ((Type = 'A') AND " & X & " )" & "", SQLStatement1:="", _
        SubType:=wdMergeSubTypeAccess
        With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
End If
End Function
 
voila!
 

Reply

Marsh Posté le 12-01-2006 à 13:59:14    

Est-ce que tu peux écrire un exemple concret ?
 
Ta macro est bien sur le fichier Word, non ? Décris le cheminement à faire... J'ai pas tout compris (c'est l'heure de la sieste, donc je suis pas très réveillé...)


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 12-01-2006 à 14:31:21    

en fait pr cette macro manu c'est pas presse car mon boss est ok pr deux fichiers word separé.
je ferai un description globale qd j'aurais plus le tps.
Par contre sais tu comment fonctionne la fct RECHERCHEV.
Je m'explique; j'ai deux onglets .
le premier est visible; le type commence à remplir la colonne 1 avec des noms qu'une liste lui propose, c'est le fameux pb de tout à l'heure que vs avez resolu! une fois qu'il a rempli la case, j'aimerai que la case d'a coté(A2 s"il à rempli A1) dans le feuillet visible se remplisse à son tour par la valeur du champ directement à la droite des valeur statique du feuillet 2.
 
expl:
 
feuillet 1:
choix pr A1 RN
la fct RECHERCHEV importe ds A2 du feuillet visible la valeur directement à droite de la case de la premiere colonne du feuillet contenant les données statiques. Elle va chercher la valeur à droite de RN dans le feuillet invisible puis l'exporte dans feuillet 1!Ca lui importe Raffinerie de normandie par ex!
C'est bete que l'on ne ouisse pas faire un schema!!!!
 


Message édité par lden le 12-01-2006 à 14:32:42
Reply

Marsh Posté le 12-01-2006 à 14:43:14    

je donne la reponse sauf que la formule s'applique actuellement que pour une ligne j'aimarai qu'elle s'applique pr toute une colonne:
 
=RECHERCHEV(Etablissements!A1:A15;Etablissements!A1:B15;2;FAUX)
 
bon jcherche pr appliquer la formule à toute la colonne!

Reply

Marsh Posté le 12-01-2006 à 14:43:14   

Reply

Marsh Posté le 12-01-2006 à 14:51:55    

Pour que cela marche pour toutes les cellules, tu n'as pas d'autres choix que de copier la formule dans toutes les cellules...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 12-01-2006 à 15:17:51    

te sur!!! qu'on peut pas à l'aide d'une macro appliquer la formule à toute la plage; ou bien apres avoir defini un nom sur la plage dont les cellules sont touchées par la formule

Reply

Marsh Posté le 12-01-2006 à 15:24:18    

Là, mes compétences s'arrêtent et débute mon ignorance...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 13-01-2006 à 12:11:34    

voila je suis en train de resoudre le pb j'ai cree un macro qui fait ca toute seule comme une grande::
 
le probleme ce la derniere ligne il me dit que l'indice a ppartient pas a la selection HELP please!!!!!
 
Sub formule()
'
' formule Macro
' Macro enregistrée le 12/01/2006 par Louis DENISE
'
 
'
Dim CFIN As String
Dim CINIT As String
Dim DINIT As String
Dim DFIN As String
Dim FIN As Integer
Dim plage As String
DINIT = "D2"
CINIT = "C2"
FIN = 2
Do
    CFIN = "C" & CStr(FIN)
    If CFIN = CINIT Then
    Range("C2" ).Select
    Else
    plage = CINIT & ":" & CFIN
    Range(plage).Select
    End If
    FIN = FIN + 1
Loop Until IsEmpty(Worksheets("Fichier Master" ).Range(CFIN).Value) = True
    DFIN = "D" & CStr(FIN)
    plage_D = DINIT & ":" & DFIN
    Range(plage_D).Select
    Worksheets("Fihier Master" ).Range(plage_D).FormulaArray = _
    "=RECHERCHEV(Etablissements!$A$2:$A$14;Etablissements!$A$2:$B$14;1;FAUX)"
End Sub
 
 
la derniere bug jpense que les dollars peuvent etre enlevé j'essaie!
 

Reply

Marsh Posté le 13-01-2006 à 12:13:38    

lol j'ai oublie un c a fichier!! comme quoi travailler en 1600*1200 ce pas top parfois!!!!

Reply

Marsh Posté le 13-01-2006 à 12:16:37    

ca marche pas mainteant il me dit impossibilite de definir la prop FormulaArray de la classe range????la ce du foutage de guelle!

Reply

Marsh Posté le 13-01-2006 à 12:42:27    

Fichier Master
 
Et maintenant ?

 
J'ai rien dit


Message édité par Manu la Science le 13-01-2006 à 12:43:12

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 13-01-2006 à 12:46:19    

C'est le range(CFIN) qui ne doit pas lui plaire, je pense...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 13-01-2006 à 13:43:18    

sis ca ce nickel t'inkiet ce juste la derniere ligne qui va pas! et oue pas evident la!!


Message édité par lden le 13-01-2006 à 13:50:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed