Macro - VBA pour facturation Google Sheets

Bonjour à tous,

J'espère que vous vous portez bien ainsi que vos proches !

Je profite de ce temps off forcé pour refaire mon modèle de facturation.

Grâce à l'aide géniale de Exacel, j'ai pu avoir un fichier propre. Je pensais m'en sortir seul à présent et voler de mes propres ailes mais mon envol était de courte durée

Je souhaite maintenant automatiser certaines opérations et donc profiter de la Macro sous Google Sheets.

Je souhaite copier certaines informations du modèle de facture qui vient d'être édité (le numéro de facture, la date, le nom du client et le prix TTC) et les coller dans l'onglet "Archive Facture" pour en garder une copie puis remettre le template vierge pour accueillir la nouvelle facture.

Je pensais utiliser l'enregistrement de Macro Google Sheets, j'ai essayé en valeurs absolue puis relatives mais le résultat n'est pas la.

En ouvrant le script j’aperçois ce que je pense être quelques erreurs, mais je me trompe peut être, mes connaissances en VBA étant limitées.

Pensez vous pouvoir m'aider et corriger cette Macro afin d'automatiser le process recherché?

Ca peut très bien se faire en deux temps, en deux Macro si c'est plus simple comme suit :

1 - Archivage de la facture en cours avec copié/collé des infos mentionnées ci dessus (depuis "Facture" vers "Archive Factures")

2 - Remise à zéro pour accueillir la nouvelle facture

Informations à copier depuis "Facture" vers "Archive Factures" dans les colonnes correspondantes :

  • "B16 - C17" (dernier numéro de facture en date) après avoir inséré une nouvelle ligne en A2 pour avoir le dernier numéro de facture en haut de colonne
  • "D16 - D17" pour la date
  • "E15 - G15" pour numéro du client

Ensuite, pour la remise à vierge du template Facture, vous vous en doutez, des formules sont mises en place sur ce modèle de facture et des informations ne bougeront jamais, donc inutile de tout effacer.

Cellules à effacer :

  • "B25 - F32" (ce qui correspond à "description", "prix", "quantité", puis le total TTC sera mis à 0 automatiquement)
  • "E15 - G15" (le nom du client, ce qui viendra effacer automatiquement l'adresse car les deux sont liés)

Je vous partage le fichier excel tiré du Google Sheets mais n'étant pas sur que la macro et donc le code VBA soit bien retranscrit en passant d'un format à un autre, je me permets de copié/collé également ici le code tel qu'il apparaît dans mon éditeur de script sous Sheets

/** @OnlyCurrentDoc */

function myFunction() {

var spreadsheet = SpreadsheetApp.getActive();

spreadsheet.getRange('B16:C17').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive Factures'), true);

spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);

spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();

spreadsheet.getRange('A2').activate()

.setValue('48');

spreadsheet.getRange('B2').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Facture'), true);

spreadsheet.getRange('E15:G15').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive Factures'), true);

spreadsheet.getRange('Facture!E15:G15').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Facture'), true);

spreadsheet.getRange('D16:D17').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive Factures'), true);

spreadsheet.getRange('C2').activate()

.setValue('43935');

spreadsheet.getRange('D2').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Facture'), true);

spreadsheet.getRange('G36').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive Factures'), true);

spreadsheet.getRange('Facture!G36').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.getRange('F1').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Facture'), true);

spreadsheet.getRange('B25:F32').activate();

spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});

spreadsheet.getRange('E15:G15').activate();

spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});

spreadsheet.getRange('I10').activate();

};

J'ai mis en gras une ligne qui me semble être une erreur, car je ne veux pas copier/coller le nombre "48" mais de manière dynamique la valeur de la cellule "B16 - C17" pour le numéro de facture actif sur lequel je viens de travailler.

J'espère ne pas avoir été trop explicatif mais je souhaitais vous exposer avec le plus de détails possible ma recherche afin de ne pas vous faire perdre votre temps.

Merci d'avance pour votre aide précieuse et votre temps !

Prenez soin de vous !

Bonjour à tous,

Auriez vous des idées ?

Merci par avance

Cordialement

Hello BBS,

Si c'est toujours d'actualité....

Nous allons essayer de faire un nouveau miracle !

La navette entre Sheets et Excel doit être évitée, surtout si ça concerne du script.

Pour évacuer ce sujet, il faut que tu partages un classeur sheets.

Fais une version montrable du fichier, et partage le par lien public en écriture.

Je pourrais intervenir directement, sans avoir à reproduire le cas de mon côté.

Merci, à proche prochaine

EMX

Bonjour Exacel,

Merci pour ton retour !

Oui toujours d'actualité, je prépare le fichier et je posterai le lien

Bonne journée

Bonjour Exacel,

Pardon pour ce retour tardif, d'autres préoccupations se sont manifestées.

Si ton aide est toujours disponible, voici le lien du document Google Sheet pour le travail

Merci encore

Bonjour Exacel, bonjour à tous,
Sauf erreur de ma part, je ne vois plus le lien pour le drive sur le fichier Sheets que j'avais posté pour que tu puisses y jeter un coup d’œil.
Si besoin je reposte, car question toujours d'actualité.

Bien à toi

Rechercher des sujets similaires à "macro vba facturation google sheets"