Pages: 1
- Sujet précédent - Convertir le text en minuscule d'un champ en majuscule sans accent - Sujet suivant
#1 Wed 17 October 2012 12:05
- gaucher
- Participant actif
- Date d'inscription: 2 Feb 2006
- Messages: 106
Convertir le text en minuscule d'un champ en majuscule sans accent
Bonjour à tous,
je souhaite réaliser une jointute de ma table attributaire avec un ficihier excel. le problème est que le texte du champ de jointure du fichier excel est en majuscule sans accent alors que le texte du champ de jointure de ma table attributaire est en minuscule et comporte des accents. en utilisant la fonction UCASE de la calculatrice de champ j'obtiens les attribut en majuscule mais avec des accents. y a t'il une solution qui pourrait me permettre d'obtenir des majuscule sans accent?
je vous remercie par avance.
Hors ligne
#2 Wed 17 October 2012 13:48
- Meums
- Participant actif
- Lieu: Bordeaux
- Date d'inscription: 26 Mar 2009
- Messages: 98
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Bonjour Gaucher,
Avant de passer cette première étape, essayez de supprimer tous les accents
1 - caractère par caractère :
essayez la fonction replace :
ex :
replace([Nomduchamp], "à ", "a ")
2 - ou encore ce code qui traite plusieurs caractères (à adapter pour les caractères avec accents):
NB
Noter var1 dans la case du bas
NB2 - on peut faire l'opération sur plusieurs caractères à la fois
Code:
Dim var1, var2, var3
var1 = [MonChamp]
var2 = Len(var1) + 1
var3 = 1
While var3 <> var2
Dim var4, var5, var6
var4 = Mid(var1, var3, 1)
If var4 = "¯" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "î" + var6
var3 = var3 + 1
ElseIf var4 = "¦" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "°" + var6
var3 = var3 + 1
ElseIf var4 = "¶" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "ô" + var6
var3 = var3 + 1
ElseIf var4 = "Ó" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "à" + var6
var3 = var3 + 1
ElseIf var4 = "Ô" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "â" + var6
var3 = var3 + 1
ElseIf var4 = "þ" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "ç" + var6
var3 = var3 + 1
ElseIf var4 = "Þ" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "è" + var6
var3 = var3 + 1
ElseIf var4 = "Ú" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "é" + var6
var3 = var3 + 1
ElseIf var4 = "Û" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "ê" + var6
var3 = var3 + 1
ElseIf var4 = "Ù" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "ë" + var6
var3 = var3 + 1
ElseIf var4 = "+" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "É" + var6
var3 = var3 + 1
ElseIf var4 = "+" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "È" + var6
var3 = var3 + 1
ElseIf var4 = "-" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Ê" + var6
var3 = var3 + 1
ElseIf var4 = "-" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Â" + var6
var3 = var3 + 1
ElseIf var4 = "¦" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "²" + var6
var3 = var3 + 1
ElseIf var4 = "¦" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Û" + var6
var3 = var3 + 1
ElseIf var4 = "¦" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "°" + var6
var3 = var3 + 1
Else
var3 = var3 + 1
End If
Wend
J'avais trouvé ce code sur ce forum, j'ai oublié le nyuméro de topic mais en cherchant bien...
Hors ligne
#3 Wed 17 October 2012 13:58
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Salut,
Celà me rappelle quelquechose
---> http://www.forumsig.org/showthread.php? … light=var5
A+
Joël
Hors ligne
#4 Wed 17 October 2012 16:19
- gaucher
- Participant actif
- Date d'inscription: 2 Feb 2006
- Messages: 106
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
j'ai essayé le bout de code, et il marche à merveille. je souhaite savoir en quel langage de programmation ce code est écrit. j'aimerais apprendre ce langage pour me permettre d'automatiser certaine opérations dans arcgis 10. je relance le sujet: comment compléter ce code pour qu'il me donne directement des caractères en majuscule sans accent?
Hors ligne
#5 Wed 17 October 2012 16:24
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Salut,
C'est du VBscript
As tu regardé le lien que j'ai indiqué? --> le code ci dessus y est expliqué
Plus d'infos et de codes pour la calculette ---> http://support.esrifrance.fr/OutilsScri … aines.html
---> http://arcscripts.esri.com/scripts.asp? … it2=Search
A+
Joël
Dernière modification par Spacejo (Wed 17 October 2012 16:41)
Hors ligne
#6 Wed 17 October 2012 17:43
- gaucher
- Participant actif
- Date d'inscription: 2 Feb 2006
- Messages: 106
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
C'est compris Spacejo, mais comment intégrer la fonction UCASE pour que j'obtienne directement des majuscules à la fin ?
Merci.
Hors ligne
#7 Wed 17 October 2012 17:47
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Peux tu préciser?
Il me semble que tu nas pas besoin de passer par le mode avancé
Il te suffit de choisir dans la calculette le champ sur lequel tu veux intervenir puis dans la fenêtre en dessous du choix de ton champ:
---> UCase ( [CHAMP] ) --> Ne pas oublier de modifier "CHAMP" par le Nom de ton champ.
A+
Joël
Dernière modification par Spacejo (Wed 17 October 2012 18:01)
Hors ligne
#8 Wed 17 October 2012 19:05
- gaucher
- Participant actif
- Date d'inscription: 2 Feb 2006
- Messages: 106
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
en fait mon souci était d'obtenir à partir d'une seule opération, avec un bout de code, du texte en majuscule débarassé de tous les accents.
Hors ligne
#9 Wed 17 October 2012 22:05
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Celà peut être certainement optimiser --> si tu reprends l'exemple que j'avais cité ici --> http://www.forumsig.org/showthread.php? … light=var5
Voilà ce que ça donne:
Code:
Dim var1, var2, var3
var1 = [TonChamp]
var2 = Len(var1) + 1
var3 = 1
While var3 <> var2
Dim var4, var5, var6
var4 = Mid(var1, var3, 1)
If var4 = "a" or "à" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "A" + var6
var3 = var3 + 1
ElseIf var4 = "b" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "B" + var6
var3 = var3 + 1
ElseIf var4 = "c" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "C" + var6
var3 = var3 + 1
ElseIf var4 = "d" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "D" + var6
var3 = var3 + 1
ElseIf var4 = "e" or "é" or "è" or "ê" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "E" + var6
var3 = var3 + 1
ElseIf var4 = "f" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "F" + var6
var3 = var3 + 1
ElseIf var4 = "g" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "G" + var6
var3 = var3 + 1
ElseIf var4 = "h" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "H" + var6
var3 = var3 + 1
ElseIf var4 = "i" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "I" + var6
var3 = var3 + 1
ElseIf var4 = "j" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "J" + var6
var3 = var3 + 1
ElseIf var4 = "k" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "K" + var6
var3 = var3 + 1
ElseIf var4 = "l" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "L" + var6
var3 = var3 + 1
ElseIf var4 = "m" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "M" + var6
var3 = var3 + 1
ElseIf var4 = "n" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "N" + var6
var3 = var3 + 1
ElseIf var4 = "o" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "O" + var6
var3 = var3 + 1
ElseIf var4 = "p" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "P" + var6
var3 = var3 + 1
ElseIf var4 = "q" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Q" + var6
var3 = var3 + 1
ElseIf var4 = "r" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "R" + var6
var3 = var3 + 1
ElseIf var4 = "s" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "S" + var6
var3 = var3 + 1
ElseIf var4 = "t" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "T" + var6
var3 = var3 + 1
ElseIf var4 = "u" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "U" + var6
var3 = var3 + 1
ElseIf var4 = "v" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "V" + var6
var3 = var3 + 1
ElseIf var4 = "w" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "W" + var6
var3 = var3 + 1
ElseIf var4 = "x" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "X" + var6
var3 = var3 + 1
ElseIf var4 = "y" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Y" + var6
var3 = var3 + 1
ElseIf var4 = "z" Then
var5 = Mid(var1, 1, var3 - 1)
var6 = Mid(var1, var3 + 1, var2 - var3 )
var1 = var5 + "Z" + var6
var3 = var3 + 1
Else
var3 = var3 + 1
End If
Wend
C'est vraiment bourrin mais celà doit le faire
A+
Joël
Dernière modification par Spacejo (Thu 18 October 2012 12:16)
Hors ligne
#10 Thu 18 October 2012 15:03
Re: Convertir le text en minuscule d'un champ en majuscule sans accent
Bonjour,
Il est aussi possible de faire quelquechose l'outils ("Calculer un champ" dans la toolboxe "Outils de gestion de données").
Il faut choisir comme type d'expression 'PYTHON_9.3' :
Code Block
Code:
def suppression_accents(chaine): """ Suppression des accents dans une chaine UNICODE et renvoie une chaine UNICODE """ import unicodedata return (unicodedata.normalize('NFKD', chaine).encode( 'ASCII', 'ignore')).decode('ASCII')
Champ a mettre a jour
Code:
(suppression_accents(!NomDuChamp!)).upper()
L'avantage est qu'il n'est pas utile de construire une liste des caractères accentués possible mais cette méthode ne gère pas les caractères du genre 'œ', 'æ',...
A+
Franck
Hors ligne
Pages: 1
- Sujet précédent - Convertir le text en minuscule d'un champ en majuscule sans accent - Sujet suivant