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 Subet 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 :-)