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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 07 June 2013 15:55

Meums
Participant actif
Lieu: Bordeaux
Date d'inscription: 26 Mar 2009
Messages: 98

Mise à jour VBA sur entités annotations

Bonjour,
Je cherche à corriger des noms sans accents par des noms avec accents.
J'utilise pour cela un code allègrement pompé sur ce forum...

Le pbl c'est qu'il ne fonctionne pas et j'ai bien l'impression que c'est en raison de la géodatabase d'annotations sur laquelle j'agis.
La fonction replace fonctionne mais je ne sais pas comment faire pour l'utiliser en une seule fois pour plusieurs corrections (il y en a tellement).
ex  : replace([TextString], "marecageuse", "marécageuse")

Quelqu'un aurait-il une explication ou un début de solution (ou une confirmation de ma déprime) !
Merci (et bon WE)

Emeric

Code:

---------exemple de code (non exhaustif...)-------------------------------------------------------
Dim var1, var2, var3

var1 = [TextString]
var2 = Len(var1) + 1
var3 = 1

While var3 <> var2
    Dim var4, var5, var6
    var4 = Mid(var1, var3, 1)
    
    If var4 = "ibero" Then
        var5 = Mid(var1, 1, var3 - 1)
        var6 = Mid(var1, var3 + 1, var2 - var3 )
        var1 = var5 + "ibéro" + var6
        var3 = var3 + 1
    ElseIf var4 = "perenne" Then
        var5 = Mid(var1, 1, var3 - 1)
        var6 = Mid(var1, var3 + 1, var2 - var3 )
        var1 = var5 + "pérenne" + var6
        var3 = var3 + 1
    Else
        var3 = var3 + 1    
    End If
Wend
--------------------------------------------------------------------

Hors ligne

 

#2 Sat 08 June 2013 11:42

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

Re: Mise à jour VBA sur entités annotations

Salut,

Celà me rappelle quelque chose wink
---> http://www.forumsig.org/showthread.php/ … ht=routine
Ce code ne permets le remplacement que d'un caractère.
Une solution possible à ton problème.
Exportation en .txt de ta table puis renommer le contenu de ton champ avec un éditeur de texte.
Un petit outil bien sympathique ---> http://www.emurasoft.com/replall/detail.htm

A+
Joël

Dernière modification par Spacejo (Sat 08 June 2013 12:26)

Hors ligne

 

#3 Mon 10 June 2013 09:04

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Mise à jour VBA sur entités annotations

Bonjour,

Il vous "suffit" d'enchaîner les remplacements de caractères :

Code:

newValue = [CHAMP] '--> récupération de la valeur du champ
newValue = replace(newValue, "marecageuse", "marécageuse") '--> remplacement de "marecageuse" par "marécageuse"
newValue = replace(newValue, "appetit", "appétit") '--> remplacement de "appetit" par "appétit"
[...]

Si vous possédiez une table de transformation, vous pourriez envisager un code un peu plus "joli" en effectuant une boucle sur les mots à remplacer, mais le principe resterait le même. Le post suivant vous donne une méthode en Python : http://gomputor.wordpress.com/2008/09/2 … th-python/

Je vous invite également à lire le post suivant (qui fait quelque chose de similaire tout en mettant des majuscules à chaque mot) : http://www.forumsig.org/showthread.php/ … ntu%C3%A9s

Bonne journée,
Kevin

Hors ligne

 

#4 Mon 10 June 2013 09:45

Meums
Participant actif
Lieu: Bordeaux
Date d'inscription: 26 Mar 2009
Messages: 98

Re: Mise à jour VBA sur entités annotations

Bonjour Joël, bjr Kevin,
Merci pour vos réponses, je savais que ça intéresserait même le pbl est basique (c'est aussi que j'en suis là)
Je teste et vous tiens au courant
Emeric

Hors ligne

 

#5 Mon 10 June 2013 11:07

Meums
Participant actif
Lieu: Bordeaux
Date d'inscription: 26 Mar 2009
Messages: 98

Re: Mise à jour VBA sur entités annotations

Re,
Joël, j'ai bien testé ReplaceInFiles mais il ne s'applique que mot par mot (ou bien j'ai raté une étape)
Kevin,

Si j'écris ce code
newValue = replace(newValue, "inioptere", "inioptère")
newValue = replace(newValue, "hiroptere", "hiroptère")
avec newValue =[TextString]

Mais, il se trouve qu'il efface tout... (heureusement que j'étais en sessionMAJ)
Si tu trouves une solution qui fonctionne et qui soit capable de prendre en compte les valeurs non traitées sans tout effacer (ex : pas d'accent sur "Barbastelle" ou "Pipistrelle commune") je suis preneur.
Merci
Emeric


Pour explication :
à la base, j'ai des suites d'espèces séparées par une virgule dans un shape. J'ai appliqué un VbNewline en remplacement des virgules sur tous les champs ce qui fait un retour ligne à chaque noms d'espèce. Je crée ensuite les étiquettes, les transforme en annotations...

Et me retrouve avec ce pbl de nom application des codes : est-ce du au VbNewline ? est-ce du à la géodatabase ?

Pour le Python, il faudrait que ce soit moins urgent pour moi pour m'y plonger (je suis sur 9.3.1)...

Hors ligne

 

#6 Mon 10 June 2013 11:21

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

Re: Mise à jour VBA sur entités annotations

Salut,

Oui ReplaceinFiles ne fonctionne que sur un nom à la fois sad.
Par contre je ne comprends pas ton "Pour Explication".
Pourquoi travailler avec un VbNewline sur ta table?
C'est lors de la création d'étiquettes (fonction FindLabel) que tu appliques le VbNewline.
C'est dans cette manip que tu perds tes accents?
A+
Joël

Dernière modification par Spacejo (Mon 10 June 2013 11:23)

Hors ligne

 

#7 Mon 10 June 2013 11:42

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Mise à jour VBA sur entités annotations

Emeric a écrit:

Mais, il se trouve qu'il efface tout... (heureusement que j'étais en sessionMAJ)
Si tu trouves une solution qui fonctionne et qui soit capable de prendre en compte les valeurs non traitées sans tout effacer (ex : pas d'accent sur "Barbastelle" ou "Pipistrelle commune") je suis preneur.


Je pense que tu as dû faire une erreur dans ta formule. Tu trouveras en pièce jointe une image d'une formule que j'ai testée avec succès à l'instant.

Pour "l'explication", je suis aussi interrogatif que Joël smile

Kevin


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#8 Mon 10 June 2013 12:35

Meums
Participant actif
Lieu: Bordeaux
Date d'inscription: 26 Mar 2009
Messages: 98

Re: Mise à jour VBA sur entités annotations

Je perd les accents avant cette manip : lorsque je suis en tables de liens, j'utilise un outil (ConcateneRowValue) qui ne fonctionne qu'avec des noms sans accents, afin de récupérer une liste de nom séparé par "," dans ma table carto.
C'était un bricolage qui a ses limites (destiné à pallier un manque de compétences sous access ou autres requêtes - maintenant je sais qu'il y aurait bien mieux à faire même si je ne sais pas encore comment...) mais qui m'a permis de gagner du temps :
1 - concaténer les données des tables de liens
2 - récup par jointure de la liste des données concaténées
3 - étiquetage après passage du VbNewline
4 - transf en annotation...

Le résultat est que j'ai des classes d'annots sans accents sur pas mal d'atlas. Les principaux rendus (officiels) sont passés comme cela mais j'aimerais quand même écrire comme il faut sur mes prochains projets...
Merci à vous
E

Hors ligne

 

#9 Mon 10 June 2013 13:32

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

Re: Mise à jour VBA sur entités annotations

Peux tu créer un nouveau champ dans ta geodatabase?
Tu aurais un champ avec accents et un sans.
Ton outil posant problème interviendrait sur le champ sans accents.

Hors ligne

 

#10 Mon 10 June 2013 14:55

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Mise à jour VBA sur entités annotations

Je perd les accents avant cette manip : lorsque je suis en tables de liens, j'utilise un outil (ConcateneRowValue) qui ne fonctionne qu'avec des noms sans accents, afin de récupérer une liste de nom séparé par "," dans ma table carto.


Je ne connais pas cet outil mais je viens de le télécharger. A mon avis, le mieux serait de l'améliorer afin qu'il puisse traiter les accents. J'ai déjà été confronté à ce problème lié à l'encodage, je ne garantie pas de trouver une solution mais je peux toujours essayer.

Emeric, pourriez-vous me transmettre un extrait de vos données avec des valeurs accentuées afin que je puisse faire des tests ?

Kevin

Hors ligne

 

#11 Mon 10 June 2013 16:03

Meums
Participant actif
Lieu: Bordeaux
Date d'inscription: 26 Mar 2009
Messages: 98

Re: Mise à jour VBA sur entités annotations

Merci Kevin,
Modifier l'outil pourrait servir à la communauté (de mon coté, nous allons l'abandonner, mais il a bien servi*)

Le ConcateneRowValue que tu as téléchargé est développé pour la V10. FranckB (modérateur georezo l'avait adapté pour nos besoin sur la V9.3 : http://georezo.net/forum/viewtopic.php?id=76700).
Pour info, cet outil bloque sur les caractères spéciaux (j'ignore lesquels car nous avons opté pour une écriture la plus lisse possible...). Un autre défaut est qu'il ne corrige pas les doublons.

* Concernant l'adaptation de l'outil, ça pourrait répondre à des projets dans un futur proche mais pour l'avenir, il y aurait mieux à utiliser dès que l'on est en géodatabase (je suis en shp actuellement) : un collègue a développé un outil sous access mais il n'est pas encore publié...

Pour les données, je peux faire ça par mail : une géodata d'annotations, un extrait de table de liens et un shape... mais ce sera pour demain.

Le mieux pour le moment est donc de réparer le mal qui est déjà fait : corriger les fautes d'accents sur mes géodatabases d'annotations... ce que je n'arrive pas à faire (à part mot par mot avec la fonction replace).

Merci à toi et à Joël de vous pencher sur le pbl (j'envoie un extrait demain matin)
Emeric

Hors ligne

 

#12 Mon 10 June 2013 17:03

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Mise à jour VBA sur entités annotations

Ok smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB