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 exportations
Au cours de précédentes astuces, nous avons appris à accéder aux contenus de
fichiers CSV aussi bien en
lecture qu'en
écriture. Mais dans le cas de l'
écriture (For Output) et comme nous l'avions expliqué, le traitement est particulier. Si le fichier n'existe pas, certes il est créé. Mais s'il existe, il est écrasé. En d'autres termes, son ancien contenu est intégralement remplacé par la nouvelle exportation. Avec cette nouvelle astuce, nous allons apprendre Ã
accéder à ces fichiers externes pour
poursuivre l'écriture à la suite du contenu existant, sans l'endommager donc. Il est ainsi question de
consolider les exportations.
Base de données Access à télécharger
Pour la démonstration de la technique, nous proposons d'appuyer l'étude sur une
base de données Access offrant un
formulaire réalisant déjà l'
écriture forcée dans un
fichier externe. Donc, un
code VBA que nous avons bâti précédemment est offert.
Comme vous le constatez, le
fichier de la base de données est accompagné d'un
sous dossier nommé
export. Il est vide pour l'instant. Il est destiné à accueillir le
fichier CSV dans lequel doivent se produire les
consolidations d'exportations des données de différentes tables.
- Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
- Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
Sur la gauche de l'écran, le
volet de navigation indique que cette
base de données est constituée de
quatre tables et d'
un formulaire nommé
fExport.
- Double cliquer sur l'une des tables pour l'ouvrir en mode feuille de données,
Les quatre tables offrent la même structure. Elles sont toutes organisées sur les mêmes noms de champs. Chacune est la suite logique de la précédente dans l'énumération des enregistrements, d'où l'intérêt de les consolider dans un
unique fichier CSV. Comme vous le savez, ce format peut être interprété et géré par n'importe quel logiciel tiers.
- Fermer la table en cliquant sur la croix de son onglet,
- Dans le volet de navigation, double cliquer sur le formulaire fExport pour l'exécuter,
Ce
formulaire offre une
liste déroulante. Elle se nomme
listeTables. Vous pouvez le constater en consultant sa
feuille de propriétés. Elle permet de choisir l'une des tables de la base Ã
exporter en CSV au clic sur le
bouton Exporter. Elle est chargée automatiquement à l'
ouverture du formulaire grâce à un
code VBA parcourant toutes ces tables. Nous l'avons développé à l'occasion d'une astuce précédente.
Sous cette liste déroulante, un
groupe d'options se propose. Il permet de choisir le
mode d'exportation. Il est d'ailleurs nommé
mode. Si l'utilisateur coche la première case, les
données de la table doivent être
consolidées avec les précédentes dans le
fichier CSV externe. S'il coche la seconde case, les
données de la table doivent
remplacer les précédentes dans le
fichier CSV.
Le code VBA d'exportation
Nous l'avons dit, le
code VBA d'une précédente astuce consistant Ã
écrire les données des tables dans un
fichier externe, est déjà attaché au
bouton Eporter. Nous proposons de le résumer rapidement pour mieux comprendre son adaptation mineure à entreprendre.
- 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 sur la droite de l'écran,
- Puis, cliquer sur le petit bouton placé à droite de son événement Au clic,
Ainsi, nous basculons dans l'
éditeur VBA Access, entre les bornes de la
procédure événementielle exporter_Click. Nous définissons l'emplacement et le nom du fichier d'exportation (nomF = CurrentProject.Path & "\export\consolidation.csv"), dans le sous dossier local nommé export donc. Nous accédons aux
enregistrements de la table désignée par l'utilisateur avec la liste déroulante (Set enr = base.OpenRecordset(nomTable)). Nous ouvrons le fichier d'exportation en écriture (Open nomF For Output As #1). Nous parcourons tous les enregistrements de la table jusqu'au dernier (Loop Until enr.EOF). Nous inscrivons chacun, les uns à la suite des autres dans le fichier CSV (Print #1,ligne).
Poursuivre l'écriture
C'est simplement ce
mode d'accès en écriture (For Output) que nous devons adapter en fonction de la case cochée par l'utilisateur sur le formulaire. En l'état, le code est programmé pour écraser les précédentes données. Or, nous souhaitons maintenant permettre de les
consolider.
- Remplacer la ligne Open nomF For Output As #1, par l'instruction conditionnelle suivante :
...
If (mode = 1) Then
Open nomF For Append As #1
Else
Open nomF For Output As #1
End If
...
Si le
contrôle mode vaut 1, cela signifie que c'est la première case qui est cochée. D'ailleurs, elle est cochée par défaut à l'ouverture du formulaire. C'est elle qui invite Ã
consolider les données dans le
fichier externe. Et dans ces conditions, nous changeons le
mode d'accès :
For Append As #1. En
VBA, c'est ce mode qui permet de
poursuivre l'écriture des données à la suite des précédentes. Dans le cas où l'utilisateur coche la seconde case, nous lui permettons d'
écraser les données (For Output As #1), pour
réinitialiser l'écriture.
- Enregistrer les modifications (CTRL + S), puis basculer sur le formulaire (ALT + Tab),
- L'exécuter avec la touche F5 du clavier par exemple,
- Avec la liste déroulante, choisir la table societes1, puis cliquer sur le bouton Exporter,
- Choisir ensuite la table societes2 et cliquer de nouveau sur le bouton Exporter,
Maintenant, si vous ouvrez le
sous dossier export dans l'explorateur Windows, vous constatez la présence du
fichier consolidation.csv.
Si vous consultez le début de son contenu, vous notez la présence des
numéros d'enregistrements de la
première table. Si vous accédez à la fin de son contenu, vous constatez la présence des
numéros d'enregistrements de la
deuxième table. Les données ont donc parfaitement été
consolidées. Bien sûr, vous pouvez continuer d'enrichir ce
fichier externe en exportant tour à tour la troisième et la quatrième table. Mais, si vous cochez la seconde case du formulaire, vous supprimez les anciennes données pour les remplacer par les nouvelles informations exportées.