Boucle for pour comparaison de 2 valeurs

Bonjour,

J'aimerais créer une boucle for qui compare 2 cellules de la ligne précédente avec la ligne suivante et qui affiche une boite de dialogue quand lorsque ces cellules sont les memes

Pour l'instant, j'ai fait ça:

function controle(){
var pal = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("traçabilité");
 for (var i=1; i<i+1; i++){
        if ((pal.getRange(i-1,9).getValue() == pal.getRange(i,9).getValue()) && (pal.getRange(i-1,10).getValue() == pal.getRange(i,10).getValue())){
       Browser.msgBox('NON OK', Browser.Buttons.OK);
}}}

Mais il doit y avoir une erreur car rien ne se passe quand je l'exécute. Si vous pouvez m'aider et me débloquer :) d'avance merci

Bonjour,

ceci est curieux en effet

for (var i=1; i<i+1; i++)

au lieu de i+1, mets éventuellement

for (var i=1; i<pal.getLastColumn(); i++)

à confirmer si tu avais un fichier simplifié dont tu pourrais nous donner le lien

Merci pour votre réponse mais ça ne change pas . Je vous joins le lien de mon fichier: https://docs.google.com/spreadsheets/d/1jpTSxY5QtRTmF2Ri9EQdRiHNtm2Uc0v6C_5jlbTvQ4c/edit?usp=sharing

image

Normalement vous devriez y avoir accès

je ne comprends pas ceci

((pal.getRange(i - 1, 9).getValue() == pal.getRange(i, 9).getValue()) && (pal.getRange(i - 1, 10).getValue() == pal.getRange(i, 10).getValue()))

il n'y a rien en colonne 10 !

peux-tu faire un schéma de quelles valeurs tu veux la comparaison ?

tra

J'aimerais comparer les valeurs encadrées et si elles sont les mêmes que la ligne de dessous , je voudrais qu'une boite dialogue s'affiche

Si tu veux juste comparer ces 2 lignes

voir plus bas

Oui mais j'aimerais le faire pour l'ensemble des lignes de ces 2 colonnes, pas que pour la ligne 9, c'est pour ça que j'avais essayer de mettre en place une boucle for

Il faut mieux expliquer dans ce cas,

  • est-ce que tu veux le faire 2 par 2
  • ou bien s'assurer que sur toute la colonne il n'y a jamais eu le même couple de valeurs ?

Ton schéma était clair mais il ne présentait que 2 lignes, et je me doutais qu'il allait y avoir une suite ...

  • Mets un jeu de données plus complet ...
  • Explique aussi rapidement to objectif, cela permettrait d'autres solutions plus efficaces, est-ce que par exemple c'est lors d'un scan que tu veux contrôler que le n° de lot n'a pas déjà été rentré ?

si je lis ceci

J'aimerais créer une boucle for qui compare 2 cellules de la ligne précédente avec la ligne suivante et qui affiche une boite de dialogue quand lorsque ces cellules sont les memes

il suffirait alors de mettre la boucle comme ceci avec un pas de 2

voir plus bas

mais là encore je ne suis pas certain qu'il n'y a pas encore une demande non exprimée

J'ai essayé mais la fonction ne se déclenche pas j'ai l'impression car aucun message ne s'affiche quand les lignes sont identiques

image

Je suis désolée, je n'avais pas vu ceci:

Il faut mieux expliquer dans ce cas,

est-ce que tu veux le faire 2 par 2

ou bien s'assurer que sur toute la colonne il n'y a jamais eu le même couple de valeurs ?

Ton schéma était clair mais il ne présentait que 2 lignes, et je me doutais qu'il allait y avoir une suite ...

Mets un jeu de données plus complet ...

Explique aussi rapidement to objectif, cela permettrait d'autres solutions plus efficaces, est-ce que par exemple c'est lors d'un scan que tu veux contrôler que le n° de lot n'a pas déjà été rentré ?

et pour répondre à votre question, j'aimerais qu'il n'y ait pas 2 fois de suite le même couple de valeur et si c'est le cas qu'une boite dialogue s'affiche et je ne comprends pas pourquoi de votre coté cela fonctionne et pas pour moi

Merci pour votre aide en tout cas

essaie ceci

voir plus bas

J'ai testé mais le message s'affiche même quand ce ne sont pas les mêmes chiffres et quand il n' y a pas le même nombre de chiffre. Enfait, la boite de dialogue d'affiche dans tous les cas dès qu'on éxecute la fonction. De plus, même en appuyant sur "ok" , la boite de dialogue réapparait. Et je me demandais si on pouvait déclencher la fonction quand les cellules de la colonne 8 et 9 sont remplies ?

function comparaison() {
  var pal = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("traçabilité");
  for (var i = 9; i <= pal.getLastRow(); i++) {
    if ((pal.getRange(i, 9).getValue() != '') && (pal.getRange(i, 8).getValue() != '') && (pal.getRange(i - 1, 9).getValue() == pal.getRange(i, 9).getValue()) && (pal.getRange(i - 1, 8).getValue() == pal.getRange(i, 8).getValue())) {
      Browser.msgBox('PALETTE DEJA SCANNÉE', Browser.Buttons.OK);
    }
  }
}

Bonjour, j'ai essayé de d'intégrer la fonction à la fonction déjà existante mais rien ne se passe et je ne vois pas mon erreur

function onEdit(event) {
  var feuille = "traçabilité";
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if ((r.getColumn() == 9) && (f.getName() == feuille) && (r.getRow() > 6)) {
    if ((r.offset(0 , 0).getValue() != '') && (r.offset(0 , -1).getValue() != '') &&  (r.offset(-1, 0).getValue() == r.offset(0, 0).getValue()) && (r.offset(-1, -1).getValue() == r.offset(0, -1).getValue())) {
      Browser.msgBox('PALETTE DEJA SCANNÉE', Browser.Buttons.OK);
    }
  }

bon, ben on a des réponses au coup par coup ... c'était en effet une de mes demandes ...

Je suis désolée, je n'avais pas vu ceci:

est-ce que par exemple c'est lors d'un scan que tu veux contrôler que le n° de lot n'a pas déjà été rentré ?

donc en effet le contrôle se fait lors d'un scan ?

mais tu fais le test uniquement quand la valeur est introduite en colonne G

r.getColumn() == 7

les colonnes H et I sont-elles alors renseignées ? puisque c'est sur ces colonnes que le test se fait !

j'imaginais plutôt faire le contrôle quand les valeurs de H et I étaient introduites.

J'ai mis

r.getColumn() == 9

car j'aimerais que le test se fasse une fois que le numéro de lot a été rentré mais le problème est que rien ne déclenche et donc j'avais testé avec r.getColumn() == 7 mais rien non plus

Rechercher des sujets similaires à "boucle comparaison valeurs"