suppression de lignes avec bcp de critères différents
6 réponses
francois45
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans
l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de
codes que je nommerais "catstat" or, ce n'est pas très souple pour supprimer
les lignes....il faut connaitre un minimum la programmation sous VBA...
est-il possible de mettre ces codes dans une feuil2 qui constituerait une
base de code "catstat" à supprimer accessible à tout le monde(ne connaissant
pas le VBA) pour les mettre à jour facilement et que la macro aille chercher
les codes (d'une plage par exemple) et supprime les lignes dans autre
feuil1 par exemple (feuille ou j'importerai les données brutes avant épurage
???
attention ces "catstat" se retouvent à plusieurs reprises dans les données
brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat()
Range("B2").Select ' début de la liste
Do While ActiveCell <> ""
'----------------
If ActiveCell = "01A" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
'2ème donnée à supprimer etc...etc...un peu fastidieux...
Range("B2").Select
Do While ActiveCell <> ""
If ActiveCell = "01B" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
end sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques ALARDET
Bonjour,
Si tu mets la liste des codes dans un onglet feuill2, tu va ensuite charger ces codes en mémoire
Moi je fais comme cela
Dim Tableau(100) as string 'Tableau des codes en mémoire Dim T_nb as integer 'nombre de code
Sheets("feuil2").select For I = 1 to 100 tableau(I) = Cells(1,I) T_nb=T_nb+1 next
Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
For L = nombre de ligne to 1 step -1 (on part par la fin) For I = 1 to T_nb if cells(L, ?) = Tableau(I) then 'Détruire la ligne endif next next
J a c q u e s
"francois45" a écrit dans le message de news:%
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de codes que je nommerais "catstat" or, ce n'est pas très souple pour supprimer les lignes....il faut connaitre un minimum la programmation sous VBA... est-il possible de mettre ces codes dans une feuil2 qui constituerait une base de code "catstat" à supprimer accessible à tout le monde(ne connaissant pas le VBA) pour les mettre à jour facilement et que la macro aille chercher les codes (d'une plage par exemple) et supprime les lignes dans autre feuil1 par exemple (feuille ou j'importerai les données brutes avant épurage ??? attention ces "catstat" se retouvent à plusieurs reprises dans les données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat() Range("B2").Select ' début de la liste Do While ActiveCell <> "" '---------------- If ActiveCell = "01A" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop '2ème donnée à supprimer etc...etc...un peu fastidieux... Range("B2").Select Do While ActiveCell <> "" If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop end sub
Bonjour,
Si tu mets la liste des codes dans un onglet feuill2, tu va ensuite charger
ces codes en mémoire
Moi je fais comme cela
Dim Tableau(100) as string 'Tableau des codes en mémoire
Dim T_nb as integer 'nombre de code
Sheets("feuil2").select
For I = 1 to 100
tableau(I) = Cells(1,I)
T_nb=T_nb+1
next
Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
For L = nombre de ligne to 1 step -1 (on part par la fin)
For I = 1 to T_nb
if cells(L, ?) = Tableau(I) then
'Détruire la ligne
endif
next
next
J a c q u e s
"francois45" <pichalou@free.fr> a écrit dans le message de
news:%23NvWvsJrIHA.3456@TK2MSFTNGP05.phx.gbl...
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans
l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de
codes que je nommerais "catstat" or, ce n'est pas très souple pour
supprimer les lignes....il faut connaitre un minimum la programmation sous
VBA...
est-il possible de mettre ces codes dans une feuil2 qui constituerait une
base de code "catstat" à supprimer accessible à tout le monde(ne
connaissant pas le VBA) pour les mettre à jour facilement et que la macro
aille chercher les codes (d'une plage par exemple) et supprime les lignes
dans autre feuil1 par exemple (feuille ou j'importerai les données brutes
avant épurage ???
attention ces "catstat" se retouvent à plusieurs reprises dans les
données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat()
Range("B2").Select ' début de la liste
Do While ActiveCell <> ""
'----------------
If ActiveCell = "01A" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
'2ème donnée à supprimer etc...etc...un peu fastidieux...
Range("B2").Select
Do While ActiveCell <> ""
If ActiveCell = "01B" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
end sub
Si tu mets la liste des codes dans un onglet feuill2, tu va ensuite charger ces codes en mémoire
Moi je fais comme cela
Dim Tableau(100) as string 'Tableau des codes en mémoire Dim T_nb as integer 'nombre de code
Sheets("feuil2").select For I = 1 to 100 tableau(I) = Cells(1,I) T_nb=T_nb+1 next
Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
For L = nombre de ligne to 1 step -1 (on part par la fin) For I = 1 to T_nb if cells(L, ?) = Tableau(I) then 'Détruire la ligne endif next next
J a c q u e s
"francois45" a écrit dans le message de news:%
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de codes que je nommerais "catstat" or, ce n'est pas très souple pour supprimer les lignes....il faut connaitre un minimum la programmation sous VBA... est-il possible de mettre ces codes dans une feuil2 qui constituerait une base de code "catstat" à supprimer accessible à tout le monde(ne connaissant pas le VBA) pour les mettre à jour facilement et que la macro aille chercher les codes (d'une plage par exemple) et supprime les lignes dans autre feuil1 par exemple (feuille ou j'importerai les données brutes avant épurage ??? attention ces "catstat" se retouvent à plusieurs reprises dans les données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat() Range("B2").Select ' début de la liste Do While ActiveCell <> "" '---------------- If ActiveCell = "01A" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop '2ème donnée à supprimer etc...etc...un peu fastidieux... Range("B2").Select Do While ActiveCell <> "" If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop end sub
Michel Angelosanto
une solution sans macro les codes étant en feuil2 colonne A tu ajoute une colonne avec la formule en D2 (par exemple) =sommeprod((feuil2!A:A²)*1) tu recopies cette formule sur la colonne tu mets un filtre personnalisé sur valeur>0 tu supprime les lignes tu enlève le filtre tu efface la colonne temporaire D
ensuite, si c'est répétitif, tu peux enregistrer cette manip dans une macro
"francois45" a écrit dans le message de news:%
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de codes que je nommerais "catstat" or, ce n'est pas très souple pour supprimer les lignes....il faut connaitre un minimum la programmation sous VBA... est-il possible de mettre ces codes dans une feuil2 qui constituerait une base de code "catstat" à supprimer accessible à tout le monde(ne connaissant pas le VBA) pour les mettre à jour facilement et que la macro aille chercher les codes (d'une plage par exemple) et supprime les lignes dans autre feuil1 par exemple (feuille ou j'importerai les données brutes avant épurage ??? attention ces "catstat" se retouvent à plusieurs reprises dans les données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat() Range("B2").Select ' début de la liste Do While ActiveCell <> "" '---------------- If ActiveCell = "01A" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop '2ème donnée à supprimer etc...etc...un peu fastidieux... Range("B2").Select Do While ActiveCell <> "" If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop end sub
-- Michel Angelosanto, Bordeaux http://angelosa.free.fr/
une solution sans macro les codes étant en feuil2 colonne A
tu ajoute une colonne avec la formule en D2 (par exemple)
=sommeprod((feuil2!A:A²)*1)
tu recopies cette formule sur la colonne
tu mets un filtre personnalisé sur valeur>0
tu supprime les lignes
tu enlève le filtre
tu efface la colonne temporaire D
ensuite, si c'est répétitif, tu peux enregistrer cette manip dans une macro
"francois45" <pichalou@free.fr> a écrit dans le message de
news:%23NvWvsJrIHA.3456@TK2MSFTNGP05.phx.gbl...
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans
l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de
codes que je nommerais "catstat" or, ce n'est pas très souple pour
supprimer les lignes....il faut connaitre un minimum la programmation sous
VBA...
est-il possible de mettre ces codes dans une feuil2 qui constituerait une
base de code "catstat" à supprimer accessible à tout le monde(ne
connaissant pas le VBA) pour les mettre à jour facilement et que la macro
aille chercher les codes (d'une plage par exemple) et supprime les lignes
dans autre feuil1 par exemple (feuille ou j'importerai les données brutes
avant épurage ???
attention ces "catstat" se retouvent à plusieurs reprises dans les
données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat()
Range("B2").Select ' début de la liste
Do While ActiveCell <> ""
'----------------
If ActiveCell = "01A" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
'2ème donnée à supprimer etc...etc...un peu fastidieux...
Range("B2").Select
Do While ActiveCell <> ""
If ActiveCell = "01B" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
Else
ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
End If
Loop
end sub
--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/
une solution sans macro les codes étant en feuil2 colonne A tu ajoute une colonne avec la formule en D2 (par exemple) =sommeprod((feuil2!A:A²)*1) tu recopies cette formule sur la colonne tu mets un filtre personnalisé sur valeur>0 tu supprime les lignes tu enlève le filtre tu efface la colonne temporaire D
ensuite, si c'est répétitif, tu peux enregistrer cette manip dans une macro
"francois45" a écrit dans le message de news:%
bonjour,
je dois supprimer des lignes qui contiennent certaines "catstat" dans l'exemple O1A et O1B...., le problème est qu'il y a une bonne centaine de codes que je nommerais "catstat" or, ce n'est pas très souple pour supprimer les lignes....il faut connaitre un minimum la programmation sous VBA... est-il possible de mettre ces codes dans une feuil2 qui constituerait une base de code "catstat" à supprimer accessible à tout le monde(ne connaissant pas le VBA) pour les mettre à jour facilement et que la macro aille chercher les codes (d'une plage par exemple) et supprime les lignes dans autre feuil1 par exemple (feuille ou j'importerai les données brutes avant épurage ??? attention ces "catstat" se retouvent à plusieurs reprises dans les données brutes mais toujours dans la même colonne...
si vous avez une idée ???? je suis preneur...
pour l'instant j'utilise ceci:
Sub sup_ligne_catstat() Range("B2").Select ' début de la liste Do While ActiveCell <> "" '---------------- If ActiveCell = "01A" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop '2ème donnée à supprimer etc...etc...un peu fastidieux... Range("B2").Select Do While ActiveCell <> "" If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) Else ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante End If Loop end sub
-- Michel Angelosanto, Bordeaux http://angelosa.free.fr/
francois45
bonjour Jacques et merci pour tes réponses,
je préfererais plutot traiter par macro, ce sera plus simple pour les utilisateurs... j'ai essayé d'adapter ta macro en faisant une compile avec la mienne mais ça colle pas vraiment...mon niveau en excel relève plus de la bidouille que de la réelle compréhension de ce que j'écris...faut bien débuter!!!
Sub supligndejacques()
Dim Tableau(100) As String 'Tableau des codes en mémoire Dim T_nb As Integer 'nombre de code
Sheets("feuil1").Select 'les codes de ligne a sup sont sur la feuille 1 For I = 1 To 100 Tableau(I) = Cells(1, I) T_nb = T_nb + 1 Next
'Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
'For L = nombre de ligne to 1 step -1 (on part par la fin) 300 lignes For I = 1 To T_nb If Cells(L, 300) = Tableau(I) Then '____________________ 'Do While ActiveCell <> "" 'If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) 'Else 'ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante 'End If ' Loop '----------------------- 'Détruire la ligne End If Next
End Sub
bonjour Jacques et merci pour tes réponses,
je préfererais plutot traiter par macro, ce sera plus simple pour les
utilisateurs...
j'ai essayé d'adapter ta macro en faisant une compile avec la mienne mais ça
colle pas vraiment...mon niveau en excel relève plus de la bidouille que de
la réelle compréhension de ce que j'écris...faut bien débuter!!!
Sub supligndejacques()
Dim Tableau(100) As String 'Tableau des codes en mémoire
Dim T_nb As Integer 'nombre de code
Sheets("feuil1").Select 'les codes de ligne a sup sont sur la feuille 1
For I = 1 To 100
Tableau(I) = Cells(1, I)
T_nb = T_nb + 1
Next
'Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
'For L = nombre de ligne to 1 step -1 (on part par la fin) 300 lignes
For I = 1 To T_nb
If Cells(L, 300) = Tableau(I) Then
'____________________
'Do While ActiveCell <> ""
'If ActiveCell = "01B" Then
Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la
ligne
Selection.EntireRow.Delete ' supprime (obtenu par enreg auto)
'Else
'ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante
'End If
' Loop
'-----------------------
'Détruire la ligne
End If
Next
je préfererais plutot traiter par macro, ce sera plus simple pour les utilisateurs... j'ai essayé d'adapter ta macro en faisant une compile avec la mienne mais ça colle pas vraiment...mon niveau en excel relève plus de la bidouille que de la réelle compréhension de ce que j'écris...faut bien débuter!!!
Sub supligndejacques()
Dim Tableau(100) As String 'Tableau des codes en mémoire Dim T_nb As Integer 'nombre de code
Sheets("feuil1").Select 'les codes de ligne a sup sont sur la feuille 1 For I = 1 To 100 Tableau(I) = Cells(1, I) T_nb = T_nb + 1 Next
'Ensuite dans tu traites chaque ligne, il faut explorer les codes en mémoire
'For L = nombre de ligne to 1 step -1 (on part par la fin) 300 lignes For I = 1 To T_nb If Cells(L, 300) = Tableau(I) Then '____________________ 'Do While ActiveCell <> "" 'If ActiveCell = "01B" Then Range(Selection, Selection.End(xlToRight)).Select ' sélectionne la ligne Selection.EntireRow.Delete ' supprime (obtenu par enreg auto) 'Else 'ActiveCell.Offset(1, 0).Select ' on traite la ligne suivante 'End If ' Loop '----------------------- 'Détruire la ligne End If Next
End Sub
francois45
re- bonjour
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
merci d'avance.
http://cjoint.com/?fdjYVvZFN3
re- bonjour
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper
simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
merci d'avance.
http://cjoint.com/?fdjYVvZFN3
Youky
Bonjour Francois ceci efface toutes les lignes comme tu le souhaite j'ai mis le codename des feuilles plutot que le name Ta feuille "données" est ....Feuil2 voir en fenetre projet catstaSUP est Feuil1 C'est préférable au cas ou qlq'un renomme l'onglet. Donc à verifier feuil1 ou Feuil2 ou autres Youky
Sub SupprimerLinge() For k = Feuil2.[A65536].End(3).Row To 4 Step -1 For lg = 1 To Feuil1.[A65536].End(3).Row If Feuil2.Cells(k, 2) = Feuil1.Cells(lg, 1) Then Feuil2.Rows(k).Delete End If Next Next End Sub
"francois45" a écrit dans le message de news:
re- bonjour
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
merci d'avance.
http://cjoint.com/?fdjYVvZFN3
Bonjour Francois ceci efface toutes les lignes comme tu le souhaite
j'ai mis le codename des feuilles plutot que le name
Ta feuille "données" est ....Feuil2 voir en fenetre projet
catstaSUP est Feuil1
C'est préférable au cas ou qlq'un renomme l'onglet.
Donc à verifier feuil1 ou Feuil2 ou autres
Youky
Sub SupprimerLinge()
For k = Feuil2.[A65536].End(3).Row To 4 Step -1
For lg = 1 To Feuil1.[A65536].End(3).Row
If Feuil2.Cells(k, 2) = Feuil1.Cells(lg, 1) Then
Feuil2.Rows(k).Delete
End If
Next
Next
End Sub
"francois45" <pichalou@free.fr> a écrit dans le message de news:
u5PIBLPrIHA.5068@TK2MSFTNGP02.phx.gbl...
re- bonjour
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper
simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
Bonjour Francois ceci efface toutes les lignes comme tu le souhaite j'ai mis le codename des feuilles plutot que le name Ta feuille "données" est ....Feuil2 voir en fenetre projet catstaSUP est Feuil1 C'est préférable au cas ou qlq'un renomme l'onglet. Donc à verifier feuil1 ou Feuil2 ou autres Youky
Sub SupprimerLinge() For k = Feuil2.[A65536].End(3).Row To 4 Step -1 For lg = 1 To Feuil1.[A65536].End(3).Row If Feuil2.Cells(k, 2) = Feuil1.Cells(lg, 1) Then Feuil2.Rows(k).Delete End If Next Next End Sub
"francois45" a écrit dans le message de news:
re- bonjour
j'ai essayé mais ça bug, je ne sais pas réparer (le tableau est hyper simplifié) si vous pouvez y jeter un oeuil expert !!!ce serait cool.
merci d'avance.
http://cjoint.com/?fdjYVvZFN3
francois45
Rebonjour Youky,
c'est exactement ce que je voulais c'est vraiment génial, dire que j'avais fait la macro de départ en y passant des heures et je te raconte pas le nombre de ligne.(903 lignes!!!)..et là en 9 lignes tu en résumes des centaines....ça me laisse songeur...y arriverais-je un jour ??!!
en tout cas merci beaucoup de ton aide, ça va me simplifier la tache et cette macro pourra me resservir pour d'autres fichiers ou je me servais de la sup de ligne.
encore merci et à bientôt François.
Rebonjour Youky,
c'est exactement ce que je voulais c'est vraiment génial, dire que j'avais
fait la macro de départ en y passant des heures et je te raconte pas le
nombre de ligne.(903 lignes!!!)..et là en 9 lignes tu en résumes des
centaines....ça me laisse songeur...y arriverais-je un jour ??!!
en tout cas merci beaucoup de ton aide, ça va me simplifier la tache et
cette macro pourra me resservir pour d'autres fichiers ou je me servais de
la sup de ligne.
c'est exactement ce que je voulais c'est vraiment génial, dire que j'avais fait la macro de départ en y passant des heures et je te raconte pas le nombre de ligne.(903 lignes!!!)..et là en 9 lignes tu en résumes des centaines....ça me laisse songeur...y arriverais-je un jour ??!!
en tout cas merci beaucoup de ton aide, ça va me simplifier la tache et cette macro pourra me resservir pour d'autres fichiers ou je me servais de la sup de ligne.