Traduction Macro Excel vers Google Sheet

Bonjour,

Avec l'aide du forum Excel j'ai réussi une macro VBA que je souhaiterai désormais passer sur Google Sheet.

Voici la macro VBA :

Sub commentaire()
'
' commentaire Macro
'
' Touche de raccourci du clavier: Ctrl+i
On Error Resume Next
ActiveCell.Comment.Delete

' 1) calcul
Dim tonnage As Double
tonnage = ActiveCell.Value

Dim hectare As Double
hectare = Range("h" & ActiveCell.Row)    ' meme numéro de ligne, dans la colonne H

Dim calcul As Double
calcul = tonnage / hectare

' 2) écriture du commentaire
ActiveCell.Comment.Delete
ActiveCell.AddComment CStr(calcul)
ActiveCell.Comment.Visible = False

End Sub

et voici ce que j'ai essayé de traduire à l'aide d'un convertisseur, mais ça ne fonctionne pas... :

function Nb_Ha() {
    // Nb_Ha Macro
    // Keyboard shortcut: Ctrl+i

    try {
        // Assuming we have a way to access the active cell and its properties
        var activeCell = getActiveCell(); // Placeholder function to represent getting the active cell
        var tonnage = parseFloat(activeCell.value);

        var hectare = parseFloat(getCellValue("H" + activeCell.row)); // Placeholder function to get value from a specific cell

        var calculationResult = tonnage / hectare;

        // Writing the comment
        activeCell.clearComment(); // Placeholder function to clear comment
        activeCell.addComment(calculationResult.toString()); // Placeholder function to add comment
        activeCell.comment.visible = false; // Assuming there is a comment property
    } catch (error) {
        // Handle error
    }

Pourriez-vous m'aider svp ?

Merci d'avance,

Marine

Salut,

Je ne lis pas le VBA mais voici une proposition IA :

function commentaire() {
  // Récupère la cellule active
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const cell = sheet.getActiveCell();

  // Supprime le commentaire existant sur la cellule
  cell.setNote("");

  // 1) Calcul
  const tonnage = cell.getValue();
  const row = cell.getRow();
  const hectare = sheet.getRange("H" + row).getValue(); // même numéro de ligne, colonne H

  if (hectare === 0) {
    // Gestion de l'erreur si la valeur de 'hectare' est 0 pour éviter une division par zéro
    cell.setNote("Erreur : hectare est égal à 0");
    return;
  }

  const calcul = tonnage / hectare;

  // 2) Écriture du commentaire
  cell.setNote(calcul.toString());
}

Là je lis que la fonction, lorsqu'elle est lancée semble récupérer la remarque inscrite dans une cellule.

Prend le tonnage qui est inscrit dans cette même cellule, l'hectare qui se situe colonne H de la même ligne.

Si hectare = 0 on ne fait rien, sinon on fait tonnage / hecatare et on écrit le résultat en remarque sur la cellule.

Bonjour à tous,

C'est exactement ça Pierre, sachant que l'IA a pris le temps de traiter le cas du diviseur=0 que l'on n'avait pas traité en VBA.

Je me demande juste si définir toutes les variables en "const" a un sens. Ca fonctionne certainement mais c'est bizarre.

Bonjour,

Je me demande juste si définir toutes les variables en "const" a un sens. Ca fonctionne certainement mais c'est bizarre.

Toute variable dont la valeur n'est pas modifiée par la suite peut être déclarée en const et c'est une bonne pratique

Il n'y a pas d'intérêt à utiliser let (ou anciennement var) si la valeur n'est pas modifiée par la suite.

Note que tu peux même déclarer un tableau avec const et modifier son contenu par la suite (et c'est correct), car l'affectation à la constante est l'objet tableau et non son contenu.

Tout ceci est expliqué dans le cours Apps Script du site

Bonjour Sébastien,

Intéressant, merci pour ton retour. C'est vrai que je n'ai jamais vraiment exploré le site car je fais mes recherches en anglais et il est moins bien référencé. Cependant je devrai regarder ce cours AppScript il a l'air très bien.

Bonsoir,

Désolé pour mon temps de réponse mais c'est tout bon, la proposition de Pierre fonctionne parfaitement !

Un grand merci à tous les répondants et bon weekend à tous :-)

Rechercher des sujets similaires à "traduction macro google sheet"