formateur informatique

Ouvrir un fichier CSV dans Excel en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Ouvrir un fichier CSV dans Excel 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    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Ouvrir un fichier Csv dans Excel

A l'occasion du volet précédent, nous avons appris à exporter les données de tables Access dans des fichiers Csv parfaitement structurés et prêts à l'emploi. Dans cette suite logique, nous proposons de commander l'ouverture automatique dans Excel des données ainsi exportées dans ce format.

Base de données Access à télécharger
Pour poursuivre ce développement, nous suggérons fort logiquement de récupérer la base de données du volet précédent. Comme vous le constatez, la décompression livre le fichier de la base de données accompagné d'un sous dossier nommé exports. Selon le code VBA Access déjà en place, c'est lui qui doit accueillir les données de tables exportées au format Csv.
  • Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
  • Dès lors, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation, double cliquer sur le formulaire fQuestions pour l'ouvrir,
  • Sur le formulaire, déployer la liste déroulante qui se propose,
Liste déroulante des tables Access à exporter au format CSV en VBA

Comme vous pouvez le voir, elle offre de choisir parmi l'un des noms de tables énumérés dans le volet de navigation. Il s'agit d'anciens questionnaires destinés à une application d'évaluation. Si vous choisissez l'un d'entre eux et que vous cliquez sur le bouton Exporter du dessous, ses informations sont converties au format Csv et se retrouvent stockées dans le sous dossier exports de l'application.

Poursuivre le code VBA
Nous l'avons dit, le code VBA permettant d'exporter les informations de tables au format Csv, existe déjà. Nous devons l'enrichir pour qu'il soit en mesure d'ouvrir dans l'enchaînement de l'exportation, les fichiers générés dans Excel.
  • 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,
Comme une procédure événementielle est déjà attachée à ce bouton, nous basculons directement dans l'éditeur VBA Access et plus précisément dans les bornes de la procédure exporter_Click. exporter est le nom du bouton. Click est son événement associé. Son code se déclenche donc au clic sur le bouton Exporter. Cette procédure se charge de parcourir tous les enregistrements de la table désignée, de recomposer les lignes du fichier Csv en séparant les informations de champs par des délimiteurs et d'exporter le résultat sur le disque.

Variable d'application Excel
Nous devons enrichir cette procédure pour proposer l'ouverture automatique de cette exportation Csv dans Excel. Et pour cela, nous avons besoin d'un objet permettant de piloter une instance d'Excel. Private Sub exporter_Click()
Dim base As Database: Dim enr As Recordset
Dim nomTable As String: Dim ligne As String
Dim nomF As String: Dim memLibre As Integer
Dim fExcel As Object: Dim reponse As Byte
...


Nous déclarons la variable fExcel comme un objet au sens large. C'est elle qui doit instancier la classe pour hériter des propriétés et méthodes permettant de piloter une instance d'Excel. Puis, nous déclarons la variable reponse comme un entier court (Byte). Nous décidons de demander à l'utilisateur s'il souhaite ou non ouvrir le fichier Csv dans Excel, à l'issue de l'exportation. C'est elle qui doit donc récolter sa réponse (traduite en chiffre par VBA), pour adapter la suite du traitement.

Questionner l'utilisateur
Cette demande doit être réalisée à la fin du traitement, une fois l'exportation terminée. La fonction VBA MsgBox permet d'afficher une boîte de dialogue avec des boutons à définir. Un clic sur l'un de ces boutons renvoie une valeur numérique différente. C'est cette valeur que nous devons évaluer pour décider de la suite des actions. Donc une instruction conditionnelle est nécessaire.
  • Après le dernier End If et avant le End Sub, ajouter les instructions VBA suivantes :
...
Set enr = Nothing
End If

reponse = MsgBox("Souhaitez-vous ouvrir le fichier généré dans Excel ?", vbYesNo + vbQuestion)
If reponse = 6 Then

End If


End Sub
...


Dans la variable nommée reponse, nous stockons la valeur du bouton cliqué par l'utilisateur sur la boîte de dialogue. Dans cette boîte de message, nous greffons deux boutons Oui et Non (vbYesNo) accompagnés de l'icône de la question (+ vbQuestion). Si l'utilisateur clique sur Oui, la valeur retournée est le chiffre 6. S'il clique sur non, la valeur retournée est 7.

Ouvrir le fichier Csv dans Excel
Si la variable reponse renferme le chiffre 6 (If reponse = 6 Then), nous décidons donc de poursuivre le traitement. Dans ces conditions, il est question d'ouvrir le fichier Csv dans Excel grâce à notre objet fExcel. Le chemin d'accès au fichier Csv est stocké dans la variable nomF. Nous devons forcément l'exploiter.
  • Dans les bornes de l'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
If reponse = 6 Then
Set fExcel = CreateObject("Excel.Application")
fExcel.Visible = True
fExcel.Workbooks.Open nomF, Format:=4, local:=True
Set fExcel = Nothing

End If
...


Nous initialisons (Set) tout d'abord l'objet fExcel, en instanciant la classe Excel. Pour cela, nous exploitons la fonction VBA CreateObject avec la valeur Excel.Application en paramètre. Dès lors, nous exploitons premièrement sa propriété héritée Visible que nous réglons à True. En effet, nous souhaitons afficher le Csv dans Excel. Nous ne souhaitons pas l'ouvrir en tâche de fond, soit en mémoire. Puis, nous exploitons la méthode Open de sa collection Workbooks. En premier paramètre, nous lui passons le chemin d'accès au fichier Csv à ouvrir dans Excel. Mais ce n'est pas tout, avec l'attribut format réglé sur la valeur 4, nous lui indiquons que le délimiteur utilisé dans ce Csv est le point-virgule. Cependant et pour qu'il soit bien interprété, nous réglons l'attribut local sur la valeur True. Ainsi, Excel considère la langue actuelle du système pour que le point-virgule ne soit pas remplacé à la volée par une virgule. C'est ainsi que les délimiteurs sont pris en compte et que les données doivent s'afficher dans des colonnes explicitement différentes.
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
  • L'exécuter avec la touche F5 du clavier,
  • Choisir un nom de table avec la liste déroulante puis cliquer sur le bouton Exporter,
Exporter les données de table Access au format CSV en VBA

La boîte de dialogue de confirmation que nous avons programmée s'interpose. Si vous cliquez sur le bouton Non, le traitement est avorté et plus rien ne se produit. Si vous cliquez sur le bouton Oui, une fois l'exportation Csv terminée, le fichier Csv résultant est automatiquement ouvert dans Excel.

Ouvrir une exportation CSV dans Excel par le code VBA Access

Et comme vous pouvez l'apprécier, hormis un réajustement nécessaire des colonnes en largeur, les informations sont parfaitement structurées et exploitables par Excel. Pour chaque enregistrement, chaque information de champ est placée dans une colonne explicitement différente.

 
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