VBA effacer des lignes sous conditions

Résolu
Glec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Supprimer toute la ligne sélectionnée
0
glec
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191 > glec
 
Faudrait voir ce que tu a après cette ligne...
0
glec > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191 > glec
 
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