Résoudre les problèmes courants

Ce guide liste les problèmes courants que vous pouvez rencontrer lorsque vous convertissez du code Visual Basic for Applications (VBA) en Apps Script à l'aide de Macro Converter.

Les API VBA qui impriment des fichiers sont automatiquement converties en Apps Script, mais peuvent se comporter différemment de l'API VBA d'origine. Le tableau suivant présente deux exemples :

API VBAComportement dans Apps Script
PrintOutConvertit en Apps Script, mais l'API Apps Script imprime dans un fichier au lieu d'une imprimante. Imprimez manuellement le fichier PDF.
PrintToFileConvertit en Apps Script. Le fichier PDF est enregistré dans votre dossier "Mon Drive".

Articles non convertis

Le convertisseur de macros ne convertit pas les fonctionnalités suivantes, qui doivent être converties manuellement :

Déclencheurs

Le convertisseur de macros ne convertit pas deux types de déclencheurs (raccourcis clavier et certains déclencheurs basés sur des événements). Dans de nombreux cas, vous pouvez créer ces déclencheurs manuellement.

Raccourcis clavier

Pour ajouter des raccourcis clavier, suivez la procédure d'importation de fonctions en tant que macros.

Déclencheurs basés sur les événements

Certains événements du code VBA, comme BeforeClose ou BeforeSave, n'ont pas d'équivalents dans Apps Script, mais vous pouvez peut-être trouver une solution de contournement.

Pour les événements tels que BeforeClose, vous pouvez créer un menu ou un bouton personnalisé sur lequel cliquer pour effectuer l'action requise avant de fermer la feuille de calcul.

Il n'existe pas de solution de contournement pour l'événement BeforeSave, car Google Sheets enregistre automatiquement les modifications à mesure que vous les apportez.

Userforms

En VBA, un UserForm est une fenêtre ou une boîte de dialogue dans l'interface utilisateur (UI) d'une application. Macro Converter ne convertit pas les UserForms. Créez-les manuellement dans Apps Script.

Créer une boîte de dialogue de formulaire utilisateur

  1. Sur votre ordinateur, ouvrez le fichier converti dans Sheets.
  2. En haut de la page, cliquez sur Extensions > ** Apps Script**.
  3. À gauche de l'éditeur, à côté de "Fichiers", cliquez sur Ajouter un fichier  > HTML. Nous vous recommandons de donner au fichier HTML le même nom que votre UserForm VBA d'origine.
  4. Ajoutez les champs et les informations que vous souhaitez voir apparaître dans votre formulaire. Pour en savoir plus sur les formulaires HTML, consultez W3school.com.
  5. Sur la gauche, cliquez sur le fichier Apps Script (fichier GS) contenant votre code converti.
  6. Si vous avez déjà un déclencheur onOpen dans votre code, mettez-le à jour avec le code suivant. Si vous n'avez pas le déclencheur onOpen dans votre code, ajoutez le code suivant.
    function onOpen() {
     SpreadsheetApp.getUi()
         .createMenu('User Form')
         .addItem('Show Form', 'showForm')
         .addToUi();
    }
    function showForm() {
     var html = HtmlService.createHtmlOutputFromFile('userform_module_name')
         .setWidth(100)
         .setTitle('Sign-up for Email Updates');
     SpreadsheetApp.getUi().showSidebar(html);
    }
        
  7. Remplacez userform_module_name par le nom du fichier HTML que vous avez ajouté.
  8. En haut de l'écran, cliquez sur Enregistrer le projet .
  9. Basculez vers la feuille de calcul Google Sheets et rechargez la page.
  10. En haut de la feuille de calcul Google Sheets, cliquez sur Formulaire utilisateur > Afficher le formulaire.

Plages nommées

Dans Excel, les plages nommées sont des noms attribués à une seule cellule ou à une plage de cellules.

Lorsque vous convertissez des fichiers Excel en fichiers Sheets, certains types de plages nommées ne sont pas convertis, car ils ne sont pas compatibles. Le tableau suivant présente quelques exemples courants :

Plages nommées non acceptéesDescription
TablesNon compatible avec Sheets, mais une solution de contournement existe.

Pour recréer cette plage nommée dans Sheets, ajoutez une plage nommée qui pointe vers la notation A1 de la plage de tableau. Utilisez le même nom que la plage nommée d'origine dans votre code VBA afin que le code converti la reconnaisse.
Liste des plagesNon compatible avec Sheets. Il n'existe aucune solution de contournement.