Problème de fonctionnement VBA Excel sur XP suite aux dernières mises à jour de

Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
- - Dernière réponse : delattre13
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
- 23 sept. 2012 à 23:09
Bonjour,
depuis 2 jours je me suis rendu compte que ma macro qui tournait depuis plusieurs années sous Excel 2003 puis Excel 2007 sous environnement XP ne donne plus les mêmes résultats.
En particulier il y a fonction Trim() qui ne supprime plus les espaces en fin de chaîne de caractères et la Fonction Mon_Lien.Follow qui ne suit plus rien et génère un message d'erreur
Erreur d'exécution '-2147023706 (800704a6)': Erreur Automation

Cette macro fonctionne encore très bien sur Excel 2010 et W7 64b.

La dernière fois que j'ai utilisé cette macro avec succès sur XP c'était au début du mois vers le 9 septembre au soir.
La semaine dernière j'ai laissé Microsoft faire les mises à jour critiques pour XP et Office. Depuis hier soir j'essaye en vain de trouver le paramètre qui bloque dans les paramètres de sécurité de IE8 et les paramètres de sécurité des macros d'Excel. Mais je n'ai pas trouvé le bon filon.

Bien sûr il me reste la solution sur un autre PC avec W7 mais je ne peux pas l'utiliser longtemps car il est n'est pas à moi.

Merci à tous pour le bon travail que vous faîtes.
Cordialement
Afficher la suite 

10 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
0
Merci
Salut

Bizarre, en effet.
Regarde voir <ce lien> et voir cela peut corriger ton problème

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
0
Merci
Sinon, fais ce test afin de déterminer si c'est ton code ou l'installation de Office qui pose problème :
Ouvre un Excel tout neuf et va dans le VBA.
Créé une Sub bidon dans laquelle tu mets le code de test de Trim :
Dim maChaine As String
maChaine = " Espace au début et espace à la fin   "
maChaine = Trim(maChaine)
Debug.Print ">"; maChaine; "<"

Test aussi cette autrre syntaxe de Trim :
maChaine = Trim$(maChaine)  ' avec un $

Si cela fonctionne, c'est que le problème vient du code.
Cela peut venir du fait que tu aies appelé un Sub/Function ou variable avec un mot réservé du système.
Dans ce cas, le compilateur peut donner ce genre de message, indirectement lié à l'erreur.

Si cela ne fonctionne pas non plus, c'est Office.
Dans ce cas, il doit être possible de 'réparer' l'installation en passant par le panneau de configuration - Désinstaller un programme
Commenter la réponse de cs_Jack
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
0
Merci
Rebonjour,
En cherchant j'ai essayé avec Framafox comme navigateur par défaut et là miracle! la macro fonctionne.
Si vous avez des idées sur cette erreur IE8 je suis preneur
Dans le cas contraire en attendant que Microsoft remette une mise à jour qui débloque le problème je garde cette solution.
Salutations
Commenter la réponse de delattre13
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
0
Merci
... Quel rapport avec IE ?

Ah tu parles de Mon_Lien.Follow.
Suffit de savoir de quel type/objet est ta variable Mon_Lien ...
Commenter la réponse de cs_Jack
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
0
Merci
Bonjour
pour le Trim() j'avais déjà réglé mon problème par du code qui supprime tous les caractères en dehors des chiffres et des lettres accentuées ou pas en testant les codes ASCII des caractères ce qui est équivalent à la fonction épurage() et Supprespace() d'Excel.
Ce qui est curieux c'est que ça marchait bien avant et que ça fonctionne sans problème sur W7 et Office 2010.
Salutations
Commenter la réponse de delattre13
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Pour toàn Trim qui ne fonctionne plus, les causes peuvent être multiples et diverses.
As-tu essayé la réinstallation de Excel ?
Pour ton autre problème : peut survenir si tu es passé de IE6 à IE8.
Oubre la base de registre sur cette valeur :


HKEY_CLASSES_ROOT\Typelib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32\REG_Z C:\WINDOWS\system32\ieframe.dll\1

si comme ci-dessus : supprime le /1




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
0
Merci
Merci à tous pour vos réponses
Pour le Trim() ça marche dans la fenêtre d'exécution de VBA.

Le problème venait dans l'instruction : Cellule = Trim(LCase(ActiveCell.Text))

Dans ActiveCell.text il y a un blanc derrière la valeur et ce blanc génère une erreur s'il n'est pas supprimé dans Cellule. Avec cette instruction ça allait très bien. La variable Cellule ne contenait plus l'espace. Mais après la mise à jour la première erreur rencontrée en créant le lien hypertexte venait de l'espace résiduel. Le lien ne marchait plus car le site était introuvable.
Donc au lieu de supprimer l'espace j'ai modifié l'intruction en mettant une boucle du style
For I = 1 To Len(Cellule)
If Asc(UCase(Mid(Cellule, I, 1))) < 48 Or Asc(UCase(Mid(Cellule, I, 1))) > 57 And Asc(UCase(Mid(Cellule, I, 1))) < 65 Or Asc(UCase(Mid(Cellule, I, 1))) > 90 And Asc(UCase(Mid(Cellule, I, 1))) < 192 Or Asc(UCase(Mid(Cellule, I, 1))) > 221 Then
etc...........
Else
MonLien = MonLien + Mid(Cellule, I, 1)
etc...........
ce qui règle le problème des blancs ayant un code ASCII différent de l'espace.
Donc une fois cette instruction mise en place le lien devenait correct et était utilisable par copier/coller dans l'explorateur IE8 de mon XP mais l'instruction Lien.Follow ne marche plus avec IE8. Ni même en copiant la valeur dans une cellule et en cliquant dessus
Par contre elle fonctionne si je met Framafox comme explorateur par défaut.
J'ai vérifié la différence de paramètres entre IE8 et Framafox mais je n'ai rien vu de probant. J'ai diminué le niveau de sécurité d'IE8 mais ça n'a rien changé. Je suis donc revenu à un niveau moyen-haut pour IE8 et j'utilise Framafox comme explorateur par défaut.

Dans la base de registre j'ai contrôlé
HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32 C:\WINDOWS\system32\ieframe.dll est bien sans le \1

Si vous avez des pistes pour remettre IE8 par défaut je reste preneur car le problème pourrait venir aussi avec Framafox à la suite d'une amélioration quelconque.

J'ai exploré les sites de Microsoft mais rien de récent dans les sites en français ou francisé concernant mon problème.
Commenter la réponse de delattre13
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
0
Merci
Re

Horreur !
For I = 1 To Len(Cellule)
If Asc(UCase(Mid(Cellule, I, 1))) < 48 Or Asc(UCase(Mid(Cellule, I, 1))) > 57 And Asc(UCase(Mid(Cellule, I, 1))) < 65 Or Asc(UCase(Mid(Cellule, I, 1))) > 90 And Asc(UCase(Mid(Cellule, I, 1))) < 192 Or Asc(UCase(Mid(Cellule, I, 1))) > 221 Then 

-1- Tu répètes 6 fois la même instruction, Asc(UCase(Mid(Cellule, I, 1)))
Perte de temps. Si tu as des centaines de lignes à traiter, cela peut avoir une grosse influence.
Fabrique une variable intermédiaire dans laquelle tu mettras ce code ascii et utilise cette variable en lieu et place.
-2- Manque de parenthèses mélangeant des And et des Or : l'instruction ne doit pas fonctionner; le compilo ne doit pas savoir quoi faire.
-3- Select Case serait plus adapaté
-4- Pour la lisibilité de ton code, utilise le symbole _ en fin de ligne afin de passer à la ligne

Si j'ai bien compris l'ordre des Or And :
    Dim monChar As Byte
    For I = 1 To Len(Cellule)
        monChar = Asc(UCase(Mid(Cellule, I, 1)))
        If (monChar < 48 Or monChar > 57) And _
           (monChar < 65 Or monChar > 90) And _
           (monChar < 192 Or monChar > 221) Then
qui peut donc aussi s'écrire comme ça :
    Select Case Asc(UCase(Mid(Cellule, I, 1)))
        Case 48 To 57, 65 To 90, 192 To 221
        
        Case Else
        
    End Select

Merci d'utiliser la coloration syntaxique (3eme icone à droite) quand tu colles du code = plus lisible.

Quant à ton histoire d'espace qui n'est pas un espace : alors c'est quoi ? Il a un code ASCII ce caractère. Lequel. Il est possible que ce soit à cause d'un mauvais découpage de la chaine dont il est extrait (je pense à un CR (13) LF (10) ou FF (12)).

Pour IE, peut être une histoire de mode compatibilité.
Commenter la réponse de cs_Jack
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
0
Merci
Bonjour Jack,
Très bien pour le Select Case c'est vrai que je ne l'utilise que très rarement.
Et là je vois vois que j'ai tort.
Dans la cellule c'est bien un espace puisque avant il n'y avait pas d'erreur dans l'adresse.
J'ai déjà utilisé mon code sur W7 64b et Office 2010 avec IE9 ça tourne toujours sans soucis.
Super l'astuce de l'icône pour mettre en valeur le code.
Ceci dit mon code fonctionne toujours bien puisque en mettant Framafox comme navigateur tout remarche comme avant.
Je pense que la mise à jour système a du durcir la sécurité IE8 car parfois si j'utilise Google pour chercher des informations, IE8 laisse la page Google vide. Cette même recherche sur Framafox fonctionne. IE étant livré avec le Système d'exploitation je l'ai toujours utilisé sans me poser de question. Je pense qu'à la prochaine mise à jour ça remarchera en attendant je travaile avec Framafox.

En tout cas merci à tous pour votre disponibilité.
Salutations
Commenter la réponse de delattre13
Messages postés
20
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
3 mai 2013
0
Merci
Bonjour à tous,

J'ai reçu ce matin deux mises à jour
1 Pour XP et l'autre pour Java. Suite à ces mises à jour le système à redémarré.
Ce soir j'ai pensé à remettre IE8 par défaut et ça remarche avec mon code. Avec juste Trim les adresse sont correctes et les liens Hypertextes refonctionnent comme avec Framafox.
Donc il suffisait d'attendre un peu.

Si je ne m'était pas servi de mon programme la semaine dernière je ne serais même pas rendu compte du problème.

Je pense qu'on peut clore le sujet sauf si quelqu'un à des infos précises sur les mises à jour en question et une parade plus formelle que celle d'attendre la mise à jour suivante.

Encore une fois merci pour votre disponibilité.

Cordialement
Commenter la réponse de delattre13