Outils Les bricolages de Heffgé

Carnet d'adresses et enveloppes

Certains des destinataires à qui l'on envoi régulièrement du courrier peuvent avoir une adresse compliquée et rédiger la suscription sur l'enveloppe finit par être fastidieux. Imprimer l'enveloppe à partir d'un document Word peut alors se révéler pratique. Au besoin on en crée un par destinataire.

La mini application proposée ici permet de n'avoir qu'un seul document Word, en fait un modèle, et de rédiger automatiquement la suscription à partir d'un carnet d'adresses.

Il est écrit en VBA et se compose de deux fichiers, un exemple de modèle Word et une feuille de calcul Excel embarquant le code et jouant le rôle de carnet d'adresse.

Le modèle Word

Chacun peut créer son propre modèle correspondant au format de ses enveloppes et utiliser la police de caractères de son choix. Ce modèle peut aussi être celui d'une lettre à insérer dans une enveloppe à fenêtre. Le seul impératif est qu'il comporte 5 champs, chacun correspondant à une ligne de la suscription. Ce nombre est en principe suffisant pour couvrir tous les cas de figure. Il devra être enregistré sous le nom env.dot dans le répertoire par défaut où sont stockés les modèles Word. Le choix d'un autre emplacement nécessite que le code soit adapté en conséquence.

La copie d'écran ci-dessous correspond au fichier proposé en téléchargement. On y a fait apparaître les codes de champ qui habituellement sont masqués. L'enveloppe est au format commercial standard et la police est du Comic sans empâtement en 12 points.

Modèle Word

La feuille de calcul Excel

Exemple de remplissage :

Feuille Excel

Cet exemple est le prototype à télécharger . La première ligne contient les en-têtes de colonnes et la première colonne la liste des destinataires. Les 5 colonnes suivantes contiennent le détail de la suscription pour chacun des destinataires. Cette disposition ne peut pas être modifiée sans avoir à intervenir sur le code embarqué. L'exploration du contenu de cette feuille de calcul s'arrêtant à la première ligne vide celles-ci doivent donc être contigües.

La ligne "Autre" avec tous ses champs vides génère un document vierge afin de pouvoir saisir manuellement la suscription.

Utilisation

Un double clic sur le nom du fichier contenant le classeur Excel lance cette mini application qui affiche alors une fenêtre permettant de choisir un destinataire.

Choix destinataire

Le bouton Mise à jour permet de sortir de l'application et d'afficher la feuille de calcul pour la modifier. Le bouton Annuler ferme l'application. Le bouton Continuer lance Word et y crée le document basé sur le modèle env.dot où figure la suscription correspondant au destinataire choisi. Il ne reste plus qu'à l'imprimer si on le souhaite.

Voici le résultat pour le destinataire "Impôts" :

Résultat

Téléchargement

Le modèle Word montré ici ainsi que le prototype de feuille de calcul Excel ont été réunis dans une archive au format zip.

Télécharger le fichier zip
(clic droit)

Le code VBA

Il se décompose en deux parties, celle liée à la feuille de calcul et celle gérant la fenêtre de choix du destinataire.

Feuille de calcul

Public dest As String, ret As Integer
Dim i As Integer, ligne(4) As String, MonWord As Object

Private Sub Workbook_Open()

'cacher classeur
Application.Visible = False

'afficher boîte de dialogue
Choix_dest.Show

'fermer Excel si annulation
If ret = 4 Then
Application.Quit
End If

'montrer classeur si MàJ
If ret = 2 Then
Application.Visible = True
End If

'ouvrir Word si continuer
If ret = 1 Then
For i = 0 To 4
ligne(i) = ActiveSheet.Cells(dest + 1, i + 2).Value
Next
Set MonWord = CreateObject("Word.Application")
MonWord.Visible = True
MonWord.Documents.Add template:="env.dot"
Set champs = MonWord.activedocument.Fields
For Each champ In champs
i = champ.Index - 1
champ.Result.Text = ligne(i)
Next
Application.Quit
End If

End Sub

Formulaire

Dim i As Integer, cont As Boolean

Sub UserForm_Initialize()

'remplissage liste déroulante choix
i = 2
cont = True
Do While cont = True
If IsEmpty(ActiveSheet.Cells(i, 1)) = False Then
Choix_dest.choix.AddItem ActiveSheet.Cells(i, 1).Value
i = i + 1
Else
cont = False
End If
Loop

'présélection 1ere ligne
choix.Selected(0) = True

End Sub
Sub Bout_cont_Click()

'ouvrir doc word
ThisWorkbook.ret = 1
ThisWorkbook.dest = choix.ListIndex + 1
Unload Choix_dest

End Sub

Sub Bout_maj_Click()

'montrer feuille
ThisWorkbook.ret = 2
Unload Choix_dest

End Sub
Sub Bout_annul_Click()

'annuler
ThisWorkbook.ret = 4
Unload Choix_dest

End Sub

Chacun est libre d'en faire ce que bon lui semble.

 

 

Toutes les pages du site Les autres sites

accueil
carnet d'adresses et enveloppes
comparaison de dossiers
connexion/déconnexion
contenu d'un dossier
contrôle GPO
conversion ASCII/ANSI
débrider une Livebox SAGEM ou Inventel ancien modèle
gérer un fichier à générations dans un .bat
les pilotes oubliés
mise à la date et à l'heure automatique
nettoyage et arrêt Windows 9x
orthodromie
vidage du répertoire Temp utilisateur et suppression des fichiers temporaires Internet Explorer (Windows XP et Windows 7)
quelques macros pour Word

Tentatives de bonnes réponses à des questions qui peuvent ne pas l'être

 

Le DOS sied