#1 Thu 19 February 2009 10:24
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Extraction de données
Bonjour,
Je dois géocoder une table avec des adresses. Je souhaiterai la standardiser pour permettre un bon géocodage.
Le problème c'est que l'adresse est dans un seul champ dans le fichier d'origine (.xls).
J'ai créé plusieurs champs à côté (N° voie, type de voie, adresse, CP, commune), il ne me reste plus qu'à les remplir avec les bonnes valeurs.
Seulement, je n'arrive pas à extraire les valeurs comme il faut.
Left() et Right() atteigne vite leur limite car les champs ne sont pas rempli de la même manière.
Il faudrait que j'arrive à lui faire dire: prend moi les valeurs 'rue', 'avenue','allée' et mets les moi ds le champ type_voie par exemple.
Autre problème, c'est écrit en minuscule et j'aimerai tout faire passer en majuscule pour éviter les fautes d'accents.
Je travail sous ArcMap.
Merci bcp!!
Dernière modification par luern (Thu 19 February 2009 10:30)
Paul Hedin
ex-luern
Hors ligne
#2 Thu 19 February 2009 11:32
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Salut Luern,
Plusieurs soluces sont dispos:
Travailler sur ton fichier .xls avec une maccro pour nettoyer tes données texte.
Utiliser la calculette esri pour faire la même chose sous arcmap.
Les fonctions que tu pourrais utiliser sont:
ProperCase qui mets une majuscule au début de chaque mot ---> "rue bidulle" se transforme en "Rue Bidulle"
LowerCase qui mets tout en minuscule
UpperCase qui mets tout en majuscule
Maintenant si c'est uniquement pour enlever les accents il suffit de remplacer uniquement les é, è, ê en "e"
Voilà un post interessant:
http://www.forumsig.org/showthread.php? … ht=routine
En espérant t'aider
A+
Joël
Hors ligne
#3 Thu 19 February 2009 11:51
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Merci Spacejo
Le problème des accents est réglé.
Mais il me reste le principal qui est de répartir dans les bons champs, l'adresse complète se trouvant dans mon fichier de départ (.xls)...
svp, aidez moi!!
Paul Hedin
ex-luern
Hors ligne
#4 Thu 19 February 2009 11:59
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Re,
Au niveau Maccro Excel il va falloir trouver quelqu'un d'autre sinon pour arcmap je peux t'épauler.
Tout d'abord import du fichier Excel dans arcmap
Puis la calculette esri pour créer tes champs dans ta table adresse.Il va falloir créer un petit script qui fait tout ça.
Ici la hot line à vous Luern
A+
Joël
Hors ligne
#5 Thu 19 February 2009 12:05
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
les champs sont prets, l'importation est faite.
et UpperCase marche pas dans la calculette déjà...(je rentre UpperCase([nom_du_champ]). C'est peut-être à cause du des caractères numériques qui sont dans le champ... (12 rue Berlioz par exemple)
Pour le script, j'attends vos conseils. En tout cas merci!!
Dernière modification par luern (Thu 19 February 2009 12:08)
Paul Hedin
ex-luern
Hors ligne
#6 Thu 19 February 2009 12:19
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Alors vérification de la nature des champs nouvellement crées.
Ces champs doivent être en "texte"
Il va falloir utiliser la calculette champs après champs car je n'ai pas encore trouvé une soluce pour distribuer sur plusieurs champs.
A+
Joël
Hors ligne
#7 Thu 19 February 2009 15:28
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
oui oui les champs sont en texte et attendent d'être remplis
étape suivante?
Paul Hedin
ex-luern
Hors ligne
#8 Thu 19 February 2009 15:55
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Etape suivante
------>Calculette esri en mode avancé place le code suivant
Code:
Dim First as string Dim New as string First=[Ton_Champs_Adresse] New=[Ton_Nouveau_Champs_Type] If First like "RUE*" then New = "RUE" Elseif adresse like "AVENUE*" then New = "AVENUE" Elseif adresse like "ALLEE*" then New = "ALLEE" Elseif adresse like "BLABLA*" then New = "BLABLA" End if
Dans le champs du dessous de la calculette ----> "[Ton_Nouveau_Champs_Type]="
ne pas oublier de mettre la valeur "New"
Attention je n'ai pas vérifier la syntaxe mais cela doit être quelque chose d'approchant (ne pas oublier de changer le BLABLA et de mettre autant de routine Elseif que de types que tu veux voir apparaître dans ton nouveau champs.
En espérant que cela marche
A+
Joël
Dernière modification par Spacejo (Thu 19 February 2009 15:57)
Hors ligne
#9 Thu 19 February 2009 17:02
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Ca marche pas...j'ai affiché le message : "nom de champ introuvable ou guillemet manquant"
je te mets tel qu'il est dans la calculette:
je coche mode avancé
Code:
Dim First as string Dim New as string First=[adresse] New=[type_voie] If First like "RUE*" then New = "RUE" Elseif adresse like "AVENUE*" then New = "AVENUE" Elseif adresse like "ALLEE*" then New = "ALLEE" End if
Dans le champs du dessous de la calculette ----> [type_voie]= "New"
cela vient peut-être du fait que mon champ d'origine adresse a le N° de voie devant "12 rue Berlioze"...
on est po loin...
Paul Hedin
ex-luern
Hors ligne
#10 Thu 19 February 2009 17:06
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Alors tu as raison pour le numéro de rue ----> essaye * RUE*
Ensuite c'est ---->New et non pas "New" dans [type_Voie]=
Essaye voir
A+
Joël
Hors ligne
#11 Fri 20 February 2009 08:32
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Ca marche toujours pas..
mais le message d'erreur est "Erreur lors de l'exécution du code VBA:User interrupt"
j'essaye juste pour rue pour l'instant:
Code:
Dim First as string Dim New as string First= [Adresse_installation] New= [type_voie] If First like "*RUE*" then New = "RUE" End if
Dernière modification par luern (Fri 20 February 2009 08:36)
Paul Hedin
ex-luern
Hors ligne
#13 Fri 20 February 2009 09:03
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
toujours pas...
"Nom de champ introuvable ou guillemet manquant"
Paul Hedin
ex-luern
Hors ligne
#14 Fri 20 February 2009 09:12
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Extraction de données
Bonjour,
pourquoi mettre :
New= [type_voie] ?
Cette ligne ne fait-elle pas doublon avec le champ en bas dans la calculette en mode avancé?
Pascal PLUVINET
Hors ligne
#15 Fri 20 February 2009 09:43
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Pas d'amélioration...
Paul Hedin
ex-luern
Hors ligne
#16 Fri 20 February 2009 10:20
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Salut à vous,
Tu dis "pas d'amélioration" avec la suppression de New =[type_de_voie]
Est ce que tu as remplacer New par autre chose comme le suggère Jerome?
A+
Joël
Dernière modification par Spacejo (Fri 20 February 2009 10:21)
Hors ligne
#17 Fri 20 February 2009 10:29
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Ouai j'ai tout essayé...
Code:
Dim First as string Dim Type as string First= [Adresse_installation1] If First like "*RUE*" then Type="RUE" End if
Avec Type_voie= Type
Paul Hedin
ex-luern
Hors ligne
#18 Fri 20 February 2009 10:37
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Extraction de données
Je viens de mettre ton code dans Notepad++ et le mot "Type" est reconnu en VBA.
Je te conseille de mettre une lettre.
Dim First as string
Dim a as string
First= [Adresse_installation1]
If First like "*RUE*"
then a="RUE"
End if
Avec Type_voie= a
Essaie de nouveau et dis-nous
Pascal PLUVINET
Hors ligne
#19 Fri 20 February 2009 10:38
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Re,
Essaye voir ceci:
Code:
Dim First as string Dim Type as string First= [Adresse_installation1] If First like "* RUE*" then Type="RUE" End if
Dernière modification par Spacejo (Fri 20 February 2009 10:39)
Hors ligne
#20 Fri 20 February 2009 10:42
Re: Extraction de données
Dans ce que tu viens juste de mettre, il y a le premier Type = [type_voie] qui a disparu !
Aussi, je ne sais pas si c'est important, mais normalement, le Then est sur la même ligne que la condition.
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#21 Fri 20 February 2009 10:50
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Effectivement Jerome tu as raison
Que donne le code de ppluvinet?
Par contre je mettrais "a="RUE" en dessous du then
Code:
Dim First as string Dim a as string First= [Adresse_installation1] If First like "*RUE*" then a="RUE" End if Avec Type_voie= a
A+
Joël
Dernière modification par Spacejo (Fri 20 February 2009 10:53)
Hors ligne
#22 Fri 20 February 2009 10:51
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
arf!!! ça marche pas!!!
pareil j'ai tenté les différentes possibilités en changeant Type par a et avec l'écriture de spacejo et inversement...
merci en tout cas pour toutes vos réponses!!
on va trouver, on va trouver!!
Dernière modification par luern (Fri 20 February 2009 10:53)
Paul Hedin
ex-luern
Hors ligne
#23 Fri 20 February 2009 10:55
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Extraction de données
Essaye :
Dim First as string
Dim a as string
First= [Adresse_installation1]
If First like "*RUE*" then
a="RUE"
End if
Avec Type_voie= a
Pascal PLUVINET
Hors ligne
#24 Fri 20 February 2009 10:57
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Et le winner is PPLUVINET!!!!
ca marche!!
P**** de format d'écriture!!
merci beaucoup!!
Paul Hedin
ex-luern
Hors ligne
#25 Fri 20 February 2009 10:59
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Ah on a 2 fois le même code ppluvinet et moi donc on doit se rapprocher de la soluce
Pas vraiment it's me the winner regarde mon dernier code
A+
Joël
Dernière modification par Spacejo (Fri 20 February 2009 11:02)
Hors ligne
#26 Fri 20 February 2009 11:05
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Extraction de données
Merci en tout cas pck jy comprenais que pouic!
On va dire égalité pour le fairplay de la géomatique!!
Paul Hedin
ex-luern
Hors ligne
#27 Fri 20 February 2009 11:08
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
Tout à fait d'accord avec toi
Maintenant passons à la fonction "Elseif"
Bon courage !!!
A+
Joël
Hors ligne
#28 Fri 20 February 2009 11:09
Re: Extraction de données
On dit
Effectivement Jerome tu as raison
, on propose un code selon ma proposition, puis après on dit que c'est ppluvinet et Spacejo qui ont gagné
Je pars bouder durant tout le week-end
++
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#29 Fri 20 February 2009 11:13
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Extraction de données
On dit
Effectivement Jerome tu as raison
, on propose un code selon ma proposition, puis après on dit que c'est ppluvinet et Spacejo qui ont gagné
Je pars bouder durant tout le week-end
++
Non tu rigoles c'est pas fini Luern n'est qu'au début de la résolution de son problème et personnelement je te remercie du coup de pouce
A+ Jérome
Joël
Hors ligne
#30 Fri 20 February 2009 11:13
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Extraction de données
tous des winner!
on retiendra trois choses:
1. attention à ne pas utiliser en nom de variable des mot qui existe déjà en VB ( ex: new, type...)
2. la place de "then" dans le code
3. quand on est plusieurs à réfléchir, on avance plus vite!
A bientot
Pascal PLUVINET
Hors ligne