Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

importation adresses

8 réponses
Avatar
Jean-Marc
Salut à tous,

Toutes les semaines je reçois des feuilles (en papier, eh oui ça existe
encore. Lol) des revues dans lesquelles nous éditons des publicités.
Sur ces feuilles sont reprises les adresses des personnes ayant demandé des
brochures d'information.
Je scanne et je fais un OCR, mais je voudrais traiter cela de manière un peu
plus approfondie après mais je suis coincé.

Les coordonnées arrivent sous cette forme (Le # représente un espace) :
PRENOM#NOM
ADRESSE
VILLE#ABREVIATION(2 lettres)#CODE POSTAL
TELEPHONE ( Si un tél est encodé, et tjrs au format (999) 00-000 )

Lorsque j'exporte mes données OCR, il me fait un tableau à 1 colonne dans
lequel il me met les coordonnées telles que dans l'exemple ci-dessus.

Je voudrais importer ces données dans les champs dont les noms sont en
majuscule dans l'exemple.
Je n'ai pas de pbl pour séparer le nom du prénom ni la ville de
l'abréviation et du code postal.
Je peux exporter mon ocr en word (Tableau) ou en excel, mais je ne sais pas
comment faire pour détecter si un tél est encodé ou pas. Il doit y avoir
moyen puisqu'un tél commence toujours par une parenthèse, mais je ne sais
pas comment faire.
Dois je faire une table intermédiaire dans laquelle je met les coordonnées
issues de l'OCR pour traitement ?
Et comment faire puisque dans mon fichier word ou excel, toutes les données
sont dans la même colonne, donc le même record du point de vue d'access ?

Merci de vos z'avis z'avisés,

JM

8 réponses

Avatar
Eric
Bonjour Jean-Marc

Avec la fonction Split, on devrait pouvoir faire ca.
Par contre je n'ai pas bien compris ton histoire de numero de Tel encodé.
Si tel pas encodé c'est du genre 01.02.03.04.05 et si tel encodé ca
serait : (033) 01.02.03.04.05
Ok ?

De plus pour chaque enregistrement tu as obligatoirement 4 lignes et dans
l'ordre que tu as donné ?

Tiens moi au courant
A+
Eric

PS : Pour l'exportation moi je ferai ca vers Excel


"Jean-Marc" écrivait
news:egq$:

Salut à tous,

Toutes les semaines je reçois des feuilles (en papier, eh oui ça
existe encore. Lol) des revues dans lesquelles nous éditons des
publicités. Sur ces feuilles sont reprises les adresses des personnes
ayant demandé des brochures d'information.
Je scanne et je fais un OCR, mais je voudrais traiter cela de manière
un peu plus approfondie après mais je suis coincé.

Les coordonnées arrivent sous cette forme (Le # représente un espace)
: PRENOM#NOM
ADRESSE
VILLE#ABREVIATION(2 lettres)#CODE POSTAL
TELEPHONE ( Si un tél est encodé, et tjrs au format (999) 00-000 )

Lorsque j'exporte mes données OCR, il me fait un tableau à 1 colonne
dans lequel il me met les coordonnées telles que dans l'exemple
ci-dessus.

Je voudrais importer ces données dans les champs dont les noms sont en
majuscule dans l'exemple.
Je n'ai pas de pbl pour séparer le nom du prénom ni la ville de
l'abréviation et du code postal.
Je peux exporter mon ocr en word (Tableau) ou en excel, mais je ne
sais pas comment faire pour détecter si un tél est encodé ou pas. Il
doit y avoir moyen puisqu'un tél commence toujours par une parenthèse,
mais je ne sais pas comment faire.
Dois je faire une table intermédiaire dans laquelle je met les
coordonnées issues de l'OCR pour traitement ?
Et comment faire puisque dans mon fichier word ou excel, toutes les
données sont dans la même colonne, donc le même record du point de vue
d'access ?

Merci de vos z'avis z'avisés,

JM





Avatar
Eric
Re Bonsoir Jean-Marc

Je me suis amusé à faire la procédure donc c'est quand tu veux.
(Dispo sur simple demande.)
Pour ton importation, effectivement tu crées une table intermédiaire dans
laquelle tu importes les données OCR du fichier Excel dans un seul
enregistrement. Je suis parti sur ce principe. N'ayant pas de scanner,
j'ai fait une simulation sur une table contenant en jeu de test 1 seul
enregistrement mais qui incorporent 5 Clients.
A la sortie, j'ai une table avec 5 enregistrements structurés ainsi :
Nom, Prenom, Adresse, Ville, Abreviation, CodePostal, Phone.

A+
Eric


Eric écrivait
news::

Bonjour Jean-Marc

Avec la fonction Split, on devrait pouvoir faire ca.
Par contre je n'ai pas bien compris ton histoire de numero de Tel
encodé. Si tel pas encodé c'est du genre 01.02.03.04.05 et si tel
encodé ca serait : (033) 01.02.03.04.05
Ok ?

De plus pour chaque enregistrement tu as obligatoirement 4 lignes et
dans l'ordre que tu as donné ?

Tiens moi au courant
A+
Eric

PS : Pour l'exportation moi je ferai ca vers Excel


"Jean-Marc" écrivait
news:egq$:

Salut à tous,

Toutes les semaines je reçois des feuilles (en papier, eh oui ça
existe encore. Lol) des revues dans lesquelles nous éditons des
publicités. Sur ces feuilles sont reprises les adresses des personnes
ayant demandé des brochures d'information.
Je scanne et je fais un OCR, mais je voudrais traiter cela de manière
un peu plus approfondie après mais je suis coincé.

Les coordonnées arrivent sous cette forme (Le # représente un espace)
: PRENOM#NOM
ADRESSE
VILLE#ABREVIATION(2 lettres)#CODE POSTAL
TELEPHONE ( Si un tél est encodé, et tjrs au format (999) 00-000 )

Lorsque j'exporte mes données OCR, il me fait un tableau à 1 colonne
dans lequel il me met les coordonnées telles que dans l'exemple
ci-dessus.

Je voudrais importer ces données dans les champs dont les noms sont
en majuscule dans l'exemple.
Je n'ai pas de pbl pour séparer le nom du prénom ni la ville de
l'abréviation et du code postal.
Je peux exporter mon ocr en word (Tableau) ou en excel, mais je ne
sais pas comment faire pour détecter si un tél est encodé ou pas. Il
doit y avoir moyen puisqu'un tél commence toujours par une
parenthèse, mais je ne sais pas comment faire. Dois je faire une
table intermédiaire dans laquelle je met les coordonnées issues de
l'OCR pour traitement ? Et comment faire puisque dans mon fichier
word ou excel, toutes les données sont dans la même colonne, donc le
même record du point de vue d'access ?

Merci de vos z'avis z'avisés,

JM









Avatar
Jean-Marc
Salut Eric et merci de ton aide qui, évidemment, ne se refuse pas.

Pour le tél ce n'est pas tout à fait ça. Je reçois des feuilles des revues
dans lesquelles j'édites et sur lesquelles ils encodent les données des
personnes ayant demandé des infos, mais les gens ne mettent pas toujours
leur num de tél. Ceci entraîne que quand ils encodent leur num de tél, j'ai
4 lignes pour un enregistrement, et quand ils ne le mettent pas (La majorité
du tps), je n'ai que 3 lignes. Et pour faire "plus drôle", tout ça est
mélangé. Je peux avoir 10 enregistrements à 3 lignes puis un à 4 lignes.
Comme je suis au Québec et que j'exporte bcp aux USA, les adresses dont du
type
PRENOM NOM
ADRESSE
VILLE ABRE CP
TEL

Avec ABRE = abréviation de l'état (TJRS en 2 lettres)
Les Etiquettes sont toujours en majuscule, pour des raisons postales

Ca donne des adresses du style :
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890

et plus souvent :
JEAN TRUC
56 BROL STREET
NEW YORK NY 12345


Donc dans mon fichier Excel, j'ai :

JEAN TRUC
56 BROL STREET
NEW YORK NY 12345
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143

Merci de ton aide, et si le code est déjà tout fait, évidemment je ne le
refuserai pas. Faudrait être fou ... Lol

"Eric" a écrit dans le message de
news:
Re Bonsoir Jean-Marc

Je me suis amusé à faire la procédure donc c'est quand tu veux.
(Dispo sur simple demande.)
Pour ton importation, effectivement tu crées une table intermédiaire dans
laquelle tu importes les données OCR du fichier Excel dans un seul
enregistrement. Je suis parti sur ce principe. N'ayant pas de scanner,
j'ai fait une simulation sur une table contenant en jeu de test 1 seul
enregistrement mais qui incorporent 5 Clients.
A la sortie, j'ai une table avec 5 enregistrements structurés ainsi :
Nom, Prenom, Adresse, Ville, Abreviation, CodePostal, Phone.

A+
Eric


Eric écrivait
news::

Bonjour Jean-Marc

Avec la fonction Split, on devrait pouvoir faire ca.
Par contre je n'ai pas bien compris ton histoire de numero de Tel
encodé. Si tel pas encodé c'est du genre 01.02.03.04.05 et si tel
encodé ca serait : (033) 01.02.03.04.05
Ok ?

De plus pour chaque enregistrement tu as obligatoirement 4 lignes et
dans l'ordre que tu as donné ?

Tiens moi au courant
A+
Eric

PS : Pour l'exportation moi je ferai ca vers Excel


"Jean-Marc" écrivait
news:egq$:

Salut à tous,

Toutes les semaines je reçois des feuilles (en papier, eh oui ça
existe encore. Lol) des revues dans lesquelles nous éditons des
publicités. Sur ces feuilles sont reprises les adresses des personnes
ayant demandé des brochures d'information.
Je scanne et je fais un OCR, mais je voudrais traiter cela de manière
un peu plus approfondie après mais je suis coincé.

Les coordonnées arrivent sous cette forme (Le # représente un espace)
: PRENOM#NOM
ADRESSE
VILLE#ABREVIATION(2 lettres)#CODE POSTAL
TELEPHONE ( Si un tél est encodé, et tjrs au format (999) 00-000 )

Lorsque j'exporte mes données OCR, il me fait un tableau à 1 colonne
dans lequel il me met les coordonnées telles que dans l'exemple
ci-dessus.

Je voudrais importer ces données dans les champs dont les noms sont
en majuscule dans l'exemple.
Je n'ai pas de pbl pour séparer le nom du prénom ni la ville de
l'abréviation et du code postal.
Je peux exporter mon ocr en word (Tableau) ou en excel, mais je ne
sais pas comment faire pour détecter si un tél est encodé ou pas. Il
doit y avoir moyen puisqu'un tél commence toujours par une
parenthèse, mais je ne sais pas comment faire. Dois je faire une
table intermédiaire dans laquelle je met les coordonnées issues de
l'OCR pour traitement ? Et comment faire puisque dans mon fichier
word ou excel, toutes les données sont dans la même colonne, donc le
même record du point de vue d'access ?

Merci de vos z'avis z'avisés,

JM












Avatar
Eric
Bonsoir Jean-Marc

Hey, suis inquiet si tu as des trucs du genre:
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143


car là t'as des enregistrements avec un titre de civilité !
ce qui m'amène à me poser la question des Mac Douglas ou Dupont de
Neumours comme Noms !!! car j'avais pas prévu ca.

Coté telephone, si sur les enregistrements ayant un tel il y a toujours
des () entourant l'indicatif ca doit être solvable sans trop de
problèmes, meme s'ils n'apparaissent pas sytématiquement.
Par contre je ne sais pas encore comment je vais traiter les noms
composés avec des espaces surtout s'ils son suivis par un prénom composé,
lui aussi, avec des espaces, du genre Mc Donald Paul Louis.
Question subsidiaire : dois-tu impérativement séparer le nom du prénom ou
est-il possible de stocker dans un seul champ le nom ET le prénom.

Bon, vais aller regarder ca et te tiens au courant.
Par contre, précises moi si le N° de tel a toujours un indicatif quand il
est présent.

A+
Eric

PS : le code est prêt pour la partie standard de base




"Jean-Marc" écrivait
news:Wmccc.6364$:

Salut Eric et merci de ton aide qui, évidemment, ne se refuse pas.

Pour le tél ce n'est pas tout à fait ça. Je reçois des feuilles des
revues dans lesquelles j'édites et sur lesquelles ils encodent les
données des personnes ayant demandé des infos, mais les gens ne
mettent pas toujours leur num de tél. Ceci entraîne que quand ils
encodent leur num de tél, j'ai 4 lignes pour un enregistrement, et
quand ils ne le mettent pas (La majorité du tps), je n'ai que 3
lignes. Et pour faire "plus drôle", tout ça est mélangé. Je peux avoir
10 enregistrements à 3 lignes puis un à 4 lignes. Comme je suis au
Québec et que j'exporte bcp aux USA, les adresses dont du type
PRENOM NOM
ADRESSE
VILLE ABRE CP
TEL

Avec ABRE = abréviation de l'état (TJRS en 2 lettres)
Les Etiquettes sont toujours en majuscule, pour des raisons postales

Ca donne des adresses du style :
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890

et plus souvent :
JEAN TRUC
56 BROL STREET
NEW YORK NY 12345


Donc dans mon fichier Excel, j'ai :

JEAN TRUC
56 BROL STREET
NEW YORK NY 12345
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143



Avatar
Jean-Marc
Salut,

En effet, le tél est TJRS avec 3 chiffres entre parenthèses en Amérique du
Nord.
Pour le nom, dans ma bdd le prénom est effectivement dans un autre champs
que le nom parce que je trie sur le nom concaténé, mais dans 99.99% des cas
le nom est écrit en un seul mot, style MCDONALD, mais pas le prénom, lui.
Le prénom précède le nom, pas comme en Europe ou souvent le nom est devant.
Pour les civilités, je peux mettre une recherche sur le 1er mot et, si le
1er mot est Ms, Mr, Mrs ou Dr, ce "nom" est envoyé dans le champs titre et
non prénom.
Ca je peux le faire.

JM

"Eric" a écrit dans le message de
news:
Bonsoir Jean-Marc

Hey, suis inquiet si tu as des trucs du genre:
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143


car là t'as des enregistrements avec un titre de civilité !
ce qui m'amène à me poser la question des Mac Douglas ou Dupont de
Neumours comme Noms !!! car j'avais pas prévu ca.

Coté telephone, si sur les enregistrements ayant un tel il y a toujours
des () entourant l'indicatif ca doit être solvable sans trop de
problèmes, meme s'ils n'apparaissent pas sytématiquement.
Par contre je ne sais pas encore comment je vais traiter les noms
composés avec des espaces surtout s'ils son suivis par un prénom composé,
lui aussi, avec des espaces, du genre Mc Donald Paul Louis.
Question subsidiaire : dois-tu impérativement séparer le nom du prénom ou
est-il possible de stocker dans un seul champ le nom ET le prénom.

Bon, vais aller regarder ca et te tiens au courant.
Par contre, précises moi si le N° de tel a toujours un indicatif quand il
est présent.

A+
Eric

PS : le code est prêt pour la partie standard de base




"Jean-Marc" écrivait
news:Wmccc.6364$:

Salut Eric et merci de ton aide qui, évidemment, ne se refuse pas.

Pour le tél ce n'est pas tout à fait ça. Je reçois des feuilles des
revues dans lesquelles j'édites et sur lesquelles ils encodent les
données des personnes ayant demandé des infos, mais les gens ne
mettent pas toujours leur num de tél. Ceci entraîne que quand ils
encodent leur num de tél, j'ai 4 lignes pour un enregistrement, et
quand ils ne le mettent pas (La majorité du tps), je n'ai que 3
lignes. Et pour faire "plus drôle", tout ça est mélangé. Je peux avoir
10 enregistrements à 3 lignes puis un à 4 lignes. Comme je suis au
Québec et que j'exporte bcp aux USA, les adresses dont du type
PRENOM NOM
ADRESSE
VILLE ABRE CP
TEL

Avec ABRE = abréviation de l'état (TJRS en 2 lettres)
Les Etiquettes sont toujours en majuscule, pour des raisons postales

Ca donne des adresses du style :
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890

et plus souvent :
JEAN TRUC
56 BROL STREET
NEW YORK NY 12345


Donc dans mon fichier Excel, j'ai :

JEAN TRUC
56 BROL STREET
NEW YORK NY 12345
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543
(123)456-7890
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143





Avatar
Eric
Bonsoir "Jean-Marc"

J'ai eu (et j'ai encore) beaucoup de boulot mais je ne t'oublie pas
C'est quasiment fini. Par contre me reste à traiter le cas ou sur la
ligne PRENOM#NOM tu as des enregistrements du genre :DR John Patrick Mc
Donald.

Pour le tel présent/absent j'ai fait une moulinette qui insere une chaine
vide dans le cas où pas de n°. Donc chaque enregistrement a toujours 4
lignes.

Si je peux je te finis le prob des PRENOM#NOM mais si tu es pressé je
peux te poster la sub. Elle fait le traitement et insere dans la table
finale les enregistrements par sql.

A+
Eric




"Jean-Marc" écrivait
news:RHicc.1081$:

Salut,

En effet, le tél est TJRS avec 3 chiffres entre parenthèses en
Amérique du Nord.
Pour le nom, dans ma bdd le prénom est effectivement dans un autre
champs que le nom parce que je trie sur le nom concaténé, mais dans
99.99% des cas le nom est écrit en un seul mot, style MCDONALD, mais
pas le prénom, lui. Le prénom précède le nom, pas comme en Europe ou
souvent le nom est devant. Pour les civilités, je peux mettre une
recherche sur le 1er mot et, si le 1er mot est Ms, Mr, Mrs ou Dr, ce
"nom" est envoyé dans le champs titre et non prénom.
Ca je peux le faire.

JM

"Eric" a écrit dans le message de
news:
Bonsoir Jean-Marc

Hey, suis inquiet si tu as des trucs du genre:
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143


car là t'as des enregistrements avec un titre de civilité !
ce qui m'amène à me poser la question des Mac Douglas ou Dupont de
Neumours comme Noms !!! car j'avais pas prévu ca.

Coté telephone, si sur les enregistrements ayant un tel il y a
toujours des () entourant l'indicatif ca doit être solvable sans trop
de problèmes, meme s'ils n'apparaissent pas sytématiquement.
Par contre je ne sais pas encore comment je vais traiter les noms
composés avec des espaces surtout s'ils son suivis par un prénom
composé, lui aussi, avec des espaces, du genre Mc Donald Paul Louis.
Question subsidiaire : dois-tu impérativement séparer le nom du
prénom ou est-il possible de stocker dans un seul champ le nom ET le
prénom.

Bon, vais aller regarder ca et te tiens au courant.
Par contre, précises moi si le N° de tel a toujours un indicatif
quand il est présent.

A+
Eric

PS : le code est prêt pour la partie standard de base




"Jean-Marc" écrivait
news:Wmccc.6364$:

Salut Eric et merci de ton aide qui, évidemment, ne se refuse pas.

Pour le tél ce n'est pas tout à fait ça. Je reçois des feuilles des
revues dans lesquelles j'édites et sur lesquelles ils encodent les
données des personnes ayant demandé des infos, mais les gens ne
mettent pas toujours leur num de tél. Ceci entraîne que quand ils
encodent leur num de tél, j'ai 4 lignes pour un enregistrement, et
quand ils ne le mettent pas (La majorité du tps), je n'ai que 3
lignes. Et pour faire "plus drôle", tout ça est mélangé. Je peux
avoir 10 enregistrements à 3 lignes puis un à 4 lignes. Comme je
suis au Québec et que j'exporte bcp aux USA, les adresses dont du
type PRENOM NOM
ADRESSE
VILLE ABRE CP
TEL

Avec ABRE = abréviation de l'état (TJRS en 2 lettres)
Les Etiquettes sont toujours en majuscule, pour des raisons
postales

Ca donne des adresses du style :
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543 (123)456-7890

et plus souvent :
JEAN TRUC
56 BROL STREET
NEW YORK NY 12345


Donc dans mon fichier Excel, j'ai :

JEAN TRUC
56 BROL STREET
NEW YORK NY 12345
JEAN DUPONT
56 RUE MACHIN
LOS ANGELES CA 92353-1543 (123)456-7890
Ms OTHER NAME
12345 OTHER STREET
CHICAGO IL 95143










Avatar
Eric
Re Jean-Marc

Je crois que le nombre de cas possibles pour le PRENOM#NOM est trop élevé
si l'on veut réellement identifier le cas échéant le titre, le prénom
composé avec espace et le nom double avec espace dans un enregistrement.
En effet le nombre d'espace n'est pas significatif pour savoir si c'est
le titre ou le 1er prenom, ...
Tu peux avoir dans tes enregistrements des trucs du genre:
DR John Patrick Mac Donald
Dr John Mac Donald
John Patrick Mac Donald
Dr John MacDonald ...

Aussi, ayant pas mal de travail, je te poste la proc que j'ai déjà
écrite.


Bon courage pour la lecture
A+
Eric

La table Temporaire s'appelle TestJM2 et la table finale : TestJM2Finale

Sub Test601()

' Définition d'une Structure dans l'entete du module
' sous Option Compare Database et Option Explicit

'Type StructEnreg
' NomPrenom(1) As String * 255
' Adresse As String * 100
' VilleAbreviationCP(2) As String * 255
' Tel As String * 100
'End Type

' Etape 1 : Remplissage d'une variable tableau
' à partir de l'enregistrement unique de l'OCR
' importer sous Access dans une table
Dim rs As Recordset, Max As Integer, i As Integer
Dim j As Integer
Dim tablo As Variant, Temp
Dim BI As Integer, BS As Integer, PAS As Integer
Set rs = CurrentDb.OpenRecordset("TestJM2")
While Not rs.EOF
tablo = Split(rs!Notes, vbCrLf)
rs.MoveNext
Wend

'Etape 1-b
' Verification de la présence d'un n° de tel
Dim TabloAttente() As String
Max = UBound(tablo) + 1
ReDim Preserve TabloAttente(1) As String
Dim position As Integer, numligne As Integer
Dim cptligne As Integer
numligne = 0
For i = 0 To Max - 1
ReDim Preserve TabloAttente(cptligne)
position = InStr(tablo(i), "(")
If position = 0 And numligne = 3 Then
TabloAttente(cptligne) = "" 'On stocke un n° Fictif
cptligne = cptligne + 2 ' 1 pour l'absence de tel
' et 1 autre pour le nomprenom lu
ReDim Preserve TabloAttente(cptligne)
TabloAttente(cptligne - 1) = tablo(i) ' on met le nomprenom
lu
numligne = 0
ElseIf position > 0 And numligne = 3 Then
TabloAttente(cptligne) = tablo(i)
cptligne = cptligne + 1
ReDim Preserve TabloAttente(cptligne)
Else
TabloAttente(cptligne) = tablo(i)
cptligne = cptligne + 1
ReDim Preserve TabloAttente(cptligne)
End If
numligne = numligne + 1
If numligne > 3 Then numligne = 0
Next i
If InStr(tablo(i - 1), "(") = 0 Then
' dans le cas ou le dernier enreg n'a pas de n° de tel
ReDim Preserve TabloAttente(cptligne)
TabloAttente(cptligne) = ""
cptligne = cptligne + 1
End If

' Etape 2 : Remplissage d'un tableau de chaines de caractères
' où chaque ligne correspond à un enregistrement. On code la fin
' de l'enregistrement par une étoile (*)
Max = UBound(TabloAttente) + 1
BI = 0: BS = 3: PAS = 4 'PAS de 4 car 4 lignes pour un enregistrement
' TabloEnreg : Chaque ligne contient un enregistrement
ReDim TabloEnreg(Max 4) As String
Dim Nombre As Integer
Nombre = Max 4 - 1
For i = 0 To Nombre
Temp = ""
For j = BI To BS
Temp = Temp & TabloAttente(j) & "/" ' Séparateur de champs
Next j
TabloEnreg(i) = Left(Temp, Len(Temp) - 1) & "*"
BI = BI + PAS: BS = BS + PAS
Next i

' Etape 3 :
'Avec chaque ligne de TabloEnreg, on va remplir la table finale,
champ par champ
'Il va falloir utiliser Split pour retrouver les champs mais il
faudra l'appliquer
'plusieurs fois pour éclater les champs Nom+Prenom en Nom puis
Prenom, idem pour
'la ville, le code et l'abréviation.
'A la sortie, on a isolé tous les éléments.
'Reste à les mettre dans la table finale avec un peu de SQL, histoire
de changer.
'On suppose que la structure de la table finale a été créée au
préalable.

ReDim TabloTemp(Nombre) As StructEnreg
Dim Temp2, Temp3
For i = 0 To Nombre
With TabloTemp(i)
Temp = Split(TabloEnreg(i), "/")
Temp2 = Split(Temp(0), " ")
' A toi de voir pour le titre et le prenom en 2 mots avec un
espace

.NomPrenom(0) = Temp2(0) ' le prenom
.NomPrenom(1) = Temp2(1) ' le nom
.Adresse = Temp(1)
Temp3 = Split(Temp(2), " ")
.VilleAbreviationCP(0) = Temp3(0)
.VilleAbreviationCP(1) = Temp3(1)
.VilleAbreviationCP(2) = Temp3(2)
.Tel = Left(Temp(3), Len(Temp(3)) - 1)
End With
Next i
Exit Sub

Dim sql As String
For i = 0 To Nombre
With TabloTemp(i)
sql = "Insert Into TestJMFinale2(Nom,
Prenom,Adresse,Ville,Abreviation"
sql = sql & ", CodePostal, Phone) Values('" & Trim(.NomPrenom
(1))
sql = sql & "','" & Trim(.NomPrenom(0))
sql = sql & "','" & Trim(.Adresse)
sql = sql & "','" & Trim(.VilleAbreviationCP(0))
sql = sql & "','" & Trim(.VilleAbreviationCP(1))
sql = sql & "','" & Trim(.VilleAbreviationCP(2))
sql = sql & "','" & Trim(.Tel) & "');"
End With
CurrentDb.Execute sql
Next i
Erase Temp, Temp2, Temp3, TabloTemp, TabloAttente

Rem très importante
Rem Le champ Phone dans la table doit avoir la propriété Chaine Vide
Autorisée à Oui

End Sub
Avatar
Jean-Marc
Merci bcp.
De toute façon c'est déjà une TRES BONNE aide.
Je dois de toute manière apporter des modif parce que l'abréviation état,
par exemple, est le NrRef de la table des états et non l'abréviation en
direct.
Je verrai si je trouve une solution pour les noms. Je pense extraire tout ce
qui se trouve après le dernier espace comme nom (Et corriger à la main les
rares noms doubles. C'est en effet exceptionnel ici. Pour tout te dire, le
seul que je connaisse est ... le mien. Saleté d'origine européenne. Lol. Non
non, je blague, j'en suis très fier et le crie haut et fort, ici).
Pour le titre, je vais d'abord tester si les le 1er mot fait 2 ou 3 lettres,
puis si ce mot est Ms, Mrs, Mr, Dr, ... je le considère comme titre, sinon
je le considère comme prénom composé.

Quoi qu'il en soit, je te remercie encore,

JM
"Eric" a écrit dans le message de
news:
Re Jean-Marc

Je crois que le nombre de cas possibles pour le PRENOM#NOM est trop élevé
si l'on veut réellement identifier le cas échéant le titre, le prénom
composé avec espace et le nom double avec espace dans un enregistrement.
En effet le nombre d'espace n'est pas significatif pour savoir si c'est
le titre ou le 1er prenom, ...
Tu peux avoir dans tes enregistrements des trucs du genre:
DR John Patrick Mac Donald
Dr John Mac Donald
John Patrick Mac Donald
Dr John MacDonald ...

Aussi, ayant pas mal de travail, je te poste la proc que j'ai déjà
écrite.


Bon courage pour la lecture
A+
Eric

La table Temporaire s'appelle TestJM2 et la table finale : TestJM2Finale

Sub Test601()

' Définition d'une Structure dans l'entete du module
' sous Option Compare Database et Option Explicit

'Type StructEnreg
' NomPrenom(1) As String * 255
' Adresse As String * 100
' VilleAbreviationCP(2) As String * 255
' Tel As String * 100
'End Type

' Etape 1 : Remplissage d'une variable tableau
' à partir de l'enregistrement unique de l'OCR
' importer sous Access dans une table
Dim rs As Recordset, Max As Integer, i As Integer
Dim j As Integer
Dim tablo As Variant, Temp
Dim BI As Integer, BS As Integer, PAS As Integer
Set rs = CurrentDb.OpenRecordset("TestJM2")
While Not rs.EOF
tablo = Split(rs!Notes, vbCrLf)
rs.MoveNext
Wend

'Etape 1-b
' Verification de la présence d'un n° de tel
Dim TabloAttente() As String
Max = UBound(tablo) + 1
ReDim Preserve TabloAttente(1) As String
Dim position As Integer, numligne As Integer
Dim cptligne As Integer
numligne = 0
For i = 0 To Max - 1
ReDim Preserve TabloAttente(cptligne)
position = InStr(tablo(i), "(")
If position = 0 And numligne = 3 Then
TabloAttente(cptligne) = "" 'On stocke un n° Fictif
cptligne = cptligne + 2 ' 1 pour l'absence de tel
' et 1 autre pour le nomprenom lu
ReDim Preserve TabloAttente(cptligne)
TabloAttente(cptligne - 1) = tablo(i) ' on met le nomprenom
lu
numligne = 0
ElseIf position > 0 And numligne = 3 Then
TabloAttente(cptligne) = tablo(i)
cptligne = cptligne + 1
ReDim Preserve TabloAttente(cptligne)
Else
TabloAttente(cptligne) = tablo(i)
cptligne = cptligne + 1
ReDim Preserve TabloAttente(cptligne)
End If
numligne = numligne + 1
If numligne > 3 Then numligne = 0
Next i
If InStr(tablo(i - 1), "(") = 0 Then
' dans le cas ou le dernier enreg n'a pas de n° de tel
ReDim Preserve TabloAttente(cptligne)
TabloAttente(cptligne) = ""
cptligne = cptligne + 1
End If

' Etape 2 : Remplissage d'un tableau de chaines de caractères
' où chaque ligne correspond à un enregistrement. On code la fin
' de l'enregistrement par une étoile (*)
Max = UBound(TabloAttente) + 1
BI = 0: BS = 3: PAS = 4 'PAS de 4 car 4 lignes pour un enregistrement
' TabloEnreg : Chaque ligne contient un enregistrement
ReDim TabloEnreg(Max 4) As String
Dim Nombre As Integer
Nombre = Max 4 - 1
For i = 0 To Nombre
Temp = ""
For j = BI To BS
Temp = Temp & TabloAttente(j) & "/" ' Séparateur de champs
Next j
TabloEnreg(i) = Left(Temp, Len(Temp) - 1) & "*"
BI = BI + PAS: BS = BS + PAS
Next i

' Etape 3 :
'Avec chaque ligne de TabloEnreg, on va remplir la table finale,
champ par champ
'Il va falloir utiliser Split pour retrouver les champs mais il
faudra l'appliquer
'plusieurs fois pour éclater les champs Nom+Prenom en Nom puis
Prenom, idem pour
'la ville, le code et l'abréviation.
'A la sortie, on a isolé tous les éléments.
'Reste à les mettre dans la table finale avec un peu de SQL, histoire
de changer.
'On suppose que la structure de la table finale a été créée au
préalable.

ReDim TabloTemp(Nombre) As StructEnreg
Dim Temp2, Temp3
For i = 0 To Nombre
With TabloTemp(i)
Temp = Split(TabloEnreg(i), "/")
Temp2 = Split(Temp(0), " ")
' A toi de voir pour le titre et le prenom en 2 mots avec un
espace

.NomPrenom(0) = Temp2(0) ' le prenom
.NomPrenom(1) = Temp2(1) ' le nom
.Adresse = Temp(1)
Temp3 = Split(Temp(2), " ")
.VilleAbreviationCP(0) = Temp3(0)
.VilleAbreviationCP(1) = Temp3(1)
.VilleAbreviationCP(2) = Temp3(2)
.Tel = Left(Temp(3), Len(Temp(3)) - 1)
End With
Next i
Exit Sub

Dim sql As String
For i = 0 To Nombre
With TabloTemp(i)
sql = "Insert Into TestJMFinale2(Nom,
Prenom,Adresse,Ville,Abreviation"
sql = sql & ", CodePostal, Phone) Values('" & Trim(.NomPrenom
(1))
sql = sql & "','" & Trim(.NomPrenom(0))
sql = sql & "','" & Trim(.Adresse)
sql = sql & "','" & Trim(.VilleAbreviationCP(0))
sql = sql & "','" & Trim(.VilleAbreviationCP(1))
sql = sql & "','" & Trim(.VilleAbreviationCP(2))
sql = sql & "','" & Trim(.Tel) & "');"
End With
CurrentDb.Execute sql
Next i
Erase Temp, Temp2, Temp3, TabloTemp, TabloAttente

Rem très importante
Rem Le champ Phone dans la table doit avoir la propriété Chaine Vide
Autorisée à Oui

End Sub