Compatibilité Macro 2010 > 2003
Résolu
Brandysve
Messages postés
59
Statut
Membre
-
Brandysve Messages postés 59 Statut Membre -
Brandysve Messages postés 59 Statut Membre -
Bonjour,
J'ai crée un modèle .xlt sur Excel 2010 qui enregistre automatiquement le nouveau classeur à l'ouverture, en .xls, sous un numéro spécifié sur la feuille.
Lorsque j'ouvre ce document .xls sous Excel 2003, il me met un message d'erreur et m'affiche le document de manière "codée" avec des caractères incompréhensibles.
Je me doute qu'il s'agisse d'un problème de compatibilité mais y a-t'il une solution?
Voici les macro :
1. Workbook
2. UserForm
Bien à vous,
J'ai crée un modèle .xlt sur Excel 2010 qui enregistre automatiquement le nouveau classeur à l'ouverture, en .xls, sous un numéro spécifié sur la feuille.
Lorsque j'ouvre ce document .xls sous Excel 2003, il me met un message d'erreur et m'affiche le document de manière "codée" avec des caractères incompréhensibles.
Je me doute qu'il s'agisse d'un problème de compatibilité mais y a-t'il une solution?
Voici les macro :
1. Workbook
Private Sub Workbook_Open()
Dim save_ener As String
UserForm1.Show
save_ener = Range("E1")
If save_ener < 10000 Then
save_ener = "\0" & save_ener
Else
save_ener = "\" & save_ener
End If
Range("A6").Select
fichier = "C:\Users\bsauveni\Desktop\En attente" & save_ener & ".xls"
ActiveWorkbook.SaveAs Filename:=fichier
End Sub
2. UserForm
Private Sub annuler_Click()
Unload UserForm1
End Sub
Private Sub CommandButton1_Click()
Range("E1") = Me.TextBox1.Value
Range("D2") = Me.TextBox2.Value
Range("B6") = Me.TextBox3.Value
Unload UserForm1
End Sub
Bien à vous,
A voir également:
- Compatibilité Macro 2010 > 2003
- Compatibilite windows 11 - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Pack compatibilité office 2003 - Télécharger - Bureautique
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
4 réponses
Bonjour,
Si tu enregistres tes actions, tu as ça qui apparaît :
Essaie donc :
A+
Si tu enregistres tes actions, tu as ça qui apparaît :
, FileFormat:=xlExcel8
Essaie donc :
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel8
A+
Bonjour,
En ajoutant ce que tu as inscrit, mes macro s'exécute sur le fichier .xls
En fait, le fichier .xlt ouvre une fenêtre ou j'inscris des données qui sont collées dans la feuille. En même temps, il enregistre sous ".xls" en fonction d'une des données.
En rajoutant ce que tu m'as donnés, il réouvre cette fenêtre dans le fichier .xls. Or, quand il enregistre, il doit seulement reprendre le contenu et non les macro.
En ajoutant ce que tu as inscrit, mes macro s'exécute sur le fichier .xls
En fait, le fichier .xlt ouvre une fenêtre ou j'inscris des données qui sont collées dans la feuille. En même temps, il enregistre sous ".xls" en fonction d'une des données.
En rajoutant ce que tu m'as donnés, il réouvre cette fenêtre dans le fichier .xls. Or, quand il enregistre, il doit seulement reprendre le contenu et non les macro.
En fait, le fichier .xlt ouvre une fenêtre ou j'inscris des données qui sont collées dans la feuille. En même temps, il enregistre sous ".xls" en fonction d'une des données.
ça, j'avais vu
En rajoutant ce que tu m'as donnés, il réouvre cette fenêtre dans le fichier .xls. Or, quand il enregistre, il doit seulement reprendre le contenu et non les macro.
ça, c'était pas dit
Je suis assez partisan de recopier les onglets dans un fichier vierge de macros : https://www.developpez.net/forums/d66537/logiciels/microsoft-office/excel/macros-vba-excel/enregistrer-fichier-xls-macro-code-vb/
A+
ça, j'avais vu
En rajoutant ce que tu m'as donnés, il réouvre cette fenêtre dans le fichier .xls. Or, quand il enregistre, il doit seulement reprendre le contenu et non les macro.
ça, c'était pas dit
Je suis assez partisan de recopier les onglets dans un fichier vierge de macros : https://www.developpez.net/forums/d66537/logiciels/microsoft-office/excel/macros-vba-excel/enregistrer-fichier-xls-macro-code-vb/
A+
@Zoul67
En suivant le code de la page que tu m'as données, j'ai l'erreur 1004 à la ligne
Si je résume :
Dans le code de base, il enregistre bien comme il faut. Si je le réouvre avec 2010, j'ai mon fichier excel sans code vba. Si je l'ouvre en 2003, j'ai pas de code vba mais pas de contenu non plus.
En rajoutant FileFormat:=xlExcel8, il me l'enregistre comme il faut mais me le réouvre en réexécutant les macros.
Il me faudrait un mixte des deux : L'enregistrer en .xls sans réexécuter les macro.
Voilà le code rajouté en module
Et le code du Workbook actuel :
Userform1:
En suivant le code de la page que tu m'as données, j'ai l'erreur 1004 à la ligne
For Each VbComp In ActiveWorkbook.VBProject.VBComponents ' 'suppression vba
Si je résume :
Dans le code de base, il enregistre bien comme il faut. Si je le réouvre avec 2010, j'ai mon fichier excel sans code vba. Si je l'ouvre en 2003, j'ai pas de code vba mais pas de contenu non plus.
En rajoutant FileFormat:=xlExcel8, il me l'enregistre comme il faut mais me le réouvre en réexécutant les macros.
Il me faudrait un mixte des deux : L'enregistrer en .xls sans réexécuter les macro.
Voilà le code rajouté en module
Sub SupprimeToutVBA()
Dim VbComp As Object
ThisWorkbook.SaveAs "C:\Users\bsauveni\Desktop\En attente" & save_ener & ".xls", FileFormat:=xlExcel8
For Each VbComp In ActiveWorkbook.VBProject.VBComponents ' 'suppression vba
Select Case VbComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
ActiveWorkbook.Save ' enregistre les suppressions
End Sub
Et le code du Workbook actuel :
Private Sub Workbook_Open()
Dim save_ener As String
UserForm1.Show
save_ener = Range("E1")
If save_ener < 10000 Then
save_ener = "\0" & save_ener
Else
save_ener = "\" & save_ener
End If
Range("A6").Select
'fichier = "C:\Users\bsauveni\Desktop\En attente" & save_ener & ".xls"
'ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlExcel8
'ActiveWorkbook.Close
End Sub
Userform1:
(...)
SupprimeToutVBA
End Sub
Mise en page : oui, c'est de la duplication d'onglets.
Là, je copie un onglet de mon fichier Book1.xlsm vers Book2.xls (Excel 97-2003) :
Là, je copie un onglet de mon fichier Book1.xlsm vers Book2.xls (Excel 97-2003) :
Sub Macro1()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\bsauveni\Desktop\Book2.xls", FileFormat:=xlExcel8, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Windows("Book1.xlsm").Activate
Sheets("Sheet1").Select
Sheets("Sheet1").Copy Before:=Workbooks("Book2.xls").Sheets(1)
End Sub
Problème résolu
J'ai rajouté le code de ton lien :
J'ai rajouté ça dans le code du Workbook tout à la fin
J'ai rajouté le code de ton lien :
Sub SupprimeTout()
'Enregistre le classeur et supprime la totalité des procédures
Dim VbComp As Object
For Each VbComp In ThisWorkbook.VBProject.VBComponents
Select Case VbComp.Type
Case 1 To 3
ThisWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
'Sauvegarde les modifications
ThisWorkbook.Save
End Sub
J'ai rajouté ça dans le code du Workbook tout à la fin
SupprimeTout