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 27/11/2011, 13h47   #1
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Par défaut Export excel définition du nom du fichier aves un module

Bonjour,

Actuellement, lorsque j'effectue un export via une requète vers Excel le nom de mon fichier est figé

Code :
strXLFile = "d:\bases extincteurs\Access 2007\essaiexport.xls"
Maintenant je voudrais pouvoir le nommer comme je veux via un petit formulaire.

Je bloque sur deux points :

J'ai posé la condition AcDialog, comment dois je faire pour redémarrer mon code
Et L'utilisation du champ NomExcel de mon formulaire fichier excel pour ma variable NameExcel et strXfile.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Dim strXLFile As String, NameExcel As String
 
'Ouvre le formulaire de saisie du nom du fichier en windowmode attente de saisie
                                    DoCmd.OpenForm ("fichier excel"), WindowMode:=acDialog
                                    NameExcel = [fichier excel]!NomExcel
                                        'Si aucune nom de fichier, je sors message d'alerte
                                            If Nz(Me.NomExcel, "") = "" Then
 
                                            DoCmd.OpenForm ("message nom fichier obligatoire")
                                            Exit Sub     ' Sortie de la routine
                                            'Sinon, en fonction de la case cochée, j'ouvre un formulaire
                                            Else
                                            End If
'Ouvre l'application Excel
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
 
' Nom complet du fichier excel
                               strXLFile = "d:\bases extincteurs\Access 2007\" & NameExcel ".xls"
Merci d'avance de votre aide

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 15h58   #2
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
J'ai progressé.

Tout d'abord la fonction ACdialog n'a semble t-il pas besoin d’être relancée.

J'ai corrigé la ligne suivante dans la syntaxe de la variable strXFile et cela fonctionne.

Code :
strXLFile = "d:\bases extincteurs\Access 2007\" & NameExcel & ".xls"
Par contre je n'arrive pas à définir ma variable NameExcel, je l'ai actuellement remplacée par pour tester.

Elle provient d'un champ de formulaire mais j'ai beau essayé et j'ai toujours une valeur nulle, malgré un essai de l'enregistrer dans une table.

Ais je le droit de nommer ma variable de type string de cette manière ?
Elle provient d'un champ de mon formulaire.
Code :
NameExcel = Me.NomExcel
A priori cela ne fonctionne pas.

Merci de votre aide

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 18h55   #3
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Alors je crois avoir trouvé la cause de mon problème, c'est que je fais appel à un champ de formulaire qui n'est pas le même que celui qui l'utilise.

Ce qui veut dire qu'il faut mettre en oeuvre une variable globale.

J'ai trouvé quelques éléments mais je bloque sur les emplacements à mettre ces éléments :

Formulaire F1 avec un champ nommé ch1

Formulaire F2 dans lequel je veux utiliser ch1 de F1 comme variable (var1) et l'utiliser pour définir le nom de mon fichier. var1=ch1

Si quelqu'un pouvait m'indiquer ou je dois inscrire mes variables globales et quel type je dois associé à mes variables ?

Merci d'avance

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 23h13   #4
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Je ne sais pas si je suis dans la bonne direction en espérant que quelq'un pourra me le confirmer mais j'ai créé un module de classe que j'ai appelé xportxl.

Il se compose de deux variables

Code :
1
2
3
4
Option Compare Database
 
Public xlname As String
Public xldossier As String
Ensuite c'est la que j'ai un peu de mal. Si je comprend bien il faut que j'appelle en tête de formulaire ce module pour que le formulaire utilisant cette variable sans l'avoir créer puisse l'utiliser à son tour.

Je vais continuer à chercher mais si quelqu'un maitrise, je suis preneur

Merci d'avance

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 09h21   #5
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Je suis quelque peu embrouillé. J'ai lu les tutos concernant les modules.
Alors si l'on pouvait m'éclaircir un peu les idées.

1) Est il préférable d'utiliser des variables privées ou public dans les modules. Si je veux utiliser elles ci pour récupérer la valeur du champ de F1 pour F2 ?
2) Dans la création du module si private, la structure de mon module est identique sauf à rajouter les propriétés GEt et LET ?
3) Ensuite je n'ai plus qu'à appeler ma variable privée dans mon formulaire, dois je la mettre dans le général derrière option explicit ?
4) Doit elle être déclarée dans mes deux formulaires ?

Voilà je crois que j'en ai fini avec mes questions. Je vais continuer, en espérant que l'on pourra m'aider et pour ma part à trouver des réponses en me creusant la cervelle.

Voilà ce que j'ai fait.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Compare Database
Option Explicit
 
Private mstrXlname As String                'Nom du fichier Excel
Private mstrXlchemin As String             'Nom du chemin de sauvegarde
 
 
' Propriété fichier
Property Let Xlname(strXlname As String)
   mstrXlname = strXlname
End Property
Property Get Xlname() As String
    Xlname = mstrXlname
End Property
 
' Propriété Chemin
Property Let Xlchemin(strXlchemin As String)
    mXlchemin = strXlchemin
End Property
Property Get Xlchemin() As String
    Xlchemin = mstrXlchemin
End Property
Merci d'avance

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 14h14   #6
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Je ne maitrise pas du tout les modules de classes.

Par contre, j'aurais tendance à utiliser une table de paramètre (Utilisations possibles d'une table de paramètres) : vous y stocker le nom que vous voulez donner à votre fichier excel, et au moment de l'export / création vous allez chercher ce nom dans cette table.

Bonne continuation

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 22h41   #7
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Merci. Par contre la fonction, elle est a écrire à quel endroit ?

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 10h32   #8
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Merci Pier Antoine, effectivement la fonction Dlookup fonctionne à merveille, je crois que j'ai cherché à faire compliqué.

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h45.


 
 
 
 
Partenaires

Hébergement Web