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 :

[Débutant] Extraire plusieurs enregistrements d'un champ [AC-2007]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 45
    Points : 35
    Points
    35
    Par défaut [Résolu] Extraire plusieurs enregistrements d'un champ
    Bonjour tout le monde !

    Je voudrais savoir si c’est possible d’insérer plusieurs enregistrement dans plusieurs champs d’un formulaire, à partir d’un champs de type Memo qui se trouve dans le même formulaire.

    Explications :

    Dans mon formulaire, le champ type Memo contient un enregistrement qui a toujours la même structure.

    Contenu type du champ memo :

    Mot1 Mot2
    Mot3
    (Mot4)
    DOUBLE RETOUR A LA LIGNE
    Mot5
    Mot6

    Dans le même formulaire, les champs 1 à 5 vides doivent contenir les enregistrements suivants APRES mise à jour du même formulaire :

    Champ1 : Mot1 Mot2 (espace entre les 2 mots compris)
    Champ2 : Mot3
    Champ3 : Mot4 (sans las parenthèses)
    Champ4 : Mot5
    Mot6 (retour à la ligne entre les 2 mots)

    Ayant parcouru les différents posts à ce sujet (split, len, mid, instr), je suis complètement perdu et ne sais pas par quel bout commencer.
    Peut-être que c’est possible de séparer chaque ligne et/ou mots du champ memo et de les mettre directement dans les champs 1 à 5 du même formulaire en cliquant sur un bouton ou autre et via une requête INSERT comme celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Sql As String
    Sql = "INSERT INTO Table1 "  & _ "(Champ1,Champ2,Champ 3,Champ 4,Champ 5) " & _ "values (‘" & Champ1 & "‘,‘" & Champ2 & "‘,‘" & Champ3 & "‘,‘" & Champ4 & "‘,‘" & Champ5 & "‘ ) WHERE Formulaire.NumClient=" & Me![NumClient]
    CurrentDb.Execute (Sql)
    Forms!Formulaire.Requery
    Forms!Formulaire.Refresh

    Merci d'avance pour votre aide!

    @+

    JiB@

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour.

    En effet, vous allez sans doute pouvoir utiliser "Insert Into", mais il faudra quand même récupérer les différentes valeurs de votre champ mémo.

    Avant d'aller plus loin, il serait intéressant d'avoir plus d'information sur ce champ mémo.
    Tel que vous le présentez, bien formaté, je me dis qu'il doit venir d'une autre application.

    Je me dis qu'il y a sans doute quelque chose à faire à ce niveau :
    plutôt que d'importer un texte dans un fichier mémo, peut-être vaut-il mieux le formater avant, ou pendant, une importation directe dans la table.

    En attente de renseignements.

    Pierre

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjour,
    code à mettre sur un bouton :
    testé, fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandeX_Click()
    x = Split(Me.Memo1, vbCrLf)
    Ch1 = x(0)
    Ch2 = x(1)
    ch3A = Replace(x(2), ")", "")
    Ch3 = Replace(ch3A, "(", "")
    Ch4 = x(4) & vbCrLf & x(5)
    End Sub
    au fait en relisant du parles de champ 1 a 5 alors que ton exemple c'est du champ 1 a 4 - le code c'est pour 4 champs ch1 à ch4 dans le dernier champ il y a un renvoi à la ligne - si ce n'est pas ça précise.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    Bonsoir,

    Merci pier.antoine et LE VIEUX pour vos réponses.

    J'ai testé ton script LE VIEUX et ça fonctionne très bien pour les premiers champs.
    J'ai remarqué que la structure du contenu du champ Memo a changé quand on fait un copier/coller d'un email.

    Voici le contenu type et définitif du champ Memo:

    Mot1 Mot2
    Mot3 (Mot4) [Mot5' Mot6]
    DOUBLE RETOUR A LA LIGNE
    Mot5
    Mot6

    Les Champs 1 à 4 doivent contenir les enregistrements suivants:

    Ch1: Mot1 Mot2
    Ch2: Mot3
    Ch3: Mot4
    Ch4: Mot5
    Mot6

    Voici le code modifié mais je ne sais pas comment résoudre le reste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Commande144_Click()
     
    x = Split(Me.Note, vbCrLf)
    Ch1 = x(0)
    Ch2 = x(1)	       'Il faudrait effacer tous les caractère après le "("
    Ch3A = Replace(x(1), ") [Mot5", "")
    Ch3B = Replace(Ch3A, "'", "")
    Ch3C = Replace(Ch3B, "Mot6]", "")		'Mot5 et Mot6 sont toujours identiques
    Ch3 = Replace(Ch3C, "(", "")
    Ch4 = x(4) & vbCrLf & x(5)		'Le Ch4 n’est pas mis-à-jour 
     
    End Sub

    Grand merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    Re bonjour,


    J'ai fin par trouver la solution avec les fonctions Right et Left.

    Merci pour tout, problème résolu !

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Poste nous ton code et marque ton post en " resolu"

    Cordialement,

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

Discussions similaires

  1. Extraire les enregistrements ayant un champ identique
    Par laraki.fissel dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/05/2014, 14h25
  2. Réponses: 13
    Dernier message: 19/04/2009, 23h58
  3. Création de plusieurs enregistrements à partir d’un champ mémo
    Par nayhau dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/08/2008, 12h44
  4. Réponses: 3
    Dernier message: 25/10/2006, 10h55
  5. Etat : plusieurs enregistrements pour un meme champ
    Par b_steph_2 dans le forum Access
    Réponses: 21
    Dernier message: 02/02/2006, 12h21

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