Remplacer une routine VBA pour rechercher des valeurs dans une table

Bonjour,

Le fichier ci-joint montre l'enchainement des relais d'une course d'endurance par plusieurs pilotes.

Je souhaite reporter dans la colonne 6 du tableau en ligne 10, l'heure à laquelle le pilote dont le n° figure en colonne 2, l'heure de son prochain relais en fonction d'une recherche portant sur l'heure courante et son n°.

J'ai fait cela avec le code VBA suivant, mais je souhaiterais savoir comment faire sans VBA, en perdant le bénéfice de l'actualisation temps réel bien sûr:

Public IsRunning As Boolean
Sub StartStopTime()
    Dim ws As Worksheet
    Dim i As Long
    Dim p As Long

    Dim derniereColonne As Long

    Set ws = Worksheets("Feuil1")

    derniereColonne = ws.Cells(4, ws.Columns.Count).End(xlToLeft).Column

    If IsRunning Then
        IsRunning = False
    Else
        IsRunning = True

        On Error Resume Next

        Do While IsRunning
            DoEvents
            Feuil1.Range("A1").Value = TimeValue(Now)

            For p = 1 To 5
                For i = 6 To derniereColonne
                    If ws.Cells(4, i).Value = p And ws.Cells(6, i).Value >= ws.Cells(1, 1).Value Then
                        ws.Cells(9 + p, 6).Value = ws.Cells(6, i).Value
                        Exit For
                    End If
                Next i
            Next p
        Loop
   End If
End Sub

En vous remerciant.

Salut !

Habituellement les IA s'en sortent bien pour faire ce genre de conversion, voici un script GAS généré à tester :

var isRunning = false;
var triggerIds = [];

function startStopTime() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Feuil1");

  if (isRunning) {
    // Arrêter l'exécution
    isRunning = false;

    // Supprimer tous les triggers créés
    triggerIds.forEach(function(triggerId) {
      var triggers = ScriptApp.getProjectTriggers();
      triggers.forEach(function(trigger) {
        if (trigger.getUniqueId() === triggerId) {
          ScriptApp.deleteTrigger(trigger);
        }
      });
    });
    triggerIds = [];

  } else {
    // Démarrer l'exécution
    isRunning = true;

    // Créer un trigger temporel pour exécuter la fonction périodiquement
    var trigger = ScriptApp.newTrigger('updateTime')
      .timeBased()
      .everyMinutes(1) // Ajustez la fréquence selon vos besoins
      .create();

    triggerIds.push(trigger.getUniqueId());

    // Exécuter une première fois immédiatement
    updateTime();
  }
}

function updateTime() {
  if (!isRunning) return;

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Feuil1");

  var derniereColonne = ws.getLastColumn();

  // Mettre à jour A1 avec l'heure actuelle
  var now = new Date();
  ws.getRange("A1").setValue(now);

  var timeA1 = ws.getRange(1, 1).getValue();

  // Boucles imbriquées
  for (var p = 1; p <= 5; p++) {
    for (var i = 6; i <= derniereColonne; i++) {
      var cellValue4 = ws.getRange(4, i).getValue();
      var cellValue6 = ws.getRange(6, i).getValue();

      if (cellValue4 == p && cellValue6 >= timeA1) {
        ws.getRange(9 + p, 6).setValue(cellValue6);
        break; // Équivalent de Exit For
      }
    }
  }
}

Bonjour,

C'est ce qui j'ai fini par faire, pour voir effectivement ce que les IA arrivaient à faire et ça a été plutôt laborieux !

Magistral a été pitoyable script bourré d'erreurs s'excusant chaque fois du fait qu'effectivement office script ne supportait pas ces fonctionnalités...

ChatGPT 5 a été assez catastrophique en s'enfonçant dans la glue au fil des demandes de corrections d'un script incroyable de complexité, ne connaissant manifestement pas la syntaxe et les exigences de déclaration d'office script.

ChatGPT mini s'en est plutôt bien sorti en proposant un script simple et en répondant correctement aux demandes de corrections et d'ajouts

Merci à vous

parfois c'est en effet compliqué, le script que j'ai transmis fonctionne-t-il ? Sinon pouvez-vous partager un fichier exemple au format sheets et ce qui est attendu, pour tout refaire de 0.

Rechercher des sujets similaires à "remplacer routine vba rechercher valeurs table"