XL 2010 Projet relance client automatisé

Mister57

XLDnaute Nouveau
Bonjour.

Dans le cadre d'un projet de relance facture clients je fait appel à vous pour m'aider.

Je dispose d'un fichier excel avec en feuille 1 les factures et ses infos, en feuille 2 la base de données. J'ai également 3 fichiers Word qui sont des lettres type de relance niveau 1 2 et 3.

Mon but est de tout automatisé. L'idéal serait que dans la colonne relance apparaisse le type de relance à effectuer (relance 1 après 30 jours, 2ème après 90 jours, 3ème après 180 jours) et lorsque je clique dessus s'ouvre le fichier Word correspondant avec toutes les infos compléter automatiquement (adresse, n° facture, date, montant : j'ai souligné à l'aide de tirets les infos et aux emplacement souhaités).

De plus : est-il possible de mettre une colonne avec le type de relance qui a été effectué et avec la date ?

Si cela est trop complexe, peut-être nous pouvons tout établir lettres + base de données + tableau factures sur des feuilles dans un classeur excel sans utilisé word ?

J'ai essayé de multiples manières, formules, publipostage (mais non directement lié à la ligne de excel) mais mon manque de connaissances n’empêche d'aller jusqu'au bout.

En vous remerciant d'avance, j'espère avoir été clair.
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Bonjour Mister

J'ai un doute concernant le retard en jours; pratiquement 2 ans de retard ça fait un peu trop beaucoup, tu ne trouve pas ??? :eek: :rolleyes:
 

Mister57

XLDnaute Nouveau
En effet c'est beaucoup, mais disons que je travaille avec des clients atypiques comme des collectivités majoritairement et tout un tas de circonstances font que cela retarde les paiements ...
 

Lone-wolf

XLDnaute Barbatruc
D'accord, mais dans ce cas, pourquoi vouloir automatiser tout ça? Un simple publipostage, même si c'est un peu fastidieu au départ, serait plus simple non? Et je doute que tu n'y arrive pas, sur internet il y à beaucoup de tutoriels à ce sujet, suffit de chercher.
 

Mister57

XLDnaute Nouveau
Merci de ton retour. Oui le publipostage avec le bloc adresse j'y arrive. Mais par exemple imaginons pour le client EXEMPLE1 je clique sur R1 qui me renvoie vers le document word Relance1, le publipostage ne prendra pas en compte directement le client EXEMPLE1 il faudra que je cherche parmis toute la liste la bonne adresse. De plus les numéros de factures et montant ne seront pas inscris sur le document word et je devrais alors le remplir manuellement. Je sais pas, si vous arrivez à me comprendre, c'est compliqué. Je pense que c'est possible que lorsque je clique sur R1 cela m'ouvre le fichier word avec toutes les infos du bon client, c'est cela que je ne sais pas par où commencer.
 

Lone-wolf

XLDnaute Barbatruc
Re

Je te propose ceci. Dans chaque document Word crée des signets (adresse, code postal, ville etc) + des signets pour la date de facture, date échéance, numéro de facture, somme etc. Ensuite

VB:
Sub WordDoc()
'Activer les références Microsoft Word et Outlook 14.0 Object Library
    Dim oApp As Word.Application, doc As Word.Document
  Range("A2").Select
    On Error Resume Next
    nf = ThisWorkbook.Path & "\modele.doc"
    Set oApp = CreateObject("Word.Application")
    oApp.Visible = True
    Set doc = oApp.Documents.Open(nf)
    If Err <> 0 Then
      MsgBox "Le fichier doit être dans " & ThisWorkbook.Path, , "Contacts Outlook"
      Exit Sub
    End If
    On Error GoTo 0        ' Annule la gestion d'erreur
    '--
    titre = TextBox1.Value
    nom = TextBox2.Value
    rue = TextBox3.Value
    codepostal = TextBox4.Value
    ville = TextBox5.Value
    civilité = TextBox1.Value
    '--
    With doc
      .Bookmarks("titre").Range.Text = titre
      .Bookmarks("civilité").Range.Text = titre
      .Bookmarks("nom").Range.Text = nom
      .Bookmarks("rue").Range.Text = rue
      .Bookmarks("codepostal").Range.Text = codepostal
      .Bookmarks("ville").Range.Text = ville
      .Bookmarks("title").Range.Text = titre
    End With
    nom_doc = ThisWorkbook.Path & "\" & nom & ".doc"
    doc.SaveAs nom_doc
        doc.ExportAsFixedFormat OutputFileName:= _
        ThisWorkbook.Path & "\Pdf-doc\" & nom, ExportFormat:=wdExportFormatPDF
    nom_pdf = ThisWorkbook.Path & "\Pdf-doc\" & nom & ".pdf"
    oApp.Quit
    '------------------------ envoi par mail
    Dim olApp As Outlook.Application
    Dim Objet As Object
    Dim Msg As MailItem
    Dim strline As String
    strline = "Bonjour" & " " & TextBox1 & ","
    Set olApp = New Outlook.Application
    Set Msg = olApp.CreateItem(olMailItem)
    Msg.To = TextBox9.Value
    Msg.Subject = ""
    Msg.Body = ""
    Msg.Attachments.Add Source:=nom_doc
    Msg.Display
    Set olApp = Nothing
    ActiveCell.Offset(1, 0).Select
  Set Objet = CreateObject("Scripting.FileSystemObject")
  Objet.movefile nom_doc, ThisWorkbook.Path & "\Word-doc\"
End Sub
Bien entendu le code devra être adapter à tes besoins.
 

Mister57

XLDnaute Nouveau
Merci pour ton retour. Je vais essayer de suite. Peut-tu m'expliquer ce que c'est que ce code ? Où l'insérer ? J'en ai jamais fait ni utilisé, il y a encore quelques mois je n'avais jamais utilisé excel de ma vie, je dois m'efforcer de comprendre et apprendre. Je suis désolé de t'en demander autant.

Merci beaucoup je vais chercher comment fonctionne tout cela.
 

Lone-wolf

XLDnaute Barbatruc
Une fois les signets créer, la macro se chargera de remplir les champs de Relance1 par exemple et fera une sauvegarde du document. On peux faire 2 macro une pour créer les document, l'autre pour la création et l'envois par Outlook. Pour les signets, attention à bien les nommer. Ici par exemple à la place de TextBox1 tu met

With Feuil1
titre = .Range("g2")
adresse= .Range("f4")
Etc.
End with
 

Mister57

XLDnaute Nouveau
Très bien je vais voir tout ça. Actuellement j'y comprends rien tu dois te dire que je suis vraiment débile lol. Je pense il me faut un peu de temps pour fouiller tout ça. La dans les signets j'ai juste un nom à mettre à ajouter et voilà je n'ai pas textbox1
 

Lone-wolf

XLDnaute Barbatruc
Mister, tu as lu mon précédent message? :rolleyes: Apparemment pas.

Voici pour commencer, le fichier qui permet d'ouvrir les relances. Pour ce faire, clique sur une de celle-ci pour afficher le document. Extrait le dossier sur le bureau.
 

Fichiers joints

Mister57

XLDnaute Nouveau
Très bien ça marche. Maintenant il faut que je fasse en sorte qu'en cliquant sur ces relances, ça remplisse les signets que je dois mettre sur les fichiers words ?
 

Lone-wolf

XLDnaute Barbatruc
Oui et pour celà(et pour plus de facilité), j'ai modifier le fichier. Mis à part la colonne de date de relance, tu peux cliquer dans les colonnes A - C et D, ça vas filtrer les données, clique sur une cellule vide pour supprimer le filtre. En plus, le nom de la novelle société viendra s'incrire dans la colonne respective.

Dans la macro

VB:
With Sheets("BDD")
'Attention la cellule active doit être relance sinon erreur.
rw  = Application.Match(ActiveCell.value,  .Columns(1), 0)
nom = .Cells(rw, 2)
adresse=.Cells(rw, 3)
codepostal = .Cells(rw, 4)
Etc.
'Pour les dates et montants, avec,Offset, les colonnes coomence de 0 à 9, donc
'A = 0 - B = 1 - C = 3 - D = 4 - E = 5 etc.
factureNum = activecell.offset(0, 2)
DateFacture = ActiveCell.Offset(0, 4)
etc.
End with
 

Fichiers joints

Dernière édition:

Mister57

XLDnaute Nouveau
Merci pour tout, mais je dois avouer que je suis largué. Je sais très bien que tu as fait tout simplement ce que j'aurais aimer savoir faire mais là j'y comprends rien. Je suis désolé. Je sais pas ou faut que je fasse ce code, ce qu'il y a à remplacer, ou le mettre comment le faire marcher, l'enregistrer.
Les relances ne s'affichent désormais plus en fonction du nombre de jours de retards alors ?
Je pense que c'est d'un trop haut niveau pour moi ces histoires de signets, vba, macro je suis perdu désolé.
 

Lone-wolf

XLDnaute Barbatruc
Si tu as préparé toute les lettres, liste-moi les noms des signets que tu as mis et à quoi il correspondent . Je verrai celà ensuite en fin de journée.
 

Mister57

XLDnaute Nouveau
1) J'ai placé les signets aux endroits auxquels j'aimerais qu'ils apparaissent sur les documents Words. Leurs dénominations correspondent à l'information qu'elle doivent prendre du tableau excel. (A noter que reference_facture1, reference_facture2, reference_facture3 sont la même info, la même référence c'est parce que je pouvais pas mettre le même signet à plusieurs endroits.)

2) J'ai indiqué dans le tableau excel ce que j'aimerais pour être le plus clair possible.

A ce soir. Encore merci de votre bonne volonté.
 

Fichiers joints

Mister57

XLDnaute Nouveau
Mon dieu, si vous vous auriez vu ce sourire sur mon visage en essayant d'ouvrir le fichier, oui dans ceux que je vous avais renvoyez j'ajoutais l'adresse, nom, code postal et ville en destinataire à droite sur les documents word (là où j'ai mis les signets). La dernière étape c'est vis-à-vis des relances. Je m'explique la formule suivante ne peut plus entrer en compte pour définir les relances ? =SI(F1+180<AUJOURDHUI();"Relance3");SI(F1+90<AUJOURDHUI();"Relance2");SI(F1+30<AUJOURDHUI();"Relance1");"En attente")))

Edit : ça m'ouvre Word mais avec plus rien dedans, c'est grisé.
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Mister

La première partie est terminée, après multiples déboirs avec les signets que j'ai dû réécrire car il ne prenaient pas en consideration la macro. Il y à dix minutes j'ai refait un nouveau test et tout était OK. Maintenant pour la formule, pas besoin de la mettre; tu as déjà la formule dans colonne date de relance, et c'est avec celle-ci que je vait faire la macro en disant que, si la date du jour est égale à la date de la cellule, alors lancer la macro.

Mais il y a encore un petit souci, pour le numéro de la facture en pièce jointe, il n'y a pas de colonne inscrite et dans la macro j'ai mis pour l'instant relance.Offset(0, 2).Value & "-RP 02", c'est à dire n° de facture en colonne c + "-RP 02". J'ai pensé à faire un numéro automatique pour celle-ci, je ne sais pas si tu est daccord, j'attends ton retour à ce sujet.
 
Dernière édition:

Discussions similaires


Haut Bas