Duplication enregistrement Access avec champs contenant plusieurs vale - VB/VBA/VBS - Programmation
Marsh Posté le 06-12-2008 à 13:01:01
En vba, c'est possible. Je te conseille néanmoins de passer par 3 tables :
- une table nom (tabNoms)
- une table couleur (tabCouleurs)
- une table liant les noms et les couleurs (tabRefNomsCouleurs)
Ensuite, parcourir la table de départ et pour chaque ligne, enregistrer le nom & prénom dans la table nom, ensuite pour chaque couleur dans le champ Couleurs, extraire le nom de la couleur, la stocker dans la table couleur si elle n'existe pas et compléter la table des relations Noms<->Couleurs
Ensuite, une requête (reqNomsCouleurs) permet d'afficher le résultat :
Voilà ce que ça donne :
J'ai nommé ta table "Originale" et complètée tel que tu donnais ton exemple : 3 champs : nom, prénom et couleurs, les couleurs étant séparées entre elles par des virgules.
Ne pas oublier de lier les tables entre elles en appliquant l'intégrité différentielle.
Ensuite, créer un module et faire le copier-collé du code ci-dessous (double clic dans la fenêtre du code ci-dessous pour enlever les numéros de lignes avant de faire le copier-coller )
Code :
|
Le code est commenté, ce qui m'évite de le faire maintenant !
C'est du code pour Access 97, je crois que pour 2003, il faut aussi insérer un gestionnaire d'erreur. A toi de le faire. Ce code fonctionne chez moi.
Trucs : tu peux changer le nom des tables pour mettre les tiens sur les lignes 34 à 37 et changer le caractère qui sépare le nom des couleurs à la ligne n°61 (variable strSep)
Bon courage
Marsh Posté le 06-12-2008 à 14:08:20
Je vais tester tout ça, de plus cela me paraît très clair.
Un grand merci à toi!
Marsh Posté le 09-12-2008 à 15:37:05
Bonjour
OtObOx C'est assez génial de voir des posts comme le tiens !
J'apporte juste ma petite contribution qui permet 'plus simplement', je pense, d'obtenir une table avec autant de lignes que de couleurs dans les enregistrements originaux.
Citation : Function gramlinz60(NomDeTaTable, NomChamp_Nom, NomChamp_Prenom, NomChamp_Couleur) 'Le nom de ta table ou tu as tes lignes originales |
Je pars du principe que ta table originale se nomme 'Table', le champ nom 'Nom', le champ prénom 'Prenom' et le champ contenant les couleurs 'Couleur'
Pour lancer la fonction :
Citation : gramlinz60 "Table", "Nom", "Prenom", "Couleur" |
Résultat tu as une table nommée 'Multiligne' qui contient tes lignes avec une couleur a chaque fois.
C'est la virgule qui separe les couleurs.
Cordialement
Marsh Posté le 09-12-2008 à 18:26:07
SuppotDeSaTante a écrit : Bonjour |
Oué, merci je m'ennuyais samedi matin
J'avais répondu un peu à coté, dans la mesure où je ne sors pas une table mais 3 + 1 requête. Redondance toussa... C'est plus long, peut être qu'il y a moyen de faire un peu plus simple, mais c'est plus propre je trouve que de tout mélanger dans une seule table.
Marsh Posté le 09-12-2008 à 22:48:44
Ah oui c'est certain, mais ne sachant pas pourquoi c'etait faire, je me suis contenté de repondre a la question...
Marsh Posté le 11-12-2008 à 20:36:09
Merci à vous deux.
J'ai utilisé la première méthodec d'otobox et cela a marché impec!
Merci !
Marsh Posté le 04-12-2008 à 20:31:59
Bonjour,
je souhaiterais pouvoir dupliquer des lignes selon un champs comportant plusieurs valeurs.
exemple d'une ligne:
Colonne A (nom) : Dupont
Colonne B (prénom) : A
Colonne C (couleur) : rouge, vert, jaune
Je souhaiterais donc avoir 3 lignes :
Ligne 1 :
Colonne A (nom) : Dupont
Colonne B (prénom) : A
Colonne C (couleur) : rouge
Ligne 2 :
Colonne A (nom) : Dupont
Colonne B (prénom) : A
Colonne C (couleur) : vert
Ligne 3 :
Colonne A (nom) : Dupont
Colonne B (prénom) : A
Colonne C (couleur) : jaune
Quelqu'un aurait il une solution? (pour info je suis sous access 2003).
Merci d'avance.