Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

#1 Thu 30 August 2007 17:34

glaussac
Participant occasionnel
Date d'inscription: 21 Feb 2006
Messages: 44
Site web

[ArcGis 9.0] supprimer un caractere dans une chaine

Bonjour,

J'ai un trou de mémoire, suite au "crash" de ma couche de servitudes j'ai récupéré la quasi totalité des donneés avec un éxécutable.  Le problème est qu'il m'a rajouté le caractère "0" dans tous mes champs texte et je cherche à m'en débarasser avec la calculette.

J'ai déjà tourné sur le site d'ESRI, il me propose de supprimer des espaces ou de récupérer une chaine depuis la gauche (fonction left) mais je ne parviens pas à faire démarrer  la récupération depuis le second caractére à gauche..

Est ce que quelqu'un à une idée ?

Hors ligne

 

#2 Thu 30 August 2007 18:22

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Comme c'est du VB, je suppose qu'il faut fouiller dans l'aide de VBA et utiliser deux commandes wink

je ne parviens pas à faire démarrer la récupération depuis le second caractère à gauche..


Tu peux utiliser Len() et Right() par exemple sur un champ de données chaine de caractère [Monchamp] :

Code:

Right ([Monchamp],Len([Monchamp]) - 2)

=compte le nombre de caractère de la chaine, en totalise 2 de moins et coupe depuis la *droite* wink

Ce qui devrait donner pour exemple :
AZERTY > ERTY
GEOMATIQUE > OMATIQUE

Pour référence ultérieure, j'ai repris l'aide VBA que j'ai mis en forme pour le forum, je ne sais pas si Arcgis mange de tout mais bon, c'est là pour qui est intéressé. Se référer à l'aide VBA (taper F1) dans l'éditeur pour plus de détails wink

Mots clés de manipulation de chaînes :

Comparaison de deux chaînes : 
* StrComp : Renvoie une valeur de type Variant (Integer) indiquant le résultat d'une comparaison de chaînes.

Conversion de chaînes :
* StrConv : Renvoie une valeur de type Variant (String) convertie au format indiqué.

Conversion en minuscules ou en majuscules :
* Format : Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l'expression de mise en forme.
* Lcase : Renvoie une valeur de type String convertie en minuscules.
* UCase : Renvoie une valeur de type Variant (String) contenant la chaîne indiquée, convertie en majuscules.

Création de chaînes répétant un même caractère :
* Space : Renvoie une valeur de type Variant (String) comprenant le nombre d'espaces indiqué.
* String : Renvoie une valeur de type Variant (String) contenant une chaîne constituée d'un caractère répété sur la longueur indiquée.

Calcul de la longueur d'une chaîne :
* Len : Renvoie une valeur de type Long contenant le nombre de caractères d'une chaîne ou le nombre d'octets requis pour stocker une variable.

Mise en forme d'une chaîne :
* Format : Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l'expression de mise en forme.

Alignement d'une chaîne :
* Lset : Aligne à gauche une chaîne située à l'intérieur d'une variable chaîne ou copie une variable d'un type défini par l'utilisateur vers une autre variable d'un autre type défini par l'utilisateur.
* RSet : Aligne à droite une chaîne à l'intérieur d'une variable chaîne.

Manipulation de chaînes :
*InStr  : Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.
*Left : Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la gauche.
*Ltrim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
*Mid : Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.
*Right : Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la droite.
*RTrim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
*Trim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).

Définition des règles de comparaison de chaînes :
* Option Compare : Instruction utilisée au niveau module pour déclarer la méthode de comparaison par défaut qu'il convient d'utiliser lors de la comparaison de chaînes.

Utilisation des codes ASCII et ANSI :
* Asc : Renvoie une donnée de type Integer représentant le code de caractère correspondant à la première lettre d'une chaîne.
* Chr : Renvoie une valeur de type String contenant le caractère associé au code de caractère indiqué.


Robin.

Hors ligne

 

#3 Fri 31 August 2007 09:11

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Bonjour, j'en profite pour diffuser un code permettant de remplacer un certain nombre de caractères "illisibles" par le véritable caractère correspondant. Le code n'est pas de moi, je l'ai juste adapté. Je recherche la source et je la diffuse aussitôt.
A copier dans la calculatrice an mode "avancé", et remplacer "MonChamp" par le nom du champ correspondant.
Le code remplace les caractères erronés dans var4 par celui précisé dans var1, et ainsi de suite. Pour l'instant il regarde essentiellement les caractères accentués et qq. caractères spéciaux type ° ou ²... A compléter.

----------------------------

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

----------------------------------
LIBELLE : var1
----------------------------------


Voilà. @+

Dernière modification par Jean (Fri 31 August 2007 15:06)


Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire

Hors ligne

 

#4 Fri 31 August 2007 09:12

glaussac
Participant occasionnel
Date d'inscription: 21 Feb 2006
Messages: 44
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

je ne comprends pas le code passe mais ArcView me dit aucun enregistrement mis à jour.

Pourtant les chaines sont de se style : "00Marges de recul"

Hors ligne

 

#5 Fri 31 August 2007 09:28

glaussac
Participant occasionnel
Date d'inscription: 21 Feb 2006
Messages: 44
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Correction de ma part, la commande fonctionne trés bien, j'avais juste "oublié" de sélectionner tous les enregistrements.

Merci beaucoup..

Hors ligne

 

#6 Wed 25 May 2011 13:59

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2134
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Bonjour

j'ai un trou de mémoire ... je cherche à extraire la partie droite d'une chaine (la fin de mes noms d'opération donc la chaine à droite jusqu'au premier espace) ?
est ce que quelqu'un a ça en tête ?

merci

Hors ligne

 

#7 Wed 25 May 2011 15:32

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2134
Site web

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Trouvé !
je pense que ça doit être possible de faire plus simple mais ça marche

Code:

Dim sOriginal As String
Dim sNewString As String
Dim c As String
Dim l As Long
Dim g as Long
Dim h as Long
'=======================
'change the character you want to use for splitting
'change the original string field name
c = " "
sOriginal = [LIBELUS]
'========================
g= len (sOriginal)
l = InStr(sOriginal, c)
h=g-l
sNewString = Trim(Right(sOriginal, h))

Hors ligne

 

#8 Thu 26 May 2011 11:11

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [ArcGis 9.0] supprimer un caractere dans une chaine

Salut,

Remplacer le "0" par rien ""
---> http://www.forumsig.org/showthread.php? … ht=routine
A+
Joël

Hors ligne

 

Pied de page des forums

Powered by FluxBB