Oops ! Désolé... J'espère que tu as une sauvegarde de tes données...
Concernant ce désagrément, le problème doit se situer au niveau de la
ligne
rs![n°]=mid(rs!adresse,aux+1)
Essaie avec :
rs.Fields("No")=mid(rs!adresse,aux+1)
Vérifie tout de même l'orthographe des champs...
En ce jour mémorable du lundi 22/10/2007, tu as émis l'idée suivante:Bonsoir Titi,
Merci pour cette réponse rapide.
Malheureusement, cela ne fonctionne qu'à moitié. Je m'explique :
J'ai remplacé les noms de champ et le nom de la table par la mienne.
J'ai exécuté le module qui a enlevé tous les numéros dans le champ
"Adresse" de la table MAIS ne les a pas replacés dans le champ "No"
Merci pour l'aide.
André
"Thierry (ze Titi)" a écrit dans le
message de news:Bonjour Andre !
Si tu as déjà créé ton champ, tu peux utiliser une fonction du style de
ce qui suit. A coller dans un nouveau module et à exécuter une seule
fois.
Sub scinderAdresse()
dim rs As DAO.Recordset
dim aux As Integer
Set rs=CurrentDb.OpenRecordset("laTable",dbOpenDynaset)
rs.MoveLast:rs.MoveFirst
While Not rs.EOF
aux=InStr(rs!adresse,",")
If aux<>0 Then
rs.Edit
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
rs.Update
End If
rs.MoveNext
Wend
Set rs=Nothing
End Sub
A tester...
Message du lundi 22/10/2007Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
-- Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Bonjour,
Puis-je ?
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
AIe !!
Si RS!Adresse contient 25 , rue de la joie
alors aprés rs!adresse=Left(rs!adresse,aux-1) Adressse ne contient plus
que 25 et le rs![n°]=mid(rs!adresse,aux+1) qui suit ne donne plus rien.
Ou alors j'ai pas compris ;-)
M'est d'avis qu'un Dim MonAdresse as string
et un
MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Oops ! Désolé... J'espère que tu as une sauvegarde de tes données...
Concernant ce désagrément, le problème doit se situer au niveau de la
ligne
rs![n°]=mid(rs!adresse,aux+1)
Essaie avec :
rs.Fields("No")=mid(rs!adresse,aux+1)
Vérifie tout de même l'orthographe des champs...
En ce jour mémorable du lundi 22/10/2007, tu as émis l'idée suivante:
Bonsoir Titi,
Merci pour cette réponse rapide.
Malheureusement, cela ne fonctionne qu'à moitié. Je m'explique :
J'ai remplacé les noms de champ et le nom de la table par la mienne.
J'ai exécuté le module qui a enlevé tous les numéros dans le champ
"Adresse" de la table MAIS ne les a pas replacés dans le champ "No"
Merci pour l'aide.
André
"Thierry (ze Titi)" <ze_titi_enlever-ceci@tiscali.fr> a écrit dans le
message de news: mn.b3787d7ad2e68388.64280@tiscali.fr...
Bonjour Andre !
Si tu as déjà créé ton champ, tu peux utiliser une fonction du style de
ce qui suit. A coller dans un nouveau module et à exécuter une seule
fois.
Sub scinderAdresse()
dim rs As DAO.Recordset
dim aux As Integer
Set rs=CurrentDb.OpenRecordset("laTable",dbOpenDynaset)
rs.MoveLast:rs.MoveFirst
While Not rs.EOF
aux=InStr(rs!adresse,",")
If aux<>0 Then
rs.Edit
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
rs.Update
End If
rs.MoveNext
Wend
Set rs=Nothing
End Sub
A tester...
Message du lundi 22/10/2007
Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
-- Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Bonjour,
Puis-je ?
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
AIe !!
Si RS!Adresse contient 25 , rue de la joie
alors aprés rs!adresse=Left(rs!adresse,aux-1) Adressse ne contient plus
que 25 et le rs![n°]=mid(rs!adresse,aux+1) qui suit ne donne plus rien.
Ou alors j'ai pas compris ;-)
M'est d'avis qu'un Dim MonAdresse as string
et un
MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Oops ! Désolé... J'espère que tu as une sauvegarde de tes données...
Concernant ce désagrément, le problème doit se situer au niveau de la
ligne
rs![n°]=mid(rs!adresse,aux+1)
Essaie avec :
rs.Fields("No")=mid(rs!adresse,aux+1)
Vérifie tout de même l'orthographe des champs...
En ce jour mémorable du lundi 22/10/2007, tu as émis l'idée suivante:Bonsoir Titi,
Merci pour cette réponse rapide.
Malheureusement, cela ne fonctionne qu'à moitié. Je m'explique :
J'ai remplacé les noms de champ et le nom de la table par la mienne.
J'ai exécuté le module qui a enlevé tous les numéros dans le champ
"Adresse" de la table MAIS ne les a pas replacés dans le champ "No"
Merci pour l'aide.
André
"Thierry (ze Titi)" a écrit dans le
message de news:Bonjour Andre !
Si tu as déjà créé ton champ, tu peux utiliser une fonction du style de
ce qui suit. A coller dans un nouveau module et à exécuter une seule
fois.
Sub scinderAdresse()
dim rs As DAO.Recordset
dim aux As Integer
Set rs=CurrentDb.OpenRecordset("laTable",dbOpenDynaset)
rs.MoveLast:rs.MoveFirst
While Not rs.EOF
aux=InStr(rs!adresse,",")
If aux<>0 Then
rs.Edit
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
rs.Update
End If
rs.MoveNext
Wend
Set rs=Nothing
End Sub
A tester...
Message du lundi 22/10/2007Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
-- Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Bonjour,
Puis-je ?
rs!adresse=Left(rs!adresse,aux-1)
rs![n°]=mid(rs!adresse,aux+1)
AIe !!
Si RS!Adresse contient 25 , rue de la joie
alors aprés rs!adresse=Left(rs!adresse,aux-1) Adressse ne contient plus
que 25 et le rs![n°]=mid(rs!adresse,aux+1) qui suit ne donne plus rien.
Ou alors j'ai pas compris ;-)
M'est d'avis qu'un Dim MonAdresse as string
et un
MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Désolé de t'importuner mais j'ai le même résultat : plus de , et de No dans
le champ "adresse" MAIS toujours pas de remplissage du champ "No". Les champs
"adresse" et "No" sont de type texte.MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Désolé de t'importuner mais j'ai le même résultat : plus de , et de No dans
le champ "adresse" MAIS toujours pas de remplissage du champ "No". Les champs
"adresse" et "No" sont de type texte.
MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Désolé de t'importuner mais j'ai le même résultat : plus de , et de No dans
le champ "adresse" MAIS toujours pas de remplissage du champ "No". Les champs
"adresse" et "No" sont de type texte.MonAdresse= Rst!Adresse
rs![N°]=Left(Monadresse,aux-1)
rs!adresse=mid(MonAdresse,aux+1)
devrait faire l'affaire ;-)
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" <phil_85_85enlever@yahoo.com> a écrit dans le message de news:
mn.b51d7d7aeadc659f.82370@yahoo.com...
Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent ne
pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui contient
les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris de
toute pièce en tapant exactement la ligne suivante sur la ligne champ en
respectant tous les signes et caractères (y compris l'accent circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un champ
supplémentaire appelé "position" qui indique à quelle position se trouve la
virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère virgule)
dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés important
l'onglet requête) celle que tu viens de créer ci-dessus puis clic sur le
bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu écris
de toute pièce en tapant exactement les deux lignes suivante sur la ligne
champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est ajouté
pour chaque enregistrement la "position" de la virgule dans chaque champ
"adresse" grace à la requête ci-dessus. On peut alors décomposer le champ
adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à gauche de
la position de la virgule et dans un champ Num tout ce qui est à droite de la
virgule. La fonction Trim permet d'enlever les espaces parasites qui peuvent
être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le fonctionnement
de mes propositions de requêtes sans recopier du code VBA que tu ne comprends
pas et que les spécialistes n'arrivent pas toujours à faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière une
virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux "" en
fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" <phil_85_85enlever@yahoo.com> a écrit dans le message de news:
mn.b51d7d7aeadc659f.82370@yahoo.com...
Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent ne
pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui contient
les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris de
toute pièce en tapant exactement la ligne suivante sur la ligne champ en
respectant tous les signes et caractères (y compris l'accent circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un champ
supplémentaire appelé "position" qui indique à quelle position se trouve la
virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère virgule)
dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés important
l'onglet requête) celle que tu viens de créer ci-dessus puis clic sur le
bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu écris
de toute pièce en tapant exactement les deux lignes suivante sur la ligne
champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est ajouté
pour chaque enregistrement la "position" de la virgule dans chaque champ
"adresse" grace à la requête ci-dessus. On peut alors décomposer le champ
adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à gauche de
la position de la virgule et dans un champ Num tout ce qui est à droite de la
virgule. La fonction Trim permet d'enlever les espaces parasites qui peuvent
être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le fonctionnement
de mes propositions de requêtes sans recopier du code VBA que tu ne comprends
pas et que les spécialistes n'arrivent pas toujours à faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière une
virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux "" en
fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais, je
suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec tous
ses champs (ou seulement ceux qui te sont utiles) auxquel tu ajoutes un
champs calculé composé comme Position : DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ en
deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure les
espaces parasites devant et derrière les parties du champs "adresse"
tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent ne
pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui contient
les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris de
toute pièce en tapant exactement la ligne suivante sur la ligne champ en
respectant tous les signes et caractères (y compris l'accent circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un champ
supplémentaire appelé "position" qui indique à quelle position se trouve la
virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère virgule)
dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés important
l'onglet requête) celle que tu viens de créer ci-dessus puis clic sur le
bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu écris
de toute pièce en tapant exactement les deux lignes suivante sur la ligne
champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est ajouté
pour chaque enregistrement la "position" de la virgule dans chaque champ
"adresse" grace à la requête ci-dessus. On peut alors décomposer le champ
adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à gauche de
la position de la virgule et dans un champ Num tout ce qui est à droite de la
virgule. La fonction Trim permet d'enlever les espaces parasites qui peuvent
être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le fonctionnement
de mes propositions de requêtes sans recopier du code VBA que tu ne comprends
pas et que les spécialistes n'arrivent pas toujours à faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière une
virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux "" en
fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
Salut,
"Thierry (ze Titi)"
| rs!No=mid(rs!adresse,aux+1)
|
| Si ça ne fonctionne pas, soit il y a un problème dans les noms des
| champs
vouui ;-)
rs!No
doit faire mal à Access, car probablement interpreté comme rs!faux
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"Thierry (ze Titi)"
| rs!No=mid(rs!adresse,aux+1)
|
| Si ça ne fonctionne pas, soit il y a un problème dans les noms des
| champs
vouui ;-)
rs!No
doit faire mal à Access, car probablement interpreté comme rs!faux
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"Thierry (ze Titi)"
| rs!No=mid(rs!adresse,aux+1)
|
| Si ça ne fonctionne pas, soit il y a un problème dans les noms des
| champs
vouui ;-)
rs!No
doit faire mal à Access, car probablement interpreté comme rs!faux
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Merci Phil pour ton intervention. Malheureusement, comme je le disais,
je suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec
tous ses champs (ou seulement ceux qui te sont utiles) auxquel tu
ajoutes un champs calculé composé comme Position :
DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ
en deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure
les espaces parasites devant et derrière les parties du champs
"adresse" tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent
ne pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui
contient les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris
de toute pièce en tapant exactement la ligne suivante sur la ligne champ
en respectant tous les signes et caractères (y compris l'accent
circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un
champ supplémentaire appelé "position" qui indique à quelle position se
trouve la virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère
virgule) dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés
important l'onglet requête) celle que tu viens de créer ci-dessus puis
clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu
écris de toute pièce en tapant exactement les deux lignes suivante sur la
ligne champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est
ajouté pour chaque enregistrement la "position" de la virgule dans chaque
champ "adresse" grace à la requête ci-dessus. On peut alors décomposer le
champ adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à
gauche de la position de la virgule et dans un champ Num tout ce qui est
à droite de la virgule. La fonction Trim permet d'enlever les espaces
parasites qui peuvent être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le
fonctionnement de mes propositions de requêtes sans recopier du code VBA
que tu ne comprends pas et que les spécialistes n'arrivent pas toujours à
faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de
blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière
une virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux ""
en fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
petite précision
cette méthode ne modifie pas les données et effectue un affichage
dynamique des données.
une fois testée la seconde requète peut être transformée en requête de
création de table, puis après son exécution la table d'origine sera
supprimée.
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais,
je suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" <phil_85_85enlever@yahoo.com> a écrit dans le message de news:
mn.b51d7d7aeadc659f.82370@yahoo.com...
Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec
tous ses champs (ou seulement ceux qui te sont utiles) auxquel tu
ajoutes un champs calculé composé comme Position :
DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ
en deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure
les espaces parasites devant et derrière les parties du champs
"adresse" tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent
ne pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui
contient les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris
de toute pièce en tapant exactement la ligne suivante sur la ligne champ
en respectant tous les signes et caractères (y compris l'accent
circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un
champ supplémentaire appelé "position" qui indique à quelle position se
trouve la virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère
virgule) dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés
important l'onglet requête) celle que tu viens de créer ci-dessus puis
clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu
écris de toute pièce en tapant exactement les deux lignes suivante sur la
ligne champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est
ajouté pour chaque enregistrement la "position" de la virgule dans chaque
champ "adresse" grace à la requête ci-dessus. On peut alors décomposer le
champ adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à
gauche de la position de la virgule et dans un champ Num tout ce qui est
à droite de la virgule. La fonction Trim permet d'enlever les espaces
parasites qui peuvent être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le
fonctionnement de mes propositions de requêtes sans recopier du code VBA
que tu ne comprends pas et que les spécialistes n'arrivent pas toujours à
faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de
blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière
une virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux ""
en fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
petite précision
cette méthode ne modifie pas les données et effectue un affichage
dynamique des données.
une fois testée la seconde requète peut être transformée en requête de
création de table, puis après son exécution la table d'origine sera
supprimée.
Phil
Merci Phil pour ton intervention. Malheureusement, comme je le disais,
je suis réellement néophyte. J'ai fait ce que tu as écrit et ... aucun
changement.
Merci pour ta peine André
"Phil" a écrit dans le message de news:Bonjour à toutes et tous,
Voilà, je suis un grand néophyte qui comprends vite quand on lui a
expliqué longtemps.
J'ai reçu une table Access 2003 dans laquelle un cham "adresse" a été
rempli avec le nom de la rue, suivi après une virgule du n° de
l'immeuble.
Pour des raisons de tri, je souhaite créer un champ n° et scinder le
champ "adresse" en supprimant la , et le n° pour l'injecter dans le
nouveau champ "n°".
Est-il possible de réaliser cette opération en une fois pour toute la
table?
Déjà merci pour vos avis éclairés
André
Bonsoir,
je te propose
1) de créer une première requète sélection basée sur ta table avec
tous ses champs (ou seulement ceux qui te sont utiles) auxquel tu
ajoutes un champs calculé composé comme Position :
DansChaîne([adresse];",")
(n'oublies pas l'accent circonflexe sur le i de chaine)
cela te donne la position de la virgule pour chaque enregistrement.
2) tu créé une seconde requète basée sur la première avec deux champs
supplémentaires
le premier comme AdrCourte:left([adresse];position-1)
le second comme N°:mid([adresse];position+1)
Connaissant la position de la virgule il est aisé de couper le champ
en deux. Vérifies si c'est bien position-1 et +1 et adaptes si besoin.
Bonne réception
Phil
pour être plus complet tu peux ajouter la fonction Trim pour exclure
les espaces parasites devant et derrière les parties du champs
"adresse" tronqués
les champs deviennent
AdrCourte:trim(left([adresse];position-1))
N°:trim(mid([adresse];position+1))
Phil
Bonsoir André,
excuse moi si je n'ai pas été clair et si je te répond ce soir mais je me
connecte de mon domicile.
Pour le fun et pour ceux qui sont réfrataires au code VBA ou souhaitent
ne pas s'en servir je reprend mon explication
1) tu créé une requète basée sur la table contenant les listes d'adresses
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet table celle qui
contient les données de tes écoles. puis clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin ou tous en fonction de tes
besoins
puis au bout à droite des différents champs tu en ajoutes un que tu écris
de toute pièce en tapant exactement la ligne suivante sur la ligne champ
en respectant tous les signes et caractères (y compris l'accent
circonflexe) :
Position : DansChaîne([adresse];",")
enregistre la macro en lui donnant un nom significatif
quand tu l'exécutes tu obtiens les données de toute ta table avec un
champ supplémentaire appelé "position" qui indique à quelle position se
trouve la virgule dans le champs "adresse"
explication du fonctionnement :
la fonction "DansChaîne" indique la position de "," (le caractère
virgule) dans le champ [adresse]
le champ calculé du résultat s'appelle "Position"
cette requête n'est qu'une étape première étape
on poursuit en reprenant depuis le début
2) tu créé une nouvelle requète basée sur la première requête ci-dessus
contenant les données des écoles plus la position de la virgule
requêtes > nouveau > mode création
dans "afficher la table" tu choisis dans l'onglet "requête" (trés
important l'onglet requête) celle que tu viens de créer ci-dessus puis
clic sur le bouton fermer.
tu sélectionnes les champs dont tu as besoin
puis au bout à droite des différents champs tu en ajoutes deux que tu
écris de toute pièce en tapant exactement les deux lignes suivante sur la
ligne champ dans deux cases différentes :
Adr:trim(left([adresse];position-1))
Num:trim(mid([adresse];position+1))
explication de cette requète
elle est basée sur les données de la liste d'adresse à laquelle est
ajouté pour chaque enregistrement la "position" de la virgule dans chaque
champ "adresse" grace à la requête ci-dessus. On peut alors décomposer le
champ adresse avec dans un nouveau champ appelé "Adr" tout ce qui est à
gauche de la position de la virgule et dans un champ Num tout ce qui est
à droite de la virgule. La fonction Trim permet d'enlever les espaces
parasites qui peuvent être avant ou après la virgule
exemple pour une adresse comme ceci :
adresse = "Rue du général de Gaulle , 25"
va donner sans les fonctions "Trim"
Adr = "Rue du général de Gaulle " et Num = " 25"
avec les fonction Trim tu obtiens
Adr = "Rue du général de Gaulle" et Num = "25"
les espaces parasites à la fin du nom de rue et avant le numéro sont
supprimés.
J'espère avoir été plus clair et te permettre de comprendre le
fonctionnement de mes propositions de requêtes sans recopier du code VBA
que tu ne comprends pas et que les spécialistes n'arrivent pas toujours à
faire fonctionner ;-)
Il existe encore un cas celui où les adresses n'ont pas de virgule, la 2°
requête va (peut être) se bloquer car la position sera 0 (zéro) pour y
pallier il faut tester la valeur de position pour ne pas avoir de
blocage.
modifies les deux champs de la seconde requête comme suit
Adr:iif([position]>0;trim(left([adresse];position-1);[adresse])
Num:iif([position]>0;trim(mid([adresse];position+1));"")
explication :
pour le premier champ si position est >0 on effectue le calcul tel que
précédement expliqué "trim(left([adresse];position-1)" sinon
ont retourne le champ [adresse] complet (il n'y a pas de numéro derrière
une virgule dans cet enregistrement).
pour le second champ même test et même opération si "position" >0 mais si
"position" =0 ont ne retourne rien dans le champ Num (c'est les deux ""
en fin de ligne).
Merci de me faire savoir si cela a pu t'aider.
Phil
petite précision
cette méthode ne modifie pas les données et effectue un affichage
dynamique des données.
une fois testée la seconde requète peut être transformée en requête de
création de table, puis après son exécution la table d'origine sera
supprimée.
Phil