IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Récuperer la valeur d'une zone de texte pour alimenter le chemin d'une importation automatique [AC-2007]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Récuperer la valeur d'une zone de texte pour alimenter le chemin d'une importation automatique
    Bonjour,

    Je suis Jeremy et j'utilise ce forum comme base depuis plusieurs années pour répondre à mes questions sur Access et sur Excel. J'ai repris mes études d'ingénieur et je dois construire une base de données servant de petite GPAO.

    J'ai des fichiers CSV à importer dans ma base et j'ai utilisé l'importation automatique pour répondre à mes besoins. Le code de LeDZeppII (trouvé sur le forum) fonctionne et me permettra de changer le chemin d'accès dans l'importation automatique IMP1.

    Citation Envoyé par LedZeppII Voir le message
    Bonjour,

    Quelque chose que j'ai testé vite fait et qui fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub SpecImpChangerFichier(strNomSpecImport As String, strNouvFichier As String)
    Const STR_PATHTAG = "<ImportExportSpecification Path = """
    Dim strNouvXml As String, strXml As String
    Dim p1 As Long, p2 As Long, bOk As Boolean
     
    strXml = CurrentProject.ImportExportSpecifications(strNomSpecImport).XML
     
    p1 = InStr(1, strXml, STR_PATHTAG, vbTextCompare)
    If p1 > 0 Then
       p2 = InStr(p1 + Len(STR_PATHTAG), strXml, """")
       If p2 > 1 Then
          strNouvXml = Left(strXml, p1 + Len(STR_PATHTAG) - 1) & _
                       strNouvFichier & Mid(strXml, p2)
          bOk = True
       End If
    End If
     
    If bOk Then
       CurrentProject.ImportExportSpecifications(strNomSpecImport).XML = strNouvXml
    End If
     
    End Sub
    Premier argument : Nom de la spécification d'importation sauvegardée
    Deuxième argument : Nom complet du fichier à importer (Chemin + Nom)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub tstSpecImpChangerFichier()
    SpecImpChangerFichier "IMP1", _
                          "C:\Mes Documents\ . . . \Le Fichier.xls"
    End Sub
    A+

    Cependant, je galere que j'aimerais que le chemin d'accès est la valeur d'une zone de texte présente dans un formulaire. Cette zone de texte "lien1" est elle même alimentée par une table "Import information site" qui peut evoluer en fonction du site.

    J'ai essayé depuis deux jours. J'ai de nombreuses recherches mais je n'arrive pas generer le code me permettant de remplacer l'expression littorale par la valeur présente dans la zone de texte de mon formulaire.

    Pourriez vous m'aider svp ?

    Je vous remercie d'avance et je vous prie de croire que vous m'avez déjà sauvé plusieurs fois avec la FAQ et les différents sujets traités sur ce forum.

    Jeremy

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    A priori, si tu es dans le formulaire qui contient la zone de texte lien1, il suffirait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tstSpecImpChangerFichier()
    SpecImpChangerFichier ("IMP1", Me.Lien1)
    End Sub
    Par contre, si tu es dans un autre formulaire et le formulaire qui contient la zone de texte est ouvert, tu devras indiquer l'adresse explicite du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tstSpecImpChangerFichier()
    SpecImpChangerFichier ("IMP1",Forms!LeFormulaire.Lien1)
    End Sub
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta reactivité et le coup de pouce.

    je regarde et je reviens vers toi.

    Jeremy

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je viens de faire le test et il marque une erreur de syntaxe ou de compilation.

    Le nom de la zone de texte s'appelle bien Lien1 et reprend une information dans une table "Importation info site"
    On trouve bien le lien complet dans la zone de texte (.csv à la fin)

    J'ai essayé d'ouvrir ou fermer le formulaire Parametrage lors de l'appui sur le bouton mais cela ne fonctionne pas !
    "Importation commande RL1" est bien noté car il fonctionne quand je mets le lien (idem le code de LEDEZEPPII)

    Voila ce que j'ai saisie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub tstSpecImpChangerFichier()
     
    SpecImpChangerFichier ("Importation commande RL1",Forms!Parametrage.Lien1)
     
    End Sub
    Une idée de l'erreur ?

    Cordialement,

    Jeremy

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Nous y sommes presque !
    Conscient que l'erreur venait peut etre de mon code, je me suis repenché dessus ce matin (on ne lache rien !)

    J'ai rentré ce code et VBA n'a pas mis d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SpecImpChangerFichier "Importation commande RL1", _
    Forms![1- Parametrage].Lien1.Value
    Pour info, j'ai changé le nom du formulaire entre temps pour le renomer en "1- Parametrage"

    L'extraction automatique par code VBA ne fonctionne toujours pas car j'ai deux ## qui sont devant et derriere mon chemin d'accès.
    Nom : Image1.png
Affichages : 149
Taille : 21,3 Ko

    Nous y sommes presque ! Avez vous une idee pour faire fonctionner mon code ou pour resoudre le probleme ?

    Cordialement,

    Jeremy

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je n'ai toujours pas réussi à résoudre mon probleme alors que l'on ai pas loin de la solution. Le dernier code mis dans ce post m'affiche bien le lien mais il le mets entre des 3# ce qui fausse le nouveau chemin d'accès.

    Svp pourriez vousm'aider ?

    Cordialement,

    Jeremy

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Je ne vois vraiment pas où peut se former ton erreur parce que j'ai essayé le code et ça marche.
    Essaie de déboguer ton code et d'imprimer la dernière valeur de strNouvXml avec un Debug.Print avant la sortie de la routine.

    En regardant ta copie d'écran, ne serait-ce pas le fait que tu ais un dossier avec une nom contenant un "." qui produirait l'erreur. Déplace ton fichier vers un autre répertoire sans de tels caractères !

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour Madefemere,

    Tout d'abord, je te remercie d'avoir repondu et aider sur le sujet.

    Je viens d'essayer de modifier le chemin d'accès pour éviter les points, mais rien à faire, j'ai toujours des ## qui viennent se loger devant et derriere le lien.
    Nom : Image1.png
Affichages : 129
Taille : 4,0 Ko

    Etant en roue libre sur Access, je ne connais pas la méthode de debeuguage par debug print. Pourrais tu me l'expliquer stp (sinon je ferais quelques recherches dès demain.

    Je pensais egalement remettre le meme code dans une base vierge et sur un autre PC afin de vérifier qu'il n'y ai pas un beug.

    Ce probleme me pertube car je n'ai jamais buté autant avec l'aide proposée sur internet et les FAQ, ...

    Arf Jeremy

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Il y a plusieurs façons de déboguer un programme en VBA.
    Le principe est de vérifier les données qui sont introduites dans une procédure ou fonction et vérifier les valeurs pendant la routine.
    Moi, j'utilise principalement, soit les commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print X ' qui permet  d'imprimer dans la fenêtre d'exécution la valeur de X
    MsgBox X ' affiche dans une boîte de dialogue la valeur de X
    La fenêtre d'exécution se trouve généralement en bas de la fenêtre VBE. Si elle n'est pas affichée appuyer sur Ctrl+G.

    Modifies le code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Sub SpecImpChangerFichier(strNomSpecImport As String, strNouvFichier As String)
    Const STR_PATHTAG = "<ImportExportSpecification Path = """
    Dim strNouvXml As String, strXml As String
    Dim p1 As Long, p2 As Long, bOk As Boolean
     
    strXml = CurrentProject.ImportExportSpecifications(strNomSpecImport).XML
     
    p1 = InStr(1, strXml, STR_PATHTAG, vbTextCompare)
    If p1 > 0 Then
       p2 = InStr(p1 + Len(STR_PATHTAG), strXml, """")
       If p2 > 1 Then
          strNouvXml = Left(strXml, p1 + Len(STR_PATHTAG) - 1) & _
                       strNouvFichier & Mid(strXml, p2)
          bOk = True
       End If
    End If
     
    If bOk Then
       Debug.Print strNouvXml ' Imprimer la valeur de strNouvXml
       CurrentProject.ImportExportSpecifications(strNomSpecImport).XML = strNouvXml
    End If
     
    End Sub
    Lance maintenant ta procédure appelante tstSpecImpChangerFichier avec les arguments et dis-mois ce qui est écrit dans la fenêtre d'exécution.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Alllllllllllllllllllllllllllllllllllllelouya j'ai trouvé grace à toi Madefemere

    Alors pour etre simple, je ne viens de voir ton mail qu'à l'instant (mais je le garde au chaud car je risque d'en avoir besoin).

    Tete de mule que je suis, je me suis remis sur le probleme à 12H00 et j'ai remis les bouts de code dans une base vierge, avec les memes intitulés que ceux présents dans ma base. Roulement de tambour, le morceau de code fonctionne et je transfere bien le fichier csv avec un lien sans ##.

    Je reviens sur ma base et me recreuse la tete encore une fois et je retest et retest. Par epuisement, je rentre "AAAA" à la place du lien dans la table.
    A mon etonnement, le lien de l'importation automatique etait devenu AAAA#https:\\#AAAA

    Instantannement, mon cerveau a fait tilt et la différence entre les deux bases étaient que, dans la base test, mon lien était en categorie TEXTE dans la table, alors que dans ma base, il etait en lien hypertext.

    J'ai changé la catégorie, les deux champs texte de mon formulaire ou je venais piocher le lien, et zouuuuuuuuuuuuu le lien de l'importation auto a perdu les ##.

    Bravo a toi Madefemere pour ne pas avoir laché et pour m'avoir aiguillé sur le sujet. J'espere que notre post pourra servir à d'autres internautes.

    Encore merci,

    Jeremy (je vais aller me faire un pti coktail)

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Ben content pour toi, à ta santé
    Attention l'abus d'... est dangereux pour la santé ! parait-il

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/07/2015, 22h26
  2. Remplir une zone de texte dans un gui à partir d'une autre foction
    Par Wassim123 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 04/02/2009, 16h39
  3. Insérer le pseudo cliqué dans une zone de texte pour un shoutbox
    Par david2511 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2008, 12h20
  4. Réponses: 24
    Dernier message: 17/04/2008, 14h24
  5. Réponses: 14
    Dernier message: 30/05/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo