Une suite de logiciels de tableur Microsoft avec des outils pour analyser, créer des graphiques et communiquer des données
Cette réponse a été traduite automatiquement. Par conséquent, elle peut contenir des erreurs grammaticales ou des mots étranges.
Bonjour @Roland Miller,
J'apprécie sincèrement votre remarque importante concernant la conversion de fichiers XLSM en XLSX pour éviter les macros, et je comprends parfaitement la gêne occasionnée par une telle limitation.
Je souhaite donc résumer brièvement ce message afin que les autres membres du forum puissent facilement y trouver des informations utiles :
Description du problème
- Problème : Des milliers de classeurs Excel (.xlsm) contiennent du code VBA qui appelle des API Windows 32 bits. Sur Office 64 bits, ces déclarations échouent à la compilation à l'ouverture, ce qui bloque l'utilisation et l'automatisation en aval.
- Contraintes opérationnelles :
- La conversion manuelle n'est pas réalisable (volume et nombreux utilisateurs finaux).
- L'option Enregistrer sous de certains fichiers est bloquée par le code/l'interface utilisateur du classeur.
- Une partie des fichiers se trouve sur OneDrive, où les verrous de co-création/synchronisation provoquent des erreurs d'enregistrement/enregistrement sous.
- Bien que le mot de passe du projet VBA soit connu, la suppression programmatique de la protection d'un autre classeur n'est pas prise en charge par le modèle objet Excel/VBE.
- Aucun commutateur de registre n'est pris en charge pour permettre la compilation du code API 32 bits sous Office 64 bits ou pour contourner la protection VBE.
Solution terminée (lors du dépannage)
- L'étape de fermeture et de réouverture a été confirmée et validée : après avoir enregistré le fichier au format .xlsx, le classeur doit être fermé et la copie neutralisée rouverte avant de poursuivre, afin d'éviter tout événement ou contexte de code persistant.
Exemples renforcés fournis pour VBA et PowerShell + Excel COM : désactivation forcée des macros (AutomationSecurity = ForceDisable),
ouverture en lecture seule sans mise à jour des liens,
enregistrement au format .xlsx (standard ou strict),
fermeture du classeur avant toute action ultérieure,
gestion sécurisée de OneDrive : sauvegarde locale, puis copie dans OneDrive après fermeture (avec un bref délai d'attente avant nouvelle tentative pour les verrous de fichiers).
Solution actuelle :
- Fermer le classeur
Ouvrir la copie neutralisée au format .xlsx.
Vous pouvez toujours le faire dans la même macro en ajoutant des instructions pour la fermer.
Ensuite, ouvrir l'autre.
Par exemple :
Sub OpeningWorkbook()
Application.EnableEvents = False
Workbooks.Open FileName:="C:\Users\aliboron\Desktop" & "Workbook2.xlsm"
Application.EnableEvents = True
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:="Classeur2.xlsx", FileFormat:=xlOpenXMLStrictWorkbook
ActiveWorkbook.Close
Workbooks.Open FileName:="C:\Users\aliboron\Desktop" & "Classeur2.xlsx"
Application.DisplayAlerts = True
End Sub
Mise à jour actuelle :
Bien que nous n’ayons pas encore de calendrier précis pour une correction ou une amélioration, ce problème a été signalé par plusieurs utilisateurs. Si possible, plus l’équipe recevra de commentaires et de préoccupations, plus il sera visible dans une future mise à jour.
Si des mises à jour ou des annonces sont publiées concernant cette fonctionnalité, je ne manquerai pas de vous les communiquer dès que possible.
Remarque : Soyez assuré que vous n’êtes pas seul. Je continuerai de suivre ce problème et vous informerai de toute nouvelle mise à jour dès que possible.
Je vous remercie sincèrement de votre patience et de votre compréhension. Veuillez noter qu’en tant que modérateurs du forum, nous ne participons pas aux décisions de conception du produit et n’avons pas directement accès à la feuille de route de développement.
En attendant, si vous constatez que mes réponses apportent des informations utiles, veuillez les accepter comme réponse et voter pour elles via le compte qui a posé cette question. Une fois marquée, la réponse sera automatiquement épinglée en haut de la page. Comme d'autres utilisateurs recherchent également des informations dans cette communauté, votre précieux vote aidera certainement les autres utilisateurs ayant des requêtes similaires à trouver plus rapidement la chaîne appropriée et des informations utiles.
Si vous avez d'autres questions ou besoin de précisions, n'hésitez pas à me contacter. Je suis à votre écoute.
Si ma réponse vous est utile, veuillez cliquer sur « Accepter la réponse » et voter pour elle. Si vous avez d'autres questions concernant cette réponse, cliquez sur « Commenter ».
Remarque : Veuillez suivre les étapes décrites dans notre documentation pour activer les notifications par e-mail afin de recevoir la notification associée à ce fil de discussion.