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 Fri 12 March 2010 10:02

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Compatibilité vba 9.1 et 9.3

Bonjour,

J'ai développé plusieurs macro vba avec arcmap 9.1 mais quand j'essaie de les faire tourner sur arcmap 9.3 ça plante, il me dit qu'il ne trouve pas la librairie. Le plantage se fait sur les fonctions chr() et left() (pour l'instant).
J'aimerais savoir si on peut installer un add-on, une librairie (ou truc dans ce genre) qui pourrait résoudre ce problème ou faut-il adapter le code au fur et à mesure qu'il me trouve les bugs ?

Cordialement,

Nicolas

Hors ligne

 

#2 Fri 12 March 2010 10:07

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

Re: Compatibilité vba 9.1 et 9.3

Salut,

peux tu nous poster la ligne incriminée?
A+
Joël

Hors ligne

 

#3 Fri 12 March 2010 10:56

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

concernant le chr

Code:

If Err.Number <> 0 Then
        MsgBox "Impossible de charger la référence :" & Chr(10) & "EXCEL.EXE" & Chr(10) & " Les fonction d'export sont désactivées", vbCritical, "Erreur"
        ref_excel = False
    End If

et left

Code:

reste2 = Left(reste, position - 2)

quand le bug se produit seul chr et left sont surligner de jaune

Hors ligne

 

#4 Fri 12 March 2010 11:34

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

Re: Compatibilité vba 9.1 et 9.3

Ton chr(10) est un saut de ligne?
Pourquoi ne pas essayer "vbnewline"

Code:

MsgBox "Impossible de charger la référence :" & vbnewline & "EXCEL.EXE" & vbnewline & " Les fonction d'export sont désactivées", vbCritical, "Erreur"

As tu essayé le supprimer le blanc ---> Left() et Chr()
Ou mettre des parenthèses

Code:

reste2 = Left(reste, (position - 2))

En espérant t'aider
A+
Joël

Dernière modification par Spacejo (Fri 12 March 2010 11:35)

Hors ligne

 

#5 Fri 12 March 2010 12:05

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

Je ne connaissais pas le vbnewline et ça marche tip top par contre pour le left il ne veut rien savoir, quand je supprime l'espace il le remet automatique et avec ou sans paranthèse rien n'y fait. Je trouve ça d'autant plus bizare que sur la ligne du dessus il y a un instr qui marche bien ...

En tout cas merci pour ton aide.

Hors ligne

 

#6 Fri 12 March 2010 12:11

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

Re: Compatibilité vba 9.1 et 9.3

Que représente le position dans la ligne incriminée?
Peux tu nous poster le bout de ton code qui parle de ce "position"
As tu essayé avec la fonction "len" qui prends le nombre de caractères de ta chaine?

Dernière modification par Spacejo (Fri 12 March 2010 12:17)

Hors ligne

 

#7 Fri 12 March 2010 12:23

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

C'est un integer qui donne la position d'une virgule dans une chaine du type "1 , montexte". J'ai essayé en remplacant "reste" et "position" par des données en dur mais ça ne marche toujours pas. Le problème ne vient donc pas des variables.

voilà le début du code

Code:

Dim j As Integer
Dim reste As String
Dim reste2 As Integer
Dim position As Integer

For j = 0 To UserForms.Count - 1
  If frm = UserForms.Item(j).Name Then
    UserForms.Item(j).zl_station.Clear
    reste = UserForms.Item(j).zl_site.Value
    position = InStr(reste, ",")
    reste2 = Left(reste, position - 2)
    ...
  end if
next j

Dernière modification par tnicolas (Fri 12 March 2010 12:29)

Hors ligne

 

#8 Fri 12 March 2010 12:26

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

Re: Compatibilité vba 9.1 et 9.3

(position - 2) ne donne pas de nombre négatif?

Hors ligne

 

#9 Fri 12 March 2010 12:36

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

Re: Compatibilité vba 9.1 et 9.3

Je pense que le problème vient de:

Tu déclares "reste2" comme étant un Intéger et la fonction Left (reste, position - 2)
te renvoie un "string" smile.

Dernière modification par Spacejo (Fri 12 March 2010 13:06)

Hors ligne

 

#10 Fri 12 March 2010 14:09

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

Je ne pense pas que se soit ça le problème car même quand je fais

Code:

Msgbox Left("tableau", 2)

ça ne marche pas. Et le code marche avec la 9.1.

Dernière modification par tnicolas (Fri 12 March 2010 14:10)

Hors ligne

 

#11 Fri 12 March 2010 14:15

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

Re: Compatibilité vba 9.1 et 9.3

Que donne --> Msgbox Left("tableau", 2) ---> "ta" non?

Hors ligne

 

#12 Fri 12 March 2010 14:37

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

sur la 9.1 oui
avec le code de départ et un nom comme "1 , tableau" il me renvoit "1"

Hors ligne

 

#13 Fri 12 March 2010 15:06

Forestis
Participant assidu
Lieu: Aniane (Hérault)
Date d'inscription: 5 Sep 2005
Messages: 168
Site web

Re: Compatibilité vba 9.1 et 9.3

mmm ca me rappel quelque chose ce probleme la mais je sais plus quoi
peut etre un probleme de reference

sinon tu as essayé Left$ ?


[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)

~Géomaticien Indépendant~

Hors ligne

 

#14 Fri 12 March 2010 16:37

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

j'essaierai left$ un plus tard et vous tiendrez au courant de la chose.

Merci pour vos pistes smile

Hors ligne

 

#15 Fri 12 March 2010 17:43

jmz
Participant actif
Lieu: Anthon
Date d'inscription: 5 Sep 2005
Messages: 142

Re: Compatibilité vba 9.1 et 9.3

Bonjour,

je n'ai pas trop suivi les posts précédent mais j'ai eu un problème du genre, et le truc c'est qu'il fallait préfixer mes commandes VBA , au lieu de Left(pramam, ..) essaye de mettre VBA.left(param, ...)

Julien

Hors ligne

 

#16 Fri 12 March 2010 18:07

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: Compatibilité vba 9.1 et 9.3

Cette explication me semble très pertinente.

Mais alors dans ce cas, au lieu de modifier toutes ces erreurs, il faudrait juste mettre en en-tête de fichier un code du genre "#using VBA". Le mot clef n'est peut-être pas #using, mais je ne connais pas ce point du VBA sad À chercher dans ce sens.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#17 Fri 12 March 2010 18:12

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

Re: Compatibilité vba 9.1 et 9.3

tnicolas a écrit:

sur la 9.1 oui
avec le code de départ et un nom comme "1 , tableau" il me renvoit "1"


T'es sur qu'il te renvoie --> "1" et Non "1 " un blanc en plus.
Le "1" peut être un entier mais il peut être aussi en texte.
Par contre c'est bizarre que le code fonctionne sur la 9.1 et non sur la 9.3
Maintenant le Left$ c'est du MapBasic et non du VB

A+
Joël

Dernière modification par Spacejo (Fri 12 March 2010 18:35)

Hors ligne

 

#18 Sat 13 March 2010 01:38

Forestis
Participant assidu
Lieu: Aniane (Hérault)
Date d'inscription: 5 Sep 2005
Messages: 168
Site web

Re: Compatibilité vba 9.1 et 9.3

j'ai un vieux souvenir d'un problème de reference "visual basic for application" mais je suis pas sûr


[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)

~Géomaticien Indépendant~

Hors ligne

 

#19 Tue 23 March 2010 14:14

tnicolas
Participant actif
Date d'inscription: 18 Apr 2007
Messages: 64

Re: Compatibilité vba 9.1 et 9.3

Bonjour,

Désolé pour le silence radio mais j'étais en déplacement sans conection internet.
Résultat des courses : mettre VBA. devant left and co marche bien mais il y en avait tellement dans mon code que j'ai cherché autre chose  roll

J'ai suivi la piste de Forestis et bingo dans la 9.3 il manquait la SpatialAnalysteUI. Le seul truc c'est que l'interface développée sous 9.3 affiche les date en mode américain alors qu'elles sont écrite en français dans la base et la 9.1 les affiche en français ...

Merci à tous pour votre aide smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB