Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 17h51   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut (formulaire) Parcourir dossiers / sélection .xls / convertir en .csv

Bonjour,

Plusieurs jours que je travaille sur ce formulaire Access, et après m'être arraché la moitié des cheveux, j'ai décidé de demander votre aide !

Voici les étapes de mon besoin (tout cela est sur un seul Form) :

1- Bouton parcourir : l'utilisateur va chercher le fichier Excel (*.xls ou *.xlsx) à convertir, la multisélection est autorisée.

2- Textbox : le chemin des fichiers sélectionnés apparaissent tous (1 par ligne) dans une textbox.

3- Bouton "Convertir" : au clic de ce bouton, l'ensemble des fichiers sélectionnés à la 1ère étape sont convertis en format .CSV (avec séparateur ";"). Ils seront tous stockés dans un autre dossier (style C:\temp) et se nommeront à l'identique de leur fichier respectif d'origine (donc seule l'extension change).

Voila aujourd'hui où j'en suis (je suis quasi débutant, donc j'ai pu écrire tout cela à coup d'heures de recherche sur google ). J'ai corrigé x erreurs au fur et à mesure, activé les "références" nécessaires (après avoir appris sur le tas ce que c'était )mais il y en a sans cesse une autre qui apparait...
Et j'ai beau trouver les bases sur les forums, le manque de formation intiale m'empêche de modifier le code comme je remuerai mes pâtes...

Merci beaucoup pour votre aide !!

PARCOURFICREF est le nom du bouton de commande "parcourir"
FICHIERORIGINE est le nom de la textbox

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
Private Sub PARCOURFICREF_Click()
Dim f As Office.FileDialog
Dim selectedFile As String
 
Set f = Application.FileDialog(3)
' Show the dialog. If the method returns True, the user picked at least one file.
' If the method returns False, the user clicked Cancel.
f.AllowMultiSelect = True
 
' Add a few custom filters
f.Filters.Add "Classeurs Excel", "*.xls,*.xlsx"
 
If f.Show Then
    MsgBox f.SelectedItems.Count & " fichier(s) ont été choisis."
End If
    ' Display the full path to each file that was selected
    Dim i As Integer
    For i = 1 To f.SelectedItems.Count
        FICHIERORIGINE.Value = f.SelectedItems(i)
    Next i
 
' Pour insérer l'emplacement du fichier choisi dans le TextBox
'selectedFile = OpenFileDialog.FileName
'FICHIERORIGINE.Text = selectedFile
 
End Sub
 
Sub convertir_click()
 
  Dim Nom As String, Rep
  Dim MyExcel
 
  Set MyExcel = CreateObject("excel.application")
  With ActiveWorkbook
   Nom = .Name
   If .Path <> "" Then Nom = Left$(Nom, InStr(1, Nom, ".") - 1)
  End With
  Rep = MyExcel.GetSaveAsFilename(Nom, "Fichier CSV,*.csv")
  If VarType(Rep) = vbBoolean Then Exit Sub
 
 MyExcel.ScreenUpdating = False
 MyExcel.DisplayAlerts = False
 
 ActiveSheet.Copy
  ActiveWorkbook.SaveAs Rep, xlTextWindows
 
 workbooks.OpenText Rep
  'ici le séparateur est une virgule :
  Cells.Replace vbTab, ";", xlPart
  ActiveWorkbook.SaveAs Rep, xlTextWindows
 
 ActiveWorkbook.Close False
  MyExcel.DisplayAlerts = True
 
End Sub
Images attachées
Type de fichier : jpg form.JPG (23,3 Ko, 5 affichages)
polux400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 11h24   #2
Invité de passage
 
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Bonjour,

J'ai finalement réussi à rendre mon code fonctionnel, pour les fonctions de base au moins, ce qui fonctionne :

1/ [BOUTON] Sélection d'un fichier .XLS par boite de dialogue

2/ [TEXTBOX] Affichage du chemin du fichier sélectionné

3/ [BOUTON] Conversion du fichier sélectionné en .CSV avec sélection du chemin + nom d'enregistrement par boite de dialogue


Voila comment j'aimerai enrichir ce code/formulaire :

1a/ [BOUTON-a] Sélection d'un ou plusieurs fichiers .XLS par boite de dialogue
OU
1b/ [BOUTON-b] Sélection du répertoire où tous les .XLS à convertir sont (par boite de dialogue)

2/ [TEXTBOX] Affichage du chemin de tous les fichiers sélectionnés par BOUTON-a OU Affichage du répertoire sélectionné par BOUTON-b

3/ [BOUTON] Conversion du ou des fichiers sélectionnés plus haut ou de l'ensemble des fichiers dans le répertoire sélectionné plus haut.
BONUS : j'aimerai avoir une barre qui apparait pour indiquer que le traitement est en cours (qui se remplisse au fur et à mesure du traitement des fichiers).

Merci d'avance pour votre aide !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
Option Compare Database
Option Explicit
 
Private Sub PARCOURFIC_Click()
Dim F As Office.FileDialog
Dim selectedFile As String
 
Set F = Application.FileDialog(3)
' Show the dialog. If the method returns True, the user picked at least one file.
' If the method returns False, the user clicked Cancel.
F.AllowMultiSelect = True
 
' Add a few custom filters
F.Filters.Add "Classeurs Excel", "*.xls,*.xlsx"
 
If F.Show Then
    MsgBox F.SelectedItems.Count & " fichier(s) ont été choisis."
End If
    ' Display the full path to each file that was selected
    Dim i As Integer
    For i = 1 To F.SelectedItems.Count
        FICHIERORIGINE.Value = F.SelectedItems(i)
    Next i
 
' Pour insérer l'emplacement du fichier choisi dans le TextBox
'selectedFile = OpenFileDialog.FileName
'FICHIERORIGINE.Text = selectedFile
 
End Sub
 
Private Sub PARCOURREP_Click()
 
 
End Sub
 
Sub convertir_click()
 
  Dim Nom As String, Rep
  Dim MyExcel As Object
 
  Set MyExcel = CreateObject("excel.application")
  Workbooks.Open (FICHIERORIGINE.Value)
  With ActiveWorkbook
   Nom = .Name
   If .Path <> "" Then Nom = Left$(Nom, InStr(1, Nom, ".") - 1)
  End With
  Rep = MyExcel.GetSaveAsFilename(Nom, "Fichier CSV,*.csv")
  If VarType(Rep) = vbBoolean Then Exit Sub
 
 MyExcel.ScreenUpdating = False
 MyExcel.DisplayAlerts = False
 
 ActiveSheet.Copy
  ActiveWorkbook.SaveAs Rep, xlTextWindows
 
 Workbooks.OpenText Rep
  'ici le séparateur est ";" :
  Cells.Replace vbTab, ";", xlPart
  ActiveWorkbook.SaveAs Rep, xlTextWindows
 
 ActiveWorkbook.Close False
  MyExcel.DisplayAlerts = True
 
End Sub
 
 
Private Sub quitter_Click()
DoCmd.Close
 
End Sub
polux400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h48.


 
 
 
 
Partenaires

Hébergement Web