Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problèmes macro édition de courriers Excel-Word

benadry

XLDnaute Occasionnel
Bonsoir,

Tout nouveau sur ce forum, je me permets de vous exposer mon problème, car je pense que vous pourrez y trouver une solution.
Je cherche, à partir d’un fichier Excel, à générer automatiquement des courriers sous Word, qui peuvent être différents selon les cas (macros variant selon les résultats d'une liste déroulante).
En allant voir dans différents forums, j’ai réussi à créer les macros qui génèrent les courriers, j’ai mis des signets … Tout fonctionne parfaitement.
Seulement, je cherche depuis plusieurs jours à résoudre plusieurs problèmes qui empêchent mon projet d’aboutir. Je suis loin d’être un pro des macros. Ceci explique donc cela !

1°) La 1ère partie de code (de Private Sub Worksheet_Change(ByVal Target As Range) à End Sub) fonctionne parfaitement. Tant que la colonne N n’est pas atteinte, il ne se passe rien.
En revanche, la macro Vérification_Complétude fonctionne très bien, mais ne se lance pas automatiquement.
Pourriez-vous me dire comment faire pour que, quand l’utilisateur met « Oui » dans la colonne AE (colonne 31), la macro se déclenche ? Je sais qu’on ne peut pas mettre plusieurs Private Sub Worksheet_Change, mais je ne sais pas comment faire autrement.

2°) Dans la même macro, j’ai une msgbox qui indique les colonnes qui doivent être imprimées. Comme il y en a beaucoup, je voudrais que l’utilisateur sache quelles colonnes sont vides. Je complète ma msgbox comme ceci : "Or, vous n'avez pas rempli la/les colonne(s) :". Mais, je ne sais pas comment dire « si telle case est vide, mets le titre de la colonne ». J’ai essayé avec des « if », à l’intérieur de la msgbox, mais ça ne fonctionne pas. Cela peut se répéter jusqu’à 13 fois, en fonction du non remplissage des colonnes.
Là aussi, comment pourrais-je faire ?

3°) Enfin, je voudrais que la macro d’édition de courrier se lance à chaque fin de ligne, quand l’utilisateur a fini de remplir les informations. Pour l’instant, quelle que soit la ligne, seules les données de la ligne 4 sont imprimées. Forcément, puisque c’est ce que je lui demande ! Mais, je ne sais pas comment faire autrement ? Il faut aussi que je modifie la macro VérificationComplétude et la Private Sub Worksheet_Change(ByVal Target As Range). Mais, comment faire ? Peut-être une boucle ?


Mon Code est le suivant :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 14 Then Exit Sub
If [N4] <> "" And [O4] <> "" Then
Dim Rep As Integer
Rep = MsgBox("Vous avez saisi le n° d'identifiant suivant" & vbLf & [N4] & "." & vbLf & "Cela a généré la clé" & vbLf & [O4] & "." & vbLf & "Confirmez-vous ces informations ?", vbOKCancel + vbQuestion)
If Rep = vbOK Then Exit Sub
If Rep = vbCancel Then Range("N4").ClearContents
End If

End Sub

Sub VérificationComplétude()
If [AE4] = “Oui” And [A4] = "" Or [C4] = "" Or [D4] = "" Or [E4] = "" Or [G4] = "" Or [H4] = "" Or [J4] = "" Or [K4] = "" Or [P4] = "" Or [R4] = "" Or [Y4] = "" Or [Z4] = "" Or [AA4] = "" Then
Dim Rep As Integer
Rep = MsgBox("Attention, " & [AA4] & " !" & vbLf & "Pour que le courrier soit imprimé, il faut que les colonnes suivantes soient renseignées : " & vbLf & "- 1°) " & [$A$3] & "," & vbLf & "- 2°) " & [$C$3] & "," & vbLf & "- 3°) " & [$D$3] & "," & vbLf & "- 4°) " & [$E$3] & "," & vbLf & "- 5°) " & [$G$3] & "," & vbLf & "- 6°) " & [$H$3] & "," & vbLf & "- 7°) " & [$J$3] & "," & vbLf & "- 8°) " & [$K$3] & "," & vbLf & "- 9°) " & [$P$3] & "," & vbLf & "- 10°) " & [$Q$3] & "," & vbLf & "- 11°) " & [Y3] & "," & vbLf & "- 12°) " & [Z3] & "," & vbLf & "- 13°) Départ de l'impression." & vbLf & "Or, vous n'avez pas rempli la/les colonne(s) :", vbOKOnly + vbExclamation)
Else
DemandeInstruction
End If
End Sub

‘Lancement de la macro
Sub LancementMacro()
If [R4] = "Macro1" Then Macro1
If [R4] = "Macro2" Then Macro2

End Sub

Pour chacune de ces macros, j’ai répété le même code. Exemple :
Sub Macro1()
'Déclaration des variables
Dim wApp As Word.Application
Dim oDoc As Word.Document
'Affectation des données aux variables
Set wApp = New Word.Application
Set oDoc = wApp.Documents.Add("G:\...\Macro1.doc")
'Affectation des données Excel aux signets
oDoc.Bookmarks("Type1").Range.Text = ActiveWorkbook.ActiveSheet.Range("C4")
oDoc.Bookmarks("Localisation").Range.Text = ActiveWorkbook.ActiveSheet.Range("D4")
oDoc.Bookmarks("Adresse").Range.Text = ActiveWorkbook.ActiveSheet.Range("E4")
oDoc.Bookmarks("Complément").Range.Text = ActiveWorkbook.ActiveSheet.Range("F4")
oDoc.Bookmarks("CP").Range.Text = ActiveWorkbook.ActiveSheet.Range("G4")
oDoc.Bookmarks("Ville").Range.Text = ActiveWorkbook.ActiveSheet.Range("H4")
oDoc.Bookmarks("Traité_par").Range.Text = ActiveWorkbook.ActiveSheet.Range("Z4")
oDoc.Bookmarks("Type2").Range.Text = ActiveWorkbook.ActiveSheet.Range("P4")
oDoc.Bookmarks("Prénom").Range.Text = ActiveWorkbook.ActiveSheet.Range("K4")
oDoc.Bookmarks("Nom").Range.Text = ActiveWorkbook.ActiveSheet.Range("J4")
oDoc.Bookmarks("Date_étab").Range.Text = ActiveWorkbook.ActiveSheet.Range("A4")
oDoc.Bookmarks("Interv").Range.Text = ActiveWorkbook.ActiveSheet.Range("AA4")
oDoc.Bookmarks("Ref").Range.Text = ActiveWorkbook.ActiveSheet.Range("Y4")
'Rendre Word Visible
wApp.Visible = True
'Impression du document
oDoc.PrintOut
' Fermeture du document
wApp.ActiveDocument.Close (False)
' Fermeture de Word
wApp.Quit
End Sub

Je vous remercie beaucoup pour l’aide que vous pourrez m’apporter, car je patauge vraiment !! Je préfèrerais ne pas vous transmettre le fichier, car il contient des données confidentielles. Mais, si besoin, je vous le transfèrerai en les enlevant.
Je m’excuse par avance si les questions que je soulève ont déjà été traitées.

Bonne soirée.
 

benadry

XLDnaute Occasionnel
Re : Problèmes macro édition de courriers Excel-Word

Bonjour Yaloo,

1°) Je t’envoie deux fichiers Word afin que tu puisses tester. Les signets n’apparaissent pas, mais ils sont bien présents et fonctionnent correctement.
2°) pour le 2e point de mon message d’hier à 18h38, quand je saisis une donnée en N4 et que je la confirme, tout va bien. Quand je l’infirme, il efface la cellule N4. Tout va bien.
Quand je saisis en N5 et que je confirme, tout est OK. Quand j’infirme, il efface N4. Ca me semble normal, puisque le code indiqué est « If Rep = vbCancel Then Range("N4").ClearContents ».
J’ai donc voulu le changer et je l’ai remplacé par « If Rep = vbCancel Then Cells(Ligne, 14).ClearContents ». C’est là que les problèmes commencent. Quand je tape en N5 et que j’infirme les données, apparaît la msgbox "Vous avez saisi le n° d'identifiant suivant [vide]. Cela a généré la clé [vide]. Confirmez-vous ces informations ?". Tant que je n’ai pas cliqué sur OK, la msgbox apparaît.
Pour information, j’ai bien testé sur ton dernier fichier (celui de 18h30).

Merci pour ton aide et bonne journée.
 

Pièces jointes

  • Opposition_acceptation.docx
    14.8 KB · Affichages: 28
  • Opposition_refus.docx
    14.8 KB · Affichages: 26
Dernière édition:

benadry

XLDnaute Occasionnel
Re : Problèmes macro édition de courriers Excel-Word

Re-,

Je viens de tester l'une des macros d'impression de courriers et visiblement il n'aime pas : "oDoc.Bookmarks("Type_créancier").Range.Text = ActiveWorkbook.ActiveSheet.Range("C" & Ligne)", d'où l'erreur d'exécution 1004. En effet, j'ai remis ("C4") au lieu de ("C" & Ligne) et ça a passé. En revanche, il a buggé dès la ligne suivante que je n'avais pas touchée.

Voilà un début d'explication. En revanche, comment régler ça ... ??

A te relire.
 

Yaloo

XLDnaute Barbatruc
Re : Problèmes macro édition de courriers Excel-Word

Bonsoir benadry, le forum,

Voici un fichier corrigé, normalement les 2 erreurs sont supprimées.

Pour l'envoi vers le fichier Word, si ça ne fonctionne pas, récupère les 4 premières lignes de chaque macros sur un de tes anciens fichiers, j'ai été obligé de modifier car chez moi, ça ne fonctionnait pas. N'oublies pas non plus de modifier le chemin d'accès aux fichiers. Pour mes tests, j'ai mis ThisWorkBook.path de façon à prendre le répertoire où se trouve ton fichier BDO_2 - V1.1.

A te relire

Martial
 

Pièces jointes

  • BDO_2 - V1.1.xlsm
    344.6 KB · Affichages: 57
  • BDO_2 - V1.1.xlsm
    344.6 KB · Affichages: 69
  • BDO_2 - V1.1.xlsm
    344.6 KB · Affichages: 73

benadry

XLDnaute Occasionnel
Re : Problèmes macro édition de courriers Excel-Word

Bonjour Yaloo,

Je viens de tester et ça marche impeccable ! Merci beaucoup. Sans ton aide, je n'y serais jamais arrivé.

J'ai encore quelques autres petites questions en réserve, mais pourrais-tu regarder le 2) de mon message d'avant-hier à 18h38. En effet, dans le message d'alerte "vous n'avez pas rempli toutes les colonnes", au lieu de mettre le nom des colonnes (qui se trouvent en ligne 3 du tableau), il me donne les lettres des colonnes (exemple : au lieu de "référence", il met "Y").

En tout cas, merci encore.


Bonne journée à toi.
 

Yaloo

XLDnaute Barbatruc
Re : Problèmes macro édition de courriers Excel-Word

Bonjour benadry, le forum,

Voici le fichier modifié.

A+
 

Pièces jointes

  • BDO_2 - V1.1.xlsm
    349.9 KB · Affichages: 33
  • BDO_2 - V1.1.xlsm
    349.9 KB · Affichages: 40
  • BDO_2 - V1.1.xlsm
    349.9 KB · Affichages: 38

Discussions similaires

Réponses
4
Affichages
450
Réponses
10
Affichages
304
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…