#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" .
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
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
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
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 À 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
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
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
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
Hors ligne