Problème VBA 2007-2013

Bonjour,

J'ai le code suivant dans une feuille de calcul Excel:

Private Sub CommandButton1_Click()

Dim Mois As String

Dim Liste As String

Dim Nom As String

Dim Validité As String

Dim Extension As String

Dim EnregistrementfUN As String

Dim NomFichier As String

Mois = Worksheets("Feuil1").Range("F3").Value

Liste = ActiveSheet.Name

Nom = Worksheets("Feuil1").Range("H3").Value

Validité = Worksheets("Feuil1").Range("K3").Value

Extension = ".xls"

EnregistrementfUN = "Q:....\150019"

NomFichier = Liste & " " & Mois & " " & Nom & " " & "ab " & Validité & Extension

If Worksheets("Feuil1").Range("H3").Value = " fUN" Then

ActiveWorkbook.SaveAs Filename:=EnregistrementfUN & "\" & NomFichier, FileFormat:=56

End If

(j'ai volontairement enlevé certaines lignes qui n'avaient pas lieu d'être).

Pour la fonction If

Sur mon PC qui tourne avec MS Office 2007, tout fonctionne comme il faut. Par contre, chez mes collègues qui utilisent excel 2013, la fenêtre d'erreur vient à chaque fois comme quoi la macro n'a pas s'effectuer correctement. En cliquant sur débogage, la ligne commençant par "ActiveWorkbook...." est mise en jaune car apparemment l'erreur se trouve là, mais je ne comprend pas.

Quelqu'un pourrait-il svp m'aider ?

Bonjour markus280,

À partir d'Excel 2013, la nouvelle interface SDI a remplacé l'interface MDI :

https://msdn.microsoft.com/fr-fr/vba/excel-vba/articles/programming-for-the-single-document-interface-in-excel

Ton problème vient peut-être de là ? à tout hasard, essaye en mettant ThisWorkbook.SaveAs au lieu de ActiveWorkbook.SaveAs ; non garanti, surtout que j'ai moi-même Excel 2007 (donc avec MDI).

Si ça a marché, merci de passer le sujet en résolu : clic sur ☑

Cordialement

Bonjour,

ActiveWorkbook ne pose pas de problème.

Pour mémo, ActiveWorkBook représente le classeur actif et ThisWorkbook le classeur où s'exécute le code. Ces 2 classeurs peuvent être les mêmes ou non, sachant que le classeur actif est par défaut le dernier ouvert.

Le problème vient du paramètre File Format qui n'existe pas. Voir

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlfileformat-enumeration-excel

En enlevant ce paramètre, tu ne devrais plus avoir de problème.

Bonjour,

@ Thev

56 correspond à la constante xlExcel8 (format Excel 97-2003).

Un lien utile : http://www.rondebruin.nl/win/s5/win001.htm

Cdlt

Bonjour Jean-Eric et thev,

Merci pour vos compléments d'info.

Pour le format de fichier, j'utilisais 52 pour un .xlsm et pas le 56 de markus280.

Cordialement,

dhany

56 correspond à la constante xlExcel8 (format Excel 97-2003).

Effectivement, j'ai parcouru la liste trop rapidement. Cela dit, puisque l'extension .xls est ajoutée dans le nom du fichier, le paramètre FileFormat est inutile.

Re,

Ron de Bruin a écrit :

Dans Excel 2007-2016, SaveAs exige que vous fournissiez une fois le paramètre de format de fichier et l’extension de fichier correct.

Ce que je comprends, c'est qu'il faut le paramètre de format (56) et l'extension (.xls).

Maintenant...

Cdlt.

Oui et Non.

Après vérification, la suppression du paramètre FileFormat implique un message de confirmation qui peut être évité via une instruction

Application.DisplayAlerts = False.

Au final, le problème ne vient pas de là. Il faudrait avoir le code complet ou un extrait non confidentiel du classeur pour en trouver l'origine.

Bonjour,

ton bouton est sur feuille ou dans un userform ?

Si userform :

  • vbmodeless ou modal ?
  • essaie en mettant le saveas dans UserForm_Terminate(), voire même après la fermeture complète du userform si tu en as la possibilité.
eric

Bonjour,

Merci pour toutes ces infos.

@eriiic mon bouton est sur une feuille Excel et non dans un userform.

J'ai essayé plusieurs combinaisons (56, 52, etc) mais en vain.

Quelle est la valeur de NomFichier lors de l'erreur ?

NomFichier = Liste & " " & Mois & " " & Nom & " " & "ab " & Validité & Extension

Selon les variables définies en haut du code

non mais ça tout le monde l'a lu.

Quelle valeur a-t-elle au moment de l'erreur ?

le nom obtenu...

Rechercher des sujets similaires à "probleme vba 2007 2013"