Rechercher : dans
Par :

VBA effacer des lignes sous conditions

Dernière réponse le 4 mai 2008 à 18:23:37 Glec, le 3 mai 2008 à 19:17:58 
 Signaler ce message aux modérateurs

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?

Configuration: Mac OS X
Safari 525.13

Meilleures réponses pour « VBA effacer des lignes sous conditions » dans :
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
[Excel] Colorer des cellules sur conditions VoirIl existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées. Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un...
[VBA] Supprimer un mot dans une plage de cellule VoirSi on veut supprimer un mot dans une phrase il suffit de faire une petite macro qui supprime le mot recherché. Là où ça se corse c'est que le mot recherché pourrait être, par exemple "LEMOT" ou "LeMot" ou "lemot" ou encore "LeMot" etc.. Cette...

1

lermite222, le 3 mai 2008 à 19:44:24

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+

Répondre à lermite222

2

Glec, le 3 mai 2008 à 20:08:11

Merci pour la rapidité lermite222!

Je dois dire que c'est bluffant! J'y suis depuis des heures et là... enfin, Merci encore!

Répondre à Glec

3

Napalawow, le 3 mai 2008 à 23:03:57

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
@+

Répondre à Napalawow

4

lermite222, le 3 mai 2008 à 23:33:22

Supprimer toute la ligne sélectionnée

Répondre à lermite222

5

glec, le 4 mai 2008 à 16:21:37

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?

Répondre à glec

6

lermite222, le 4 mai 2008 à 16:53:12

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+

Répondre à lermite222

7

glec, le 4 mai 2008 à 17:03:34

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.

Répondre à glec

8

lermite222, le 4 mai 2008 à 17:17:12

Faudrait voir ce que tu a après cette ligne...

Répondre à lermite222

9

glec, le 4 mai 2008 à 17:24:55

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

Répondre à glec

10

 lermite222, le 4 mai 2008 à 18:23:37

Tant mieux,
mais je n'ai pas passé mon temps sur la solution trouvée mais à trouver une solution.
C'st pour rire
A.

Répondre à lermite222