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 :

Exporter un seul champ d'une table? (+passage hypertexte vers texte) [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    emploi
    Inscrit en
    Mars 2014
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : emploi

    Informations forums :
    Inscription : Mars 2014
    Messages : 138
    Par défaut Exporter un seul champ d'une table? (+passage hypertexte vers texte)
    Bonjour à tous,


    Je n'ai pas trouvé masse d'information sur ce que je cherche à faire et je pense que ça ne devrait pas être compliqué mais je ne sais pas comment faire:

    J'ai une table clients contenant donc des infos sur ces derniers. Parmi ces informations, il y a leurs adresses emails (Note: le champ est en format hypertexte dans la table et les formulaires). Je souhaiterais justement savoir comment extraire uniquement cette information proprement.

    J'ai donc pensé à faire une requête qui ne sélectionne que le champ, mais les infos étant en hypertextes je ne peux les copier proprement... Et j'ai beau chercher, je ne trouve pas comment changer ce format... (dans les propriétés l'onglet format est vide).


    Merci d'avance.
    A bientôt.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Voici un exemple de code qui te permet d'extraire cette valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim tabEmail() As String
        Dim strMail as string
     
        tabEmail = Split(Me.email.Value, "#")
        strMail = tabEmail(0)
    La fonction Split va te permettre d'éclater dans le tableau tabEmail la valeur du lien hypertexte, et il suffit de récupérer la première valeur de ce tableau (commençant par 0).

    Philippe

  3. #3
    Membre confirmé
    Femme Profil pro
    emploi
    Inscrit en
    Mars 2014
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : emploi

    Informations forums :
    Inscription : Mars 2014
    Messages : 138
    Par défaut
    Bonjour,


    Merci pour ta réponse.
    Par contre je suis un peu perdu sur l'utilisation...

    Donc dans mes essais hasardeux,
    - j'ai créé un formulaire tabulaire basé sur la requête de récupération de mes champs Email.
    - j'ai ajouté ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Load()
        Dim tabEmail() As String
        Dim strMail As String
     
        tabEmail = Split(Me.Email.Value, "#")
        strMail = tabEmail(0)
        Me.Texte3 = tabEmail(0)
    End Sub
    Mais dans tous mes contrôles (indépendant) texte3 je ne récupère la valeur que du premier enregistrement de ma requête.

    Dois-je créer quelque chose de similaire à for each en sql? Si oui, pourrais tu me donner une piste de code? Ou peut être je me complique la vie et il y a plus simple?


    Merci
    A bientôt.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Si tu as un formulaire tabulaire cela est normal.

    La meilleure solution est de :

    Crée une fonction à partir des explications.
    Utilise cette fonction dans une requête.
    Et met cette requête comme source de ton formulaire.

    Philippe

  5. #5
    Membre confirmé
    Femme Profil pro
    emploi
    Inscrit en
    Mars 2014
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : emploi

    Informations forums :
    Inscription : Mars 2014
    Messages : 138
    Par défaut
    Oula... Je ne sais pas du tout faire cela...

    J'ai essayé de créer donc un module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function RecupMail(Email)
        Dim tabEmail() As String
        Dim strMail As String
     
        tabEmail = Split([Email].Value, "#")
        strMail = tabEmail(0)
     End Function
    Rien que la il doit déjà y avoir des erreurs risibles...

    Ensuite dans la requête je sélectionne T_Clients.Email et j'ajoute une expression type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Essai: RecupMail([Email])

    Je suis désolé pour le faible niveau de connaissance démontrée ici, mais je n'ai jamais manipulé tout cela
    (J'ai bien essayé de chercher un peu, mais je ne trouve pas d'explications suffisantes ou appropriées à mon essai).

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    L'idée est bonne et qui n'essaie rien n'a rien.
    Ta fonction ne retourne rien telle qu'écrite. Tu devrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'VBA étant un langage typé comme on dit, tu devrait donner un type à la valeur retournée par ta fonction
    Function RecupMail(Email) as String
        Dim tabEmail() As String 'Tu définis un tableau de texte 
    'Tu casses la valeur de Email en plusieurs morceaux à chaque #
        tabEmail = Split([Email].Value, "#") 
    'Tu retournes la première chaine de caractère récupérée précédemment en résultat de ta fonction
        RecupMail= tabEmail(0) 
     End Function
    Maintenant, tu crées une requête à partir de ta table Membres et tu rajoutes un champ à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MailEnString : RecupMail(Email)
    Tu remplaces la source de ton formulaire tabulaire par cette nouvelle requête avec ce nouveau champ.

    OK, Bonne continuation

    EDIT : Et au fait, il parait que "Le ridicule ne tue pas"

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

Discussions similaires

  1. copier un seul champ d'une table a une autre
    Par K.aoutar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/08/2010, 17h25
  2. Modifier un seul champ d'une table
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/12/2009, 21h21
  3. Remplir un seul champ d'une table en une requête
    Par Lenezir dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/02/2008, 15h32
  4. comment inserer un seul champ d'une table dans une autre
    Par kesamba dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/12/2007, 05h48
  5. delete un seule champs d'une table
    Par speedylol dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/02/2006, 12h50

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