Je ne savais pas trop comment titrer, il n'est peut-être pas très adapté.
J'étais venu il y a quelques temps demander conseil pour m'orienter sur une méthodologie adaptée à ma problématique, dans ce sujet du forum. J'étais donc parti sur la première suggestion, de jguinch, à savoir chacune des lignes de mon fichier CSV est lue (FileReadLine, StringSplit), ignorée ou non, agrémentée d'informations complémentaires, puis écrite ou pas dans un nouveau fichier. L'ensemble est fonctionnel, pas de gros soucis.
En ce moment j'essaie de rajouter une fonctionnalité 'cosmétique', permettant d'affiner le tri déterminant si une ligne du CSV doit être ignorée ou non avant la réécriture dans le CSV de sortie, mais je coince un peu.
Je m'explique. Dans le fichier source CSV d'exemple, précédemment inséré (disponible ici), vous pouvez observer que les colonnes 24 à 48 comporte des OUI et des NON. Certaines de ces colonnes sont complétement ignorées, d'autres pas, et dans ce cas sont filtrées en fonction de la réponse. Mon script fonctionnel, sur la méthode proposée par lecture ligne à ligne, éclatement en tableau, vérification de conditions, et réécriture dans un fichier de sortie, roule bien. Exemple ci dessous anonymisé (on ne se moque pas :p ) :
J'aimerai rajouter une fonctionnalité de 'filtre' personnalisable. Via un ensemble de Checkbox, je permettrai à l'utilisateur de sélectionner les filtres sur lesquels il souhaite se concentrer. L'état de chacune des checkbox, défini en amont, est stocké en variables. L'utilisateur sélectionnerait par exemple le filtre (colonne) 24 et 26 ; ce qui indiquerait que seules les lignes comportant -indifféremment- un oui dans une de ces colonnes serait à conserver.
Je récupère bien mes variables conditionnelles, via une petite GUI comportant les Checkbox, mais je coince pour implémenter cette conditionnelle dans la boucle ligne par ligne de l'exemple de code inséré ci-dessus. Sur deux valeurs conditionnelles, je pourrai l'écrire ainsi
Code : Tout sélectionner
If $aSplit[24] = "Non" OR $aSplit[26] = "Non" Then ContinueLoopSi je définis le OUI/NON via une lecture de la variable de la check, pour obtenir une commande de cet ordre :
Code : Tout sélectionner
If $aSplit[25] = $valCol25 AND $aSplit[26] = $valCol26 AND $aSplit[27] = $valCol27 AND $aSplit[28] etc. Then ContinueLoopIdéalement, il faudrait que pour les colonnes sélectionnées par l'utilisateur (via le filtre checkbox), ma succession de AND soit modulable. Ainsi, par défaut ma commande générique est toujours la suivante :
Code : Tout sélectionner
If $aSplit[25] = "Non" AND $aSplit[26] = "Non" AND $aSplit[27] = "Non" _
AND $aSplit[28] = "Non" AND $aSplit[29] = "Non" AND $aSplit[30] = "Non" _
AND $aSplit[31] = "Non" AND $aSplit[32] = "Non" AND $aSplit[33] = "Non" _
AND $aSplit[34] = "Non" AND $aSplit[35] = "Non" Then ContinueLoopCode : Tout sélectionner
If $aSplit[27] = "Non" AND $aSplit[28] = "Non" AND $aSplit[29] = "Non" Then ContinueLoopCode : Tout sélectionner
If $aSplit[25] = $valCol25 AND $aSplit[26] = $valCol26 AND $aSplit[27] = $valCol27 _
AND $aSplit[28] = $valCol28 AND $aSplit[29] = $valCol29 AND $aSplit[30] = $valCol30 _
AND $aSplit[31] = $valCol31 AND $aSplit[32] = $valCol32 AND $aSplit[33] = $valCol33 _
AND $aSplit[34] = $valCol34 AND $aSplit[35] = $valCol35 Then ContinueLoopJ'imagine que je n'ai pas été démonstratif dans mon souci, je le sens
C'est surtout une méthodologie/logique que je viens solliciter, pas un script tout fait, ne vous ennuyez pas si vous avez une idée
Peut-être faudrait-il que je retourne la logique ; au lien d'ignorer la ligne qui a des valeurs qui ne m'intéressent pas dans certaines colonnes, me concentrer uniquement sur celles qui ont des valeurs qui m'intéressent. Mais c'est alors toute la structure du script qu'il me faudrait revoir, et je pense que cette fonction 'cosmétique' ne sera pas proposée.




