Ajouter un commentaire avec un script
N
Bonjour,
J'utilisais Excel mais je viens de passer sur google sheet. Dans mon fichier Excel j'utilisais une macro pour ajouter des commentaires automatiquement des commentaires à des cellules.
Pouvez-vous m'aider pour convertir ma macro Excel en script google sheet ? Merciiiiiii d'avance pour votre temps et votre aide
La macro qui fonctionne sous Excel est :
Sub AjoutCommentaire()
Dim rng As Range
Dim Formule As String
Dim valeurFormule As Variant
Dim cell As Range
' Spécifiez la plage où vous souhaitez ajouter le commentaire (B18 à M26)
Set rng = Range("B18:M26")
' Vérifiez si la feuille est protégée et si oui, désactivez la protection avant d'ajouter le commentaire
If rng.Worksheet.ProtectContents Then
rng.Worksheet.Unprotect
End If
' Parcours chaque cellule de la plage
For Each cell In rng
Formule = "=IF(COUNTIF('Base de données Intervenants'!$F:$F, " & TEXT(cell.Address, "@texte") & ") > 0, INDEX('Base de données Intervenants'!$G:$G, MATCH(" & TEXT(cell.Address, "@texte") & ",'Base de données Intervenants'!$F:$F, 0)), """")"
valeurFormule = Application.Evaluate(Formule)
If valeurFormule <> "" Then
If cell.comment Is Nothing Then
cell.AddComment Text:=CStr(valeurFormule)
cell.comment.Visible = False ' Cacher le commentaire par défaut
Else
cell.comment.Text Text:=CStr(valeurFormule)
End If
Else
cell.ClearComments ' Supprime le commentaire existant s'il y en a un
End If
Next cell
End SubP
Bonjour,
Je ne connais pas le VBA mais voici ce que propose l'IA, à tester :
function AjoutCommentaire() {
// Accéder à la feuille active
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Spécifiez la plage où vous souhaitez ajouter le commentaire (B18 à M26)
var range = sheet.getRange("B18:M26");
// Vérifiez si la feuille est protégée et si oui, désactivez la protection avant d'ajouter le commentaire
var protection = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
if (protection.length > 0 && protection[0].canEdit()) {
protection[0].remove();
}
// Parcours chaque cellule de la plage
var values = range.getValues(); // Récupère les valeurs dans la plage
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
var cell = range.getCell(i + 1, j + 1); // Obtenir chaque cellule
var cellValue = values[i][j]; // La valeur de la cellule actuelle
var formula = '=IF(COUNTIF(\'Base de données Intervenants\'!$F:$F, ' + cell.getA1Notation() + ') > 0, INDEX(\'Base de données Intervenants\'!$G:$G, MATCH(' + cell.getA1Notation() + ',\'Base de données Intervenants\'!$F:$F, 0)), "")';
var valeurFormule = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Base de données Intervenants!$F:$F').getCell(1, 1).offset(0,0,1,1).getValue();
if (valeurFormule != "") {
if (cell.getNote() == "") {
cell.setNote(valeurFormule); // Ajouter le commentaire (note) à la cellule
} else {
cell.setNote(valeurFormule); // Mettre à jour le commentaire existant
}
} else {
cell.setNote(''); // Supprime le commentaire existant s'il y en a un
}
}
}
// Réactiver la protection de la feuille si nécessaire
if (protection.length > 0) {
protection[0].setUnprotectedRanges([]);
}
}