Bonjour à tous,


J'a un fichier excel, contenant plusieurs lignes que je lis et peux ensuite placer dans un array, ou un string, peu importe, ce qui est le plus simple.

J'ai trois valeurs possibles, fixes :
777
888
999

Disons que j'appelle V si la valeur est une des ces 3 possibilités et X si c'est autre chose.

Je voudrais vérifier que la ligne est de type différent de XXXXVVVVVVVVVVVVVVVVVVVVVVVVV ou XXVVVVVVVVVVVVVVVVVVVVVVVVVVV en bref (X)i(V)j avec i+j inconstant car les dernières valeurs des lignes peuvent être manquantes. Je veux ne garder que les lignes de type : XXXXVVVVXVVVVVXVVVVVXVVVVV ... où les V sont espacés par au moins un X (et aucun V ça convient également).

La ligne commence toujours par quelques X, lesquels suivis soit que de X, que de V, ou d'un mélange des 2. Une ligne ne contenant que des X est à garder.

X peut-être n'importe quoi, alphanumérique, des caractères de ponctuation, des espaces. C'est parfois même quelques phrases.

Si X est en fin de ligne, il peut être vide (ligne plus courte de 1 ou plusieurs valeurs).

Exemple de données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
ID	Schedule	Diagnosis	Subject age (days)	BAIYOUTHSELF[1]	BAIYOUTHSELF[2]	BAIYOUTHSELF[3]	BAIYOUTHSELF[4]	BAIYOUTHSELF[5]	BAIYOUTHSELF[6]	BAIYOUTHSELF[7]	BAIYOUTHSELF[8]	BAIYOUTHSELF[9]	BAIYOUTHSELF[10]	BAIYOUTHSELF[11]	BAIYOUTHSELF[12]	BAIYOUTHSELF[13]	BAIYOUTHSELF[14]	BAIYOUTHSELF[15]	BAIYOUTHSELF[16]	BAIYOUTHSELF[17]	BAIYOUTHSELF[18]	BAIYOUTHSELF[19]	BAIYOUTHSELF[20]	Total Score	Anxiety Score	TT
3.25322E+11	A	TX	9886	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	999		
8.48677E+11	A	UVSX	8497	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	999		
5.88049E+11	B	UVSX	4414	0	1	0	0	1	2	0	0	0	1	1	0	0	0	1	0	0	0	1	0	8	40	32
3.96869E+11	B	TX	5753	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	1	0	0	0	0	2	40	62
1.45898E+11	A	UVSX	8783	777	0	777	777	1	777	777	777	0	777	777	777	777	777	777	777	777	777	777	777	999	21	7
7.08755E+11	B	UVSX	4525	0	1	0	1	0	0	1	0	0	1	1	0	0	0	0	3	0	1	0	0	9	41	48
7.84342E+11	B	TX	6049	0	0	0	0	0	1	1	0	1	0	0	0	0	0	0	0	0	0	0	0	3	41	4
3.96186E+11	A	UVSX	10064	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	999		
4.94384E+11	A	UVSX	10065	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	999
J'ai laissé les en-têtes que ce soit plus simple à comprendre. Il y a 2 dernières colonnes, optionnelles, qui ont été ajoutées et contiennent 'Total Score Anxiety Score' et 'TT'. Dans cet exemple, je voudrais supprimer les 2 premières et les 2 dernières lignes. J'ai beaucoup de fichiers à traiter, la majorité n'a pas ces colonnes optionnelles. Dans cet exemple, les lignes à supprimer n'ont pas de dernières valeurs, mais je ne sais pas si c'est toujours le cas.

Autre exemple de fichier : il ne faut supprimer que la 9ième ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
3.25322E+11	TUIT	A	ASD	8739	1	2	2	1	1	2	2	2	1	2	2	2	1	1	1	1	2	2	777	4	4	777	777	4	6	4	777	4	4	4	777	777	777	777	7	7	1	777	Y	777	777
8.48677E+11	TUIT	A	ASD	8857	0	1	2	2	0	0	0	2	1	1	1	1	0	0	0	1	2	2	777	777	14	17	777	777	777	16	777	777	777	777	777	777	777	777	10	12	1	Y	Y	Y	Y
5.88049E+11	TUIT	A	ASD	10779	2	2	2	1	1	2	2	2	1	2	2	2	2	2	2	2	2	2	5	5	28	777	777	28	15	20	777	5	5	5	5	5	15	15	20	15	1	Y	Y	Y	Y
3.96869E+11	TUIT	A	ASD	9134	1	1	1	0	1	2	0	1	1	1	1	0	0	2	0	0	1	1	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	-2	777	777	777	777
1.45898E+11	TUIT	A	TD	9797	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	0	777	777	777	777
7.08755E+11	LCG	A	TD	8860	1	1	1	1	1	0	0	1	1	1	0	0	1	1	1	1	0	0	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	0	777	777	Y	777
7.84342E+11	LCG	A	TD	7732	1	1	1	0	0	1	1	1	1	1	0	0	1	0	0	1	0	0	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	-2	Y	Y	777	Y
3.96186E+11	LCG	A	TD	7785	1	0	0	0	1	0	0	0	1	1	0	0	0	0	1	1	0	0	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	0	777	777	777	777
4.94384E+11	LCG	A	TD	7525	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777
9.27091E+11	LCG	A	ASD	10064	0	1	2	0	0	0	0	1	1	1	0	0	0	0	0	1	0	0	777	777	20	777	777	777	777	777	777	777	777	777	777	777	777	777	777	777	-2	777	777	Y	777
1.38536E+11	LCG	A	ASD	10065	1	2	0	2	2	1	1	2	2	3	1	2	1	2	1	1	0	0	777	14	777	14	19	777	777	14	19	3	777	3	777	3	777	777	777	777	1	777	777	Y	Y
Avez-vous des suggestions sur comment procéder ? Qu'est-ce qui serait le plus simple ? Est-ce possible par une seule expression régulière ou plus simple par une boucle testant les valeurs de la ligne une à une ?

Merci beaucoup pour votre aide,