VBA conserver une chaine de charactere

Fermé
Sonia_1 Messages postés 4 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 17 juin 2010 - 17 juin 2010 à 09:58
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 18 juin 2010 à 10:51
Bonjour,
Je fait un export d'une table mais cela ne fonctionne pas comme je le voudrais :

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "nom de ma table", "U:\Donnees_Excel\nom_export_&[Forms]![ControlesA]![EntreeDateA].Value&.xls", True

J'ai un formulaire (controlesA) avec une zone de texte dans laquelle j'inscris la date et j ai relié cette zone à une macro qui execute mon module (sur entree).

J'ai donc deux problemes :
Lorsque je suis dans mon formulaire et que je clique sur la zone de texte pour inscrire ma date, il execute la macro.
Lorsque j'inscris ma date par la suite, il me crée mon fichier avec comme nom :
nom_export_&[Forms]![ControlesA]![EntreeDateA].Value&.xls
A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 juin 2010 à 10:34
Bonjour,

As-tu un code derrière ton Textbox de saisie ?

Je ne comprends pas le problème avec le nom de fichier. Peux-tu m'éclairer un peu plus, sur ce que tu veux obtenir comme nom de fichier ?

Merci

;o)
0
Sonia_1 Messages postés 4 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 10:53
Je suis une débutante en vba donc non, j'ai pas de code en rapport avec la textbox.
J'aimerai que l'utilisateur inscrive la date au format 062010 ou 06-2010 et qu'ensuite quand il fasse entrée cela conserve cette date pour qu'au moment de l'exportation (j'ai un bouton pour cela) il prennent la date dans le nom soit : monnom_export_06-2010.xls
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 juin 2010 à 12:53
C'est la liaison de ta textbox avec la macro qui pose problème. Ne peux-tu pas faire exécuter ta macro lors de la validation sur le bouton Export ?

Pour le nom du fichier c'est ta syntaxe qui n'est pas bonne. Il ne faut pas oublier les espaces et les doubles cotes.

NomFichier = monnom & "_" & [Forms]![ControlesA]![EntreeDateA] & ".xls"

;o)
0
Sonia_1 Messages postés 4 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 14:41
En effet, c'est plus pertinent de faire executer la macro sur le bouton export, mais je l'ai fais sur la zone texte car je ne sais pas comment valider le texte inscris.
Sinon, concernant la syntaxe j'ai donc repris votre code (j'ai ajouté les "" à monnom car il le prend comme une variable) :

nomfich2 = "monnom" & "_" & [Forms]![ControlesA]![EntreeDateA] & ".xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "nomtable", "U:\Donnees_Excel\nomfich2", True

Et j'obitens donc : nomfich2.XLS

Le probleme c'est que je ne sais pas comment on accede au contenu d'une variable en vba.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 juin 2010 à 10:51
Bonjour,

Désolé, je n'étais pas dispo hier aprem.

Concernant la récupération d'une variable, ça dépend de ce que l'on veut faire avec cette variable.

Si le contenu de la textbox doit être utilisé plus tard dans le code, on peut, par exemple lors de la validation sur un bouton, affecter sa valeur à une variable globale. Une variable globale est une variable qui est déclarée en début d'un module et qui reste initialisée durant toute l'exécution du code. Une variable déclarée dans une procédure ou une fonction n'est "vivante" que dans la procédure ou la fonction. C'est à dire qu'elle perd sa valeur dès la sortie de la fonction ou de la procédure.

Option Explicit

Private maVariable As String   'Variable globale

Private Sub CommandButton1_Click()
     maVariable = TextBox1.Text     'Affection à maVariable du contenu de la TextBox1 
    'Si TextBox1 = "Hello word" alors maVariable = "Hello word"
    Call Traitement
End Sub

Private Sub Traitement()
Dim chaine As String     'Variable locale

         chaine = Date & "_" & maVariable   'ex chaine = 18/06/2010_Hello word
         MsgBox chaine
End Sub
' Ici chaine = vide et maVariable = "Hello word"


J'espère avoir été clair (c'est pas sûr), mais n'hésite pas à revenir ici poser tes questions pour avoir des éclaircissements.

;o)
0