banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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 wink
---> 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é smile
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é wink
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 wink
A+
Joël

Dernière modification par Spacejo (Thu 18 October 2012 12:16)

Hors ligne

 

#10 Thu 18 October 2012 15:03

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

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

 

Pied de page des forums

Powered by FluxBB