VBA VS Javascript

Résolu
Bonjour,

j'ai du passer sur google sheet au boulot cette semaine et je suis en galère avec mes fichiers.
J'avais une petite macro bien pratique et je voudrais la garder.
Elle permet de tracer la date de modification des cellules de la colonne A... Est ce que quelqu'un pourrait me dépanner pour la conversion svp

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
Target.Offset(0, 11) = Date
End If

End Sub

Merciiii

Biog

Configuration: Windows / Chrome 101.0.4951.54

5 réponses

  1. pour ceux que ça intéressera plus tard...

    J'ai réussi à bidouiller pour que la date s'affiche en colonne K (N°11) uniquement quand une cellule de la colonne A est modifiée


    function onEdit(e) {
    const as = e.source.getActiveSheet();
    const row = e.range.getRow();
    const col = e.range.getColumn();
    const tz = e.source.getSpreadsheetTimeZone();
    const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy hh:mm:ss');

    if (col==1){
    as.getRange(row,11).setValue(date);
    }
    }
    1. au temps pour moi, il y a un truc qui déconne aussi.
      la date s'affiche bien mais dès qu'on sélectionne une cellule de la colonne A et non quand on la modifie pour noter quelque chose.
      c'est possible de changer ça ?
      1. Bonjour,

        j'ai eu la surprise ce matin de voir que le script fonctionne alors que ça me faisait un message d'erreur quand je le testais Jeudi mdr
        ça me va bien du coup ! :)

        Juste pour une petite finition, si je veux que le script s'applique uniquement à un onglet de mon fichier, je dois faire comment svp?
        1. Merci Jordane.

          Est ce que je dois spécifier quelque chose dans ton script ?

          Pour le moment j'ai un message d'erreur :
          TypeError: Cannot read property 'source' of undefined
          onSelectionChange @ Code.gs:2

          Je voudrais par exemple que quand la cellule A2 est modifiée, la date de modif soit notée en cellule K2...
          du coup j'ai juste modifié ça pour le moment :
          if (col==1){
          as.getRange(row,11).setValue(date);
          }
          }
          1. Modérateur
            Bonjour,

            Un truc du genre
            function onSelectionChange(e) {
              const as = e.source.getActiveSheet();
              const row = e.range.getRow();
              const col = e.range.getColumn();
               const tz = e.source.getSpreadsheetTimeZone();
              const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy     hh:mm:ss');
            
              if (col==1){ 
                    as.getRange(row,1).setValue(date);
              }
            }