J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans quels
films
par exemple il a joué (ou si film musical dans quels morceaux il est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Bonjour
Petite remarque
1°) Fonction "Split()" pas dispo sous Access 97
2°) > Dim MonInd as integerFor MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire
ton insert
avec cela
Next
Une variable tableau commence à 0 donc il te manqueta la première
valeur...
Soit tu met dans ton module Option Base 1
Soit tu boucle en faisant :
for monInd = 0 to ubound(montab)-1
...
next
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Gafish" a écrit dans le message news:
ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche, et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Bonjour
Petite remarque
1°) Fonction "Split()" pas dispo sous Access 97
2°) > Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire
ton insert
avec cela
Next
Une variable tableau commence à 0 donc il te manqueta la première
valeur...
Soit tu met dans ton module Option Base 1
Soit tu boucle en faisant :
for monInd = 0 to ubound(montab)-1
...
next
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message news:
ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche, et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Bonjour
Petite remarque
1°) Fonction "Split()" pas dispo sous Access 97
2°) > Dim MonInd as integerFor MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire
ton insert
avec cela
Next
Une variable tableau commence à 0 donc il te manqueta la première
valeur...
Soit tu met dans ton module Option Base 1
Soit tu boucle en faisant :
for monInd = 0 to ubound(montab)-1
...
next
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Gafish" a écrit dans le message news:
ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche, et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres bases(97),
mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres bases(97),
mais je franchis le pas...)
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans quels
films
par exemple il a joué (ou si film musical dans quels morceaux il est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres bases(97),
mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" a écrit dans le message news:
cjgjig$n40$Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),
mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgjig$n40$1@news.tiscali.fr...
Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),
mais je franchis le pas...)
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo
en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs
en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" a écrit dans le message news:
cjgjig$n40$Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),
mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans quels
films
par exemple il a joué (ou si film musical dans quels morceaux il est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche,
et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
unnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien ne
se
passe (apparamment...)
3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le faire
=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien ne
se
passe (apparamment...)
3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le faire
=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien ne
se
passe (apparamment...)
3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le faire
=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
dema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans
quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il
est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
desétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en
se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Je suis pas sous Access 97 pour cette base, mais je prends au cas où... pour
une autre éventuelle appli...
Peux-tu indiquer comment appeller la fonction ?
Merci pour tous
Patrice
"Jessy Sempere [MVP]" a écrit dans le message de
news:cjgl4r$hte$Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" a écrit dans le message news:
cjgjig$n40$Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visualbasic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(cen'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partiegaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va seréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
faissiunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en sedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmesacteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
enchampMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
ymettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Je suis pas sous Access 97 pour cette base, mais je prends au cas où... pour
une autre éventuelle appli...
Peux-tu indiquer comment appeller la fonction ?
Merci pour tous
Patrice
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:cjgl4r$hte$1@muguet.sncf.fr...
Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgjig$n40$1@news.tiscali.fr...
Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...
car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),
mais je franchis le pas...)
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo
en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs
en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Je suis pas sous Access 97 pour cette base, mais je prends au cas où... pour
une autre éventuelle appli...
Peux-tu indiquer comment appeller la fonction ?
Merci pour tous
Patrice
"Jessy Sempere [MVP]" a écrit dans le message de
news:cjgl4r$hte$Pour ceux qui sont sous 97, voilà l'équivalent de la fonction Split()
********************************************************
Function fSplit(strSplit As String, strSep As String) As Variant
Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant
If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"PatCatNat's" a écrit dans le message news:
cjgjig$n40$Je m'y colle et tiens au courant.
Encore merci, car de toute façon je crois que je dormirais (si je
dors...car access est un excellent contraceptif ;o)))) plus instruit ce soir...
(Info : Cette base est en Acceess 2003 contrairement à mes autres
bases(97),mais je franchis le pas...)
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visualbasic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(cen'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP ?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partiegaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va seréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
faissiunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type :
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en sedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmesacteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
enchampMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
ymettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Re !...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
ne
sepasse (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
faire
passer de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudra
que tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs. J'ai
mis des espace autour des " et des ' mais tu pourras les enlever, c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va
seréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en
sedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Re !
...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
ne
se
passe (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.
3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
faire
passer de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau
=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudra
que tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs. J'ai
mis des espace autour des " et des ' mais tu pourras les enlever, c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP
?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du
type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo
en
se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs
en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)
de films qui contient les noms des acteurs (nombre variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Re !...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
ne
sepasse (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
faire
passer de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudra
que tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs. J'ai
mis des espace autour des " et des ' mais tu pourras les enlever, c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP
?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va
seréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
siunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
en
sedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les acteurs
en
champMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu
y
mettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)de films qui contient les noms des acteurs (nombre variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Bon voilà où j'ensuis :
Private Sub BtnTrier_Click()
Dim dbsCurrent As Database
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Dim MonTab() As String
Dim MonInd As Integer
If Acteurs = "" Or IsNull(Acteurs) Then
MsgBox "Il n'y a pas d'acteurs enregistrés", 48
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery ("R_ActeursFilm_Del ") 'Supprime les enregistrements
de
la T_ActeursFilm de l'enregistrement courant du Formulaire
'Transformation des éléments du contrôle [Acteurs] en éléments
distincts :
MonTab = Split(Acteurs, ", ") 'Coupe au séparateur
"virgule+espace"les enregistrements du contrôle "Acteurs" du formulaire
For MonInd = 0 To UBound(MonTab) 'Cré un "tableau" avec chaque
élément trouvé
dbsCurrent.Execute "INSERT INTO [T_Acteurs] (NomActeur) VALUES ('"
&
MonTab(MonInd) & "');" ' Tri et ajoute les enregistrements à la T_Acteurs
'Bogue dans la ligne du dessus si un nom d'acteur comporte une
apostrophe (ex : Beverly D'Angelo)
Next
'Fin de la transformation
DoCmd.OpenQuery ("R_ActeursFilm_Ajout") 'Ajoute les enregistrements de
la
T_Acteurs + Le numéro de film à la T_ActeursFilm
DoCmd.OpenQuery ("R_Acteurs_Del ") 'Supprime les enregistrements de la
T_Acteurs
DoCmd.SetWarnings True
ListeActeurs.Requery
DoCmd.Beep
MsgBox "Tri terminé", vbInformation
End If
Set dbsCurrent = Nothing 'Libère la mémoire
End Sub
Tout marche bien sauf quand un nom d'acteur comporte une apostrophe (ex :
Beverly D'Angelo) ????????
Erreur d'execution '3075'
Erreur de syntaxe (opérateur absent)
dansl'expession
"Beverly D'Angelo";'.
D'autre part, est-ce que tu peux me dire si mes commentaires sont justes
STP
(çà pourrait servir à d'autres, donc autant ne pas mettre du false et
j'aime
bien comprendre ce que je fais)
Merci beaucoup,
Patrice
"Gafish" a écrit dans le message de
news:Re !...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
nesepasse (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
fairepasser de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudraque tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace
mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque
chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs.
J'ai
mis des espace autour des " et des ' mais tu pourras les enlever,
c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split
qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il
ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visualbasic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(cen'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partiegaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
vaseréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
faissiunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux
il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les
données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire
chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
ensedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour
chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmesacteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les
acteurs
enchampMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel
tu
ymettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas
ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le
message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données(Access2003)de films qui contient les noms des acteurs (nombre
variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan
Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu
créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Bon voilà où j'ensuis :
Private Sub BtnTrier_Click()
Dim dbsCurrent As Database
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Dim MonTab() As String
Dim MonInd As Integer
If Acteurs = "" Or IsNull(Acteurs) Then
MsgBox "Il n'y a pas d'acteurs enregistrés", 48
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery ("R_ActeursFilm_Del ") 'Supprime les enregistrements
de
la T_ActeursFilm de l'enregistrement courant du Formulaire
'Transformation des éléments du contrôle [Acteurs] en éléments
distincts :
MonTab = Split(Acteurs, ", ") 'Coupe au séparateur
"virgule+espace"les enregistrements du contrôle "Acteurs" du formulaire
For MonInd = 0 To UBound(MonTab) 'Cré un "tableau" avec chaque
élément trouvé
dbsCurrent.Execute "INSERT INTO [T_Acteurs] (NomActeur) VALUES ('"
&
MonTab(MonInd) & "');" ' Tri et ajoute les enregistrements à la T_Acteurs
'Bogue dans la ligne du dessus si un nom d'acteur comporte une
apostrophe (ex : Beverly D'Angelo)
Next
'Fin de la transformation
DoCmd.OpenQuery ("R_ActeursFilm_Ajout") 'Ajoute les enregistrements de
la
T_Acteurs + Le numéro de film à la T_ActeursFilm
DoCmd.OpenQuery ("R_Acteurs_Del ") 'Supprime les enregistrements de la
T_Acteurs
DoCmd.SetWarnings True
ListeActeurs.Requery
DoCmd.Beep
MsgBox "Tri terminé", vbInformation
End If
Set dbsCurrent = Nothing 'Libère la mémoire
End Sub
Tout marche bien sauf quand un nom d'acteur comporte une apostrophe (ex :
Beverly D'Angelo) ????????
Erreur d'execution '3075'
Erreur de syntaxe (opérateur absent)
dansl'expession
"Beverly D'Angelo";'.
D'autre part, est-ce que tu peux me dire si mes commentaires sont justes
STP
(çà pourrait servir à d'autres, donc autant ne pas mettre du false et
j'aime
bien comprendre ce que je fais)
Merci beaucoup,
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u8n5E7tpEHA.3424@TK2MSFTNGP12.phx.gbl...
Re !
...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
ne
se
passe (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.
3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
faire
passer de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau
=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudra
que tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace
mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque
chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs.
J'ai
mis des espace autour des " et des ' mais tu pourras les enlever,
c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:ev$OZwspEHA.536@TK2MSFTNGP09.phx.gbl...
J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split
qui
permet
de scinder un string en fonction d'un caractère séparateur (ici la
virgule
donc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
fait
partie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il
ne
te
reste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Next
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjghal$grq$1@news.tiscali.fr...
Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commode
de
ma fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visual
basic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(ce
n'est
pas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP
?
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,
et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partie
gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
va
se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
fais
si
un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message
news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans
quels
films
par exemple il a joué (ou si film musical dans quels morceaux
il
est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les
données
par
copier/coller dans le net et de plus celà me permet de pouvoir
faire
des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du
type
:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire
chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo
en
se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour
chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table
Acteurs.
En fait dans ton formulaire, plutot que de mettre les
acteurs
en
champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel
tu
y
mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas
ta
base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le
message
de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données
(Access2003)
de films qui contient les noms des acteurs (nombre
variable)
séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan
Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu
créer
une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporter
et
trouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Bon voilà où j'ensuis :
Private Sub BtnTrier_Click()
Dim dbsCurrent As Database
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Dim MonTab() As String
Dim MonInd As Integer
If Acteurs = "" Or IsNull(Acteurs) Then
MsgBox "Il n'y a pas d'acteurs enregistrés", 48
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery ("R_ActeursFilm_Del ") 'Supprime les enregistrements
de
la T_ActeursFilm de l'enregistrement courant du Formulaire
'Transformation des éléments du contrôle [Acteurs] en éléments
distincts :
MonTab = Split(Acteurs, ", ") 'Coupe au séparateur
"virgule+espace"les enregistrements du contrôle "Acteurs" du formulaire
For MonInd = 0 To UBound(MonTab) 'Cré un "tableau" avec chaque
élément trouvé
dbsCurrent.Execute "INSERT INTO [T_Acteurs] (NomActeur) VALUES ('"
&
MonTab(MonInd) & "');" ' Tri et ajoute les enregistrements à la T_Acteurs
'Bogue dans la ligne du dessus si un nom d'acteur comporte une
apostrophe (ex : Beverly D'Angelo)
Next
'Fin de la transformation
DoCmd.OpenQuery ("R_ActeursFilm_Ajout") 'Ajoute les enregistrements de
la
T_Acteurs + Le numéro de film à la T_ActeursFilm
DoCmd.OpenQuery ("R_Acteurs_Del ") 'Supprime les enregistrements de la
T_Acteurs
DoCmd.SetWarnings True
ListeActeurs.Requery
DoCmd.Beep
MsgBox "Tri terminé", vbInformation
End If
Set dbsCurrent = Nothing 'Libère la mémoire
End Sub
Tout marche bien sauf quand un nom d'acteur comporte une apostrophe (ex :
Beverly D'Angelo) ????????
Erreur d'execution '3075'
Erreur de syntaxe (opérateur absent)
dansl'expession
"Beverly D'Angelo";'.
D'autre part, est-ce que tu peux me dire si mes commentaires sont justes
STP
(çà pourrait servir à d'autres, donc autant ne pas mettre du false et
j'aime
bien comprendre ce que je fais)
Merci beaucoup,
Patrice
"Gafish" a écrit dans le message de
news:Re !...mais beaucoup de choses m'échappent :
1/ Quand je clique sur mon bouton, pas de message d'erreurs, mais rien
nesepasse (apparamment...)
C'est normal, car il faut que tu mettes quelque chose dans le for.3/ A quoi correspond "MonInd" ?
MonInd c'est un integer qui va servir de compteur. La boucle for va le
fairepasser de 0 à la taille max du tableau-1, et ainsi il va servir à aller
chercher les informations dans le table en servant d'indice.
Par exemple MonTab(MonInd) quant MonInd sera égal à 3, ira chercher les
informations contenues dans la "case" n°3 du tableau=> que je ne sait pas quoi mettre dans la partie :
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insert
avec cela
Au tout début de ton script mets la chose suivante :
Dim dbsCurrent as Database
set dbsCurrent = opendatabase(currentDb.Name)
Ca va te faire une connexion à la base de données Access en cours. Il
faudraque tu penses à mettre en toute fin de ton script
set dbsCurrent = nothing
pour libérer la connexion que tu viens de créer et vider l'espace
mémoire
occupé par ta variable dbsCurrent.
Ensuite dans le for, à l'endroit que tu indiques, tu mettras quelque
chose
du type (à adapter en fonction des tes tables et de tes champs) :
dbsCurrent.Execute "INSERT INTO [MesActeurs] (NomActeur) VALUES (' " &
MonTab(MonInd) & " ');"
ce qui va executer une requete d'insertion dans la table MesActeurs.
J'ai
mis des espace autour des " et des ' mais tu pourras les enlever,
c'était
juste pour une question de lisibilité ici.
Arnaud
Excusez-moi encore de tout ce dérangement.
Patrice
"Gafish" a écrit dans le message de
news:ev$J'ai pensé à mieux depuis tout à l'heure, tu as la fonction Split
qui
permetde scinder un string en fonction d'un caractère séparateur (ici la
virguledonc) et mettre tout cela dans un tableau.
Soit LesActeurs ton texte (ou string donc, c'est bon à connaitre, ca
faitpartie des ficelles du métier :p bon d'accord elle était facile )
Exemple :
Dim MonTab() as string
MonTab = Split(LesActeurs, ",")
Et là tu as maintenant dans ton tableau MonTab tous tes acteurs. Il
ne
tereste plus qu'à le parcourir et à faire un insert à chaque fois :
Dim MonInd as integer
For MonInd = 1 To UBound(MonTab)
'ici tu as ton acteur dans MonTab(MonInd) tu peux donc faire ton
insertavec cela
Next
"PatCatNat's" a écrit dans le message news:
cjghal$grq$Merci Arnaud,
J'en suis au point où je viens de regarder dans le tiroir de la
commodedema fille pour trouver un sting ;o)))
Plaisanterie mise à part, j'ai regarder dans la commode Help de
visualbasic, car je ne connaissais pas !!!
Effectivement celà ressemble à ce que je cherche, mais je
sèche...(cen'estpas commode... :-)))
Pourrais-tu m'écrire un bout de code sur l'idée que tu développes
STP?
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie
gauche,ettufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la
partiegaucheet la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string
vaseréduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu
faissiunnom revient ?
Arnaud
"PatCatNat's" a écrit dans le message
news:cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la
suitepourpouvoir choisir un acteur existant dans ma base et savoir dans
quelsfilmspar exemple il a joué (ou si film musical dans quels morceaux
il
estprésentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les
données
parcopier/coller dans le net et de plus celà me permet de pouvoir
fairedesétats avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table
acteur,maisjene sais pas par quel voie passer pour trouver une formule du
type:
"Après chaque virgule + espace je passe à un enregistrement
suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire
chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo
ensedéplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour
chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des
mêmesacteursquisont dans des films différents, donnc il te faut une table
Acteurs.En fait dans ton formulaire, plutot que de mettre les
acteurs
enchampMémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel
tu
ymettralesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas
ta
baseestàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le
message
denews:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de
données(Access2003)de films qui contient les noms des acteurs (nombre
variable)
séparéspardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan
Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu
créer
unetableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de
réimporterettrouver une requête qui me fasse l'affaire... mais
nothing...
Quelqu'un aurait une idée ????
Patrice
Rectif :
pas un sting (c dans ma musique çà...)
un string....
J'me mélange les ficelles ;o))))
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche, et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais si un
nom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en champ
Mémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y mettra
lesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable) séparés
pardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de réimporter
ettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Rectif :
pas un sting (c dans ma musique çà...)
un string....
J'me mélange les ficelles ;o))))
Patrice
"Gafish" <---gafish@free.fr----nospam> a écrit dans le message de
news:u6GobWspEHA.2724@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche, et
tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais si un
nom revient ?
Arnaud
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message news:
cjgcfd$jed$1@news.tiscali.fr...
Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pour
pouvoir choisir un acteur existant dans ma base et savoir dans quels
films
par exemple il a joué (ou si film musical dans quels morceaux il est
présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
mais
je
ne sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" <abc@def.gh> a écrit dans le message de
news:%23LTbeSrpEHA.2864@TK2MSFTNGP12.phx.gbl...
Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteurs
qui
sont dans des films différents, donnc il te faut une table Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en champ
Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y mettra
les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta base
est
à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" <XYZpatousky@tiscali.fr> a écrit dans le message de
news:cjfaeo$pq7$1@news.tiscali.fr...
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)
de films qui contient les noms des acteurs (nombre variable) séparés
par
des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
table
par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de réimporter
et
trouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice
Rectif :
pas un sting (c dans ma musique çà...)
un string....
J'me mélange les ficelles ;o))))
Patrice
"Gafish" a écrit dans le message de
news:Bonjour,
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche, et
tufais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais si un
nom revient ?
Arnaud
"PatCatNat's" a écrit dans le message news:
cjgcfd$jed$Bonjour et merci,
L'utilité est de pouvoir créer un état (ou autre objet) par la suite
pourpouvoir choisir un acteur existant dans ma base et savoir dans quels
filmspar exemple il a joué (ou si film musical dans quels morceaux il est
présentaussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur,
maisjene sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" a écrit dans le message de
news:%Salut
Il te faut faire une procédure spéciale qui va te lire chaque
Enregistrementde Film et y extraire les Acteurs(Extraction du fichier mémo en se
déplacantà l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes
acteursquisont dans des films différents, donnc il te faut une table Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en champ
Mémo,tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y mettra
lesacteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta base
estàredéfinir.
Bonne journée.
Bye
"PatCatNat's" a écrit dans le message de
news:cjfaeo$pq7$Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données
(Access2003)de films qui contient les noms des acteurs (nombre variable) séparés
pardesvirgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson,
ChristopherEccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une
tableparprocédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de réimporter
ettrouver une requête qui me fasse l'affaire... mais nothing...
Quelqu'un aurait une idée ????
Patrice