VBA effacer des lignes sous conditions
Résolu
Glec
Messages postés
15
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
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?
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
3 réponses
-
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+ -
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
@+ -
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?-
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+- 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
-