Forcer extension en VBA

Bonjour le forum,

Je fais un extraction de données via mon ERP. Le problème c'est que quand je fais mon extraction de données, il m'ouvre automatiquement le fichier d'export avec pour message d'erreur : "impossible d'ouvrir le fichier car son format ou l'extension n'est pas valide". Il me faut donc cocher "Oui". J'aimerais que dans ma macro cela soit coché automatiquement et que je n'ai pas ce message d'erreur.

En cherchant sur internet, j'ai trouvé ce sujet qui est pratiquement le même que le mien : Message d'erreur à louveruture d'un fichier en VBA (excel-pratique.com)

Galopin avait trouvé une solution en utilisant ce code :

Sub galopin()
Chemin = "C:\BLABLA\EXC\" 'à adapter
Fichier = "Stock_glace.xls"
Workbooks.Open Chemin & Fichier
End Sub

Dans mon cas, lLe problème c'est que le fichier d'export s'ouvre AUTOMATIQUEMENT après l'export ! Donc si j'applique ce code, il ne veut pas réouvrir le fichier puisque celui-ci est déjà ouvert.

J'ai essayé de fermé le fichier en amont mais rien n'y fait. J'ai aussi essayé "Application.DisplayAlerts = False" mais ca n'a aussi ca n'a pas fonctionné.

Auriez vous une solution ?

Merci d'avance,

@+

Bonjour,

C'est une case à cocher ou un bouton ? Peut être qu'en simulant la pression des touches (exemple ALT+O) cela court circuiterais le message ?

Ou sinon n'est-il pas possible de paramétrer ton export pour que le fichier ne s'ouvre pas automatiquement ?

Cdlt,

bonjour,

très bizarre qu'une option d'export pour excel ne génère pas le fichier avec l'extension correcte. Quelle est cette extension ? As-tu contacté le service de support de l'ERP ?

Déja merci pour vos réponses.

Ergotamine : Le message ressemble à ca :

image

h2sO4 : Pour tout expliquer, par défaut, l'ERP génère en .MHTML (je ne sais pas pourquoi). Pour ma part, je veux l'enregistrer .XLS.

Comme la conversion doit être faite, il me met l'erreur ci dessus par contre, si je l'enregistre par défaut en .MHTML, je n'ai pas le message d'erreur.

Après je viens penser a une solution. Je l'enregistre en .MHTML puis je fait un code VBA permettant de l'enregistrer sous en .XLS.

Bonjour,

As-tu essayé d'importer ton Mhtlm (!?) avec Power Query (Récupérer et transformer) ?

Peux-tu joindre un exemple de fichier Mhtlm ?

Cdlt;

Bonjour Jean-Eric,

Non je n'ai pas importé mon MHTML. Non plus avec Power Query. On ne l'a pas au boulot

Oui je te joins ca à la fin de ce message sans soucie. J'ai juste changé les données(confidentialité).

Je penche sur une erreur ducoup. J'ai écrit cela :

Dim Chemin As String
Dim Fichier As String

Chemin = "C:\Users\SA220930\Desktop\TEST\"
Fichier = "MB51.xls"

Workbooks("MB51.MHTML").SaveAs Chemin & Fichier

Je n'ai jamais manié du MHTML avec du VBA. Je pensais qu'en écrivant simplement cela, je pouvais enregistrer sous un même fichier mais en .xls. Malheureusement, j'ai l'erreur suivante : " L'indice n'appartient pas à la sélection".

Une idée ?

6mb51.zip (6.03 Ko)
Chemin = "C:\Users\SA220930\Desktop\TEST\"
Fichier = "MB51.xls"

Workbooks(chemin & "MB51.MHTML").SaveAs Chemin & Fichier,FileFormat:=xlOpenXMLWorkbook

bonjour,

essaie ceci

Bonjour,

Ca ne fonctionne toujours pas. J'ai la même erreur, "l'indice n'appartient pas à la sélection".

Je pense que le "Workbooks" ne convient pas au MHTML.

D'autres idées ?

@+

Bonjour

Non je n'ai pas importé mon MHTML. Non plus avec Power Query. On ne l'a pas au boulot

Il faut penser à ouvrir la capot d'Excel : tu verras que dessous, il y a un moteur avec PowerQuery écrit dessus !

Il est totalement intégré à Excel depuis la version 2016 : accès depuis l'onglet Données

Ah je n'avais pas vu cela ! Merci 78Chris. Néanmoins je verrais avec mon chef si il veut bien changer sa méthode de fonctionner et utiliser Power Query.

Pour le reste, je crois avoir trouvé la cause du problème. Comme je l'ai expliqué, mon ERP génère un export en MHTML et il me l'ouvre en arrière plan. Néanmoins si l'erreur "Indice n'appartient pas à la sélection" se produit c'est parce que dans le code VBA il ne détecte pas que le fichier MHTML a été ouvert préalablement.

En soit, mon ERP l'ouvre en arrière plan mais en aucun cas Excel ne peut le savoir. Je suis donc obligé de le réouvrir comme ceci :

Dim Chemin As String
Dim Fichier As String
Dim Wb As Workbook

Chemin = "C:\Users\SA220930\Desktop\TEST\MB51\"
Fichier = "MB51.xls"

Set Wb = Workbooks.Open(Chemin & "MB51.MHTML")

Wb.SaveAs Chemin & Fichier, FileFormat:=xlOpenXMLWorkbook

Wb.Close SaveChanges:=False

Le code ci-dessus fonctionne parfaitement. Le problème c'est que j'ai toujours ma génération d'export automatique qui est toujours là en arrière-plan. Je pense qu'il vaut mieux que je regarde avec les administrateurs qui gèrent l'ERP pour demander où paramétrer cela.

@+

Tu as lu trop vite, regarde le début de mon précédent message Jean-Eric.

@+

Rechercher des sujets similaires à "forcer extension vba"