Erreur d'execution 432 nom du fichier ou de la classe introuvable Automation

ofouquay - 14 mars 2013 à 14:07
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 15 mars 2013 à 13:52
Bonjour
Avant tout désolé si le post n'est pas à la bonne place, je ne savais pas vraiment ou le poster.

je viens de récupérer un fichier avec des macros qui fonctionnaient sous 2003 mais bug sous 2007
Voici le début de la macro

Sub Sam2()
'
' EXECUTION_GENERALE Macro
'
'On Error Resume Next
Dim obj, objxl As Object ' Variables d' objets Excel

Dim MyData As DataObject
Dim src, source, nb_lignes, nb_lines, i, j, k As Integer
Dim xls_file, xls_path, dif_file, dif_path, nom_classeur, txt, nv As String
Dim colonne(15) As String ' sert pour "conversion" du dif par rechercher/remplacer (",","."...)
Dim coldates(10) As String ' sert pour formatage des dates
Dim colheures(10) As String ' sert pour formatage des heures
Dim import As Boolean
Dim copier_formules As Boolean

Set MyData = New DataObject ' Sert au vidage du presse-papier avant fermeture dif

' import = True ' si import=false on traite la liste en cours sinon on importe le dif
copier_formules = False

Application.ScreenUpdating = False
Application.DisplayAlerts = False

' If import = True Then

xls_file = ActiveWindow.Caption ' Récupération du nom du fichier XLS en cours (--> permet le renommage)

'Identification du fichier dif:
nom_classeur = VBA.Left$(xls_file, Len(xls_file) - 4)
dif_file = nom_classeur & ".dif"
xls_path = ActiveWorkbook.FullName
dif_path = VBA.Left$(xls_path, Len(xls_path) - 4) & ".dif"

Set objxl = GetObject(dif.Path)
Set objxl = Nothing

l'erreur "Erruer d'éxecution 432 nom du fichier ou de la classe introuvable Automation" s'affiche à l'avant dernière ligne (set objxl = Getobject(dif.path))
Je récupère un fichier .dif que je colle dans un fichier .xls
les 2 se trouvent dans le même répertoire

Merci de vore aide.

Olivier

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mars 2013 à 16:31
Salut

Catégorie : c'est presque ça. --> VBA

Code : Utilise la coloration syntaxique = 3ème icone à droite

Il faut détailler ton code pour savoir que tu parles de Excel.

Impose-toi la déclaration obligatoire des variables (Options) et ajoute "Option Explicit" en tête de chaque page de code de ton projet.
Cela t'aurai permis de trouver cette erreur :
dif_Path et non dif.Path

Dim src, source, nb_lignes, nb_lines, i, j, k As Integer
Hélas, ceci ne veut pas dire que chaque variable sera de type Integer.
Elle seront toutes du type Variant (indéfini) sauf la dernière qui sera bien un Integer.
Cela peut influencer le comportement de ton programme.
Il faut déclarer le type pour chaque variable :
Dim src As Integer, source As Integer, nb_lignes As Integer, nb_lines As Integer, i As Integer, j As Integer, k As Integer

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 le partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mars 2013 à 16:35
PS : Bannis définitivement l'usage de "On Error Resume Next" : Cela masque les erreurs.
Si tu l'utilises, c'est parce que l'instruction qui suit risque de provoquer un défaut. Ça peut arriver.
Mais aussitôt après avoir vérifié le code de défaut à la sortie de cette instruction, il faut immédiatement revenir à une gestion d'erreur classique :
Soit "On Error Goto monLabelErreur"
Soit "On Error Goto 0"
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mars 2013 à 16:39
Rappel : En VBA, donc 32 bits, les types Integer ne permettent le stockage de valeurs que de -32768 à +32767 (Voir Long plutôt)
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
14 mars 2013 à 16:43
Question déjà posée sur un autre forum.   Il y verra la réponse ...


___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 mars 2013 à 17:07
Bonjour,
Lorsque je lis des choses comme ces deux lignes qui se suivent :
Set objxl = GetObject(dif.Path)
Set objxl = Nothing 

Je me dis qu'il est super clair que celui qui a écrit cela ne sait même pas pourquoi il l'a écrit. Et je fuis.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mars 2013 à 17:42
Oh oui, lol, j'avais même pas fait gaffe.
Amusant.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
15 mars 2013 à 13:52
Et pour utiliser le DataObject, il faut s'assurer de cocher la référence à Microsoft Forms 2.0 Object Library


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous