formateur informatique

Exporter à la suite sans écraser en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Exporter à la suite sans écraser en VBA Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
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,
Données de table Access à consolider à la suite dans un fichier CSV en VBA

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,
Formulaire Access pour exporter les données à la suite dans un fichier CSV

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.

Exporter les enregistrements de table dans un fichier CSV en VBA Access

Exportation des données à la suite en VBA Access

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.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn