Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unCet extrait ci-dessous est une partie de mon script. À ce stade, j'ai un tableau de données et certaines cellules de différentes lignes ont un caractère spécial supplémentaire en 7ème position... ouais, un ensemble de données bizarre. Certains ne le font pas. Il existe plusieurs lignes et plusieurs colonnes, dont le nombre peut varier.
J'utilise donc une boucle FOR pour vérifier la valeur de chaque cellule pour chaque ligne et colonne, puis coupez ou supprimez le 8ème caractère s'il l'a. En fait, le script peut simplement faire un left(dt,7) et j'en serais content. Là où j'en suis, c'est bloqué car lorsque j'utilise la fonction GETVALUES, elle place les valeurs de cellule de cette colonne dans une matrice et je n'arrive pas à comprendre comment effectuer le découpage à gauche. Si je boucle chaque ligne individuellement en supprimant les GETVALUES, je peux alors couper la valeur correctement mais je n'arrive pas à comprendre comment forcer la nouvelle valeur dans la cellule. J'ai inclus les deux manières dans le script ci-dessous.
//Loop to delete the closing crazy characters from each row, it is always the 7th character that needs to be removed.
For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname << GetValues; //This gets a matrix
NewRowVal = Left(RowVal,6); //This doesn't work with the matrix
dtWAPFile:colname << setvalues(NewRowVal);//This doesn't work...
); For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname[k]; //This gets the value for a row/column based on the loop
NewRowVal = Left(RowVal,6); //This trims the value
RowVal = setvalues(NewRowVal);//This doesn't work...can't seem to stuff it back in..
);
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unTravaillé. Merci les gars! J'adore ce forum, d'ailleurs, vous êtes géniaux et vous me faites bien paraître au travail
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unModifier un peu le code de Jim :
NamesDefaultToHere(1);
// Test Table
dt = New Table( "Test",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"123456", "1234567", "12345678", "1234"} )
),
New Column( "Column 2",
Character,
"Nominal",
Set Values( {"123456789", "123", "123456", "1234567"} )
)
);
// Truncate each cell to the leftmost six characters
Wait(3);
cols = dt << getColumnNames("String");
for(c=1, c<=NItems(cols), c++,
for(r=1, r<=NRow(dt), r++,
Column(dt, cols[c])[r] = Left(Column(dt, cols[c])[r], 6);
);
);Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unJe n'ai jamais compris, mais j'ai trouvé une solution. Pour une raison quelconque, je pourrais parcourir le code et cela fonctionnerait, mais lorsque j'exécuterais l'intégralité de l'extrait, ce ne serait pas... bizarre.
En fin de compte, j'ai dû supprimer la première boucle FOR et ne pas intégrer la deuxième boucle FOR dans la première boucle FOR.J'espère avoir commis une simple erreur, mais je n'ai tout simplement pas pu y arriver et j'ai manqué de temps.
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unOK... donc je n'ai pas très bien testé le code... ou en fait je ne l'ai vraiment pas testé. 
Content que tu aies compris
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unSi je parcoure le code et contourne la boucle, cela fonctionne.
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unJ'obtiens une erreur (ci-dessous) mais j'aime entendre que je rends les choses trop difficiles. J'espère que nous sommes proches.
In the following script, error marked by /*###*/
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[/*###*/k], 6 )
);
)
Re : Boucle JSL FOR pour vérifier les valeurs dans les cellules et supprimer le 7ème caractère s'il y en a unJe pense que vous rendez les choses trop difficiles. Cette ode devrait fonctionner
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[k], 6 )
);
);