Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Consolider les données Access dans Word
Le volet précédent nous avait appris Ã
exporter les données d'une
table Access dans un
tableau d'un
nouveau document Word. Cette nouvelle astuce va démontrer comment
consolider les données en
exportant les informations d'une
autre table, Ã la suite des
précédentes exportations, dans le
tableau Word déjà construit.
Base de données Access à télécharger
Pour ce nouveau développement, il est opportun d'appuyer l'étude sur les travaux précédents.
Vous le constatez, la décompression livre le
fichier de la base de données, accompagné d'un
sous dossier nommé
export. Celui-ci est encore vide pour l'instant. C'est lui quoi doit accueillir le
document Word destiné à réceptionner les
exportations Access.
- Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
- Cliquer alors sur le bouton Activer le contenu du bandeau de sécurité,
- Dans le volet de navigation sur la gauche, double cliquer sur le formulaire fExport,
Ainsi, nous exécutons le
formulaire Access. Nous le connaissons déjà . Une
liste déroulante propose de choisir parmi l'
une des tables à exporter depuis cette
base de données. Un clic sur le
bouton Exporter doit insérer les données de la table désignée dans les
cellules d'un tableau Word. Mais ce
mode d'exportation doit désormais varier en fonction de la case qui est cochée en-dessous de la liste déroulante. Lorsque la deuxième case est cochée, ces informations doivent être exportées dans un
tableau d'un
nouveau document Word. Lorsque la première case est cochée, l'exportation doit se poursuivre dans le
document Word existant, à la suite des données déjà insérées dans les
lignes de son tableau. C'est tout l'enjeu de ce volet et ce groupe de case d'options se nomme
mode.
Ouvrir un document existant
L'objectif de ce sujet consiste à adapter le code du développement précédent qui avait permis d'
exporter les données d'une
table Access dans un
tableau d'un
nouveau document Word. Désormais, si la première case est cochée, ce document doit être ouvert pour
poursuivre l'exportation.
- A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans les propositions, choisir le mode Création,
- Sur le formulaire en conception, cliquer sur le bouton Exporter pour le sélectionner,
- Dès lors, activer l'onglet Evénement de sa feuille de propriétés,
- Puis, cliquer sur le petit bouton associé à son événement Au clic,
De cette manière, nous basculons dans l'
éditeur VBA Access entre les bornes de la
procédure événementielle exporter_Click.
Nous récupérons tout d'abord le
nom de la table choisie et construisons le
chemin d'accès au fichier Word à créer ou à ouvrir :
nomTable = listeTables.Value
nomF = CurrentProject.Path & "\export\donnees.docx"
Ensuite, nous initialisons les objets pour piloter les
enregistrements de la
base de données en cours :
Set base = CurrentDb()
Set enr = base.OpenRecordset(nomTable)
Set table = base.TableDefs(nomTable)
Puis, nous créons une
nouvelle instance de Word, pour l'instant pour pouvoir insérer des données dans un
nouveau document. Et c'est précisément sur les lignes de code qui suivent que la première adaptation doit intervenir. Si la première case est cochée, il n'est pas question d'exporter dans un nouveau document. Il est question d'
exporter à la suite dans le
document existant.
- Adapter les lignes de code qui suivent de cette manière :
If(mode = 2) Then
instanceW.Documents.Add DocumentType:=wdNewBlankDocument
instanceW.Selection.PageSetup.Orientation = wdOrientLandscape
instanceW.Selection.Tables.Add instanceW.Selection.Range, 1, 4, wdWord9TableBehavior
compteL = 1
Else
instanceW.Documents.Open nomF
compteL = instanceW.ActiveDocument.Tables(1).Rows.Count
End If
Si la seconde case est cochée (If (mode = 2) Then), nous conservons le code VBA précédent. Il crée un
nouveau tableau de quatre colonnes dans un
nouveau document Word. Dans le cas contraire, nous exploitons la
méthode Open de la
collection VBA Word Documents pour ouvrir le fichier (nomF) de l'exportation précédente. Et grâce à la
propriété Count de la
collection Rows de l'
objet Tables, nous stockons le
nombre de lignes de ce tableau dans la
variable compteL. C'est elle qui indique à partir de quelle ligne l'inscription des données doit se faire. Grâce à ce renseignement, nous allons pouvoir insérer des nouvelles lignes après la dernière, dans le tableau existant.
Grâce à ce subterfuge, nous ne touchons pas aux deux boucles qui suivent. La
boucle For Each permet de créer les
entêtes du tableau Word avec les
noms des champs de la
table Access. La
boucle Do permet de
parcourir les enregistrements et de les
insérer à la suite. Dans le cas d'un
nouveau document, l'exportation démarre après la ligne d'entête. Dans le cas d'une consolidation, l'insertion reprend à partir de la dernière ligne existante, grâce à cette
variable compteL réajustée. En effet, à chaque passage dans cette boucle, c'est la
méthode InsertRowsBelow qui est utilisée pour créer une nouvelle ligne dans le tableau, après la dernière :
instanceW.Selection.Tables(1).Cell(compteL,4).Select
instanceW.Selection.InsertRowsBelow 1
Sauvegarder les exportations
Il nous reste cependant un dernier ajustement à opérer. Lorsqu'il s'agit d'une
consolidation de données, il n'est plus question d'enregistrer le document Word sous un nom à définir. Il s'agit simplement d'
enregistrer le document existant.
- Sous la boucle Do, adapter la ligne de sauvegarde, comme suit :
If(mode = 2) Then
instanceW.ActiveDocument.SaveAs2 nomF, wdFormatDocumentDefault
Else
instanceW.ActiveDocument.Save
End If
C'est simplement la
méthode Save de l'
objet ActiveDocument qui permet d'
enregistrer les modifications du document en cours.
Exporter la première table
L'adaptation du
code VBA Access est déjà terminée. Il est donc temps de tester son bon fonctionnement.
- Enregistrer les modifications (CTRL + S) et basculer sur le formulaire Access (ALT + Tab),
- L'exécuter en enfonçant par exemple la touche F5 du clavier,
- Avec la liste déroulante, choisir la première table (societes1),
- Puis, cliquer sur le bouton Exporter,
Après quelques secondes de traitement, vous voyez un message de confirmation apparaître.
- Cliquer sur le bouton Ok pour fermer cette boîte de dialogue,
- A la racine du dossier de décompression, double cliquer sur le sous dossier export pour l'ouvrir,
Comme vous pouvez le voir, il n'est plus vide. Il accueille un
fichier Word assez volumineux, nommé
donnees.docx.
- Double cliquer sur ce fichier pour l'ouvrir dans Word,
Le
tableau des exportations apparaît et il est parfaitement construit. Si vous atteignez la dernière page, vous constatez que le tableau se conclut par l'activité nommée
La Casa située dans Les Deux Alpes.
Consolider les exportations
Cette remarque est importante. Nous allons voir si nous sommes en mesure de poursuivre l'exportation des nouvelles données précisément à partir de ce point.
- Fermer le document Word en cliquant sur la croix de sa fenêtre,
- Revenir sur le formulaire Access,
- Avec la liste déroulante, choisir la table societes2,
- Cocher la première case (A la suite),
- Puis, cliquer de nouveau sur le bouton Exporter,
Après le message de confirmation, si vous rouvrez le
fichier Word, vous constatez que le
tableau s'est considérablement enrichi. Et si vous atteignez la dernière ligne de l'exportation précédente, vous remarquez que les données de la nouvelle table ont parfaitement été
consolidées à la suite.