VBA effacer des lignes sous conditions

Résolu/Fermé
Glec Messages postés 15 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 4 septembre 2008 - 3 mai 2008 à 19:17
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 4 mai 2008 à 18:23
Bonjour,

Voilà, j'ai un problème que je n'arrive pas à régler. Je souhaite créer sur Excel une macro me permettant de supprimer des lignes sous conditions. Je voudrais en fait supprimer l'intégralité des lignes situées entre la cellule de la colonne A contenant "feuille" et la cellule de la colonne A contenant "ciseau". Le problème c'est que j'importe des fichiers différents, et ces cellules sont donc placées à des lignes différentes pour chaque fichiers.
Je voudrais donc faire une macro de ce genre

For i = 1 To 300

Si Range("A1") = "ciseau" Then
Entire.Row.Delete Shift:=xlUp
Jusqu'à ce que j'arrive à "feuille"

Quelqu'un pourrait il m'aider?

3 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 mai 2008 à 19:44
Bonjour,

Sub SupprimeDeA()
Dim i As Long
Dim e As Long
Dim A As String
    Sheets("feuil2").Select
    For i = 1 To Range("A65536").End(xlUp).Row
        If UCase(Cells(i, 1).Value) = "CISEAU" Then Exit For
    Next i
    For e = i + 1 To Range("A65536").End(xlUp).Row
        If UCase(Cells(e, 1).Value) = "FEUILLE" Then Exit For
    Next e
    A = CStr(i + 1) & ":" & CStr(e - 1)
    Rows(A).Select
    Selection.Delete Shift:=xlUp
    Range("A" & i).Select
End Sub

Bon amusement.
A+
1
Glec Messages postés 15 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 4 septembre 2008
3 mai 2008 à 20:08
Merci pour la rapidité lermite222!

Je dois dire que c'est bluffant! J'y suis depuis des heures et là... enfin, Merci encore!
0
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
3 mai 2008 à 23:03
Juste par simple curiosité (car je suis débutant en VB) et que je m'y intéresse fortement
ce bout de code :
Entire.Row.Delete Shift:=xlUp


Que veut-il signifier
Merci
@+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 mai 2008 à 23:33
Supprimer toute la ligne sélectionnée
0
Je ne veux pas abuser, mais j'ai une autre question,

Si je souhaite faire la même chose que précédemment mais au lieu de "feuille", je souhaite dire je veux effacer les lignes entre "ciseau" et la prochaine cellule écrite en gras?
J'ai bien essayé de faire

If UCase(Cells(e, 1).Font.Bold) = True Then ...

Mais ca ne fonctionnne pas...

Quelqu'un pourrait il m'aider?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 mai 2008 à 16:53
Ucase est une fonction qui transforme les texte en majuscule, cela permet d'éviter les erreur dans la comparaison.
Donc ta ligne ne doit pas la reprendre
If Cells(e, 1).Font.Bold = True Then
A+
0
glec > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
4 mai 2008 à 17:03
Oh merci pour l'info!

Le code n'a cependant pas l'air de marcher chez moi, le mot "ciseau", qui est en gras, s'efface lorsque j'execute la commande.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > glec
4 mai 2008 à 17:17
Faudrait voir ce que tu a après cette ligne...
0
glec > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
4 mai 2008 à 17:24
Autant pour moi lermite 222, cela ne marche pas lorsque la cellule suivante est vide (j'avais testé ton code dans ce cas), mais comme je me suis arrangé pour qu'il y ait toujours un ecrit dans les cellules suivantes et que le code à l'air de fonctionner correctement dans ce cas, je t'envoie un grand merci pour le temps passé et la solution trouvée,

MERCI
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > glec
4 mai 2008 à 18:23
Tant mieux,
mais je n'ai pas passé mon temps sur la solution trouvée mais à trouver une solution.
C'st pour rire
A.
0