Macro supprimer lignes avec condition commence par

chris6999

XLDnaute Impliqué
Bonjour

Je souhaiterais trouver un code qui me permettrait de supprimer toutes les lignes pour lesquelles, la colonne B ne commence pas par G, C, M, G.

Plage requise :
Dernière ligne ou F n'est pas vide jusqu'à la ligne 1 car la colonne A est vide

J'ai trouvé un code mais celui-ci ne semble pas fonctionner

Si quelqu'un peut m'apporter sa lumière en cette matinée pluvieuse, ce sera avec plaisir.

Cordialement
NB Fichier en PJ

Dim i As Integer, DerniereLigne As Integer

DerniereLigne = Range("A65536").End(xlUp).Row

For i = DerniereLigne To 1 Step -1
'si la valeur la de la colonne 4 n'est pas x OU y alors supprimer la ligne
If Not (Cells(i, 2).Value Like "*C*" Or Cells(i, 2).Value Like "*U*" Or Cells(i, 2).Value Like "*M*" Or Cells(i, 2).Value Like "*G*") Then
Rows(i).Delete
End If
Next
 

laetitia90

XLDnaute Barbatruc
Re : Macro supprimer lignes avec condition commence par

bonjour chris6999, gilbert_RGI:)

comme je comprends ??

une facon d'ecrire... on pourrait passer par un array pour les conditions

Code:
Option Compare Text
Sub es()
  Dim i As Long
  Application.ScreenUpdating = 0
  For i = Cells.Find("*", , , , , xlPrevious).Row To 1 Step -1
  If Left(Cells(i, 2), 1) <> "c" And Left(Cells(i, 2), 1) <> "u" And Left(Cells(i, 2), 1) <> "m" And Left(Cells(i, 2), 1) <> "g" Then Rows(i).Delete
  Next i
End Sub
ps il faut mettre <> a la place = trop vite ecrit :(

j'ai corrige:)
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Macro supprimer lignes avec condition commence par

ou ça
VB:
Sub test()
    Dim i As Integer, DerniereLigne As Integer, Res As String
    DerniereLigne = Range("A65536").End(xlUp).Row
    For i = DerniereLigne To 1 Step -1
        Res = UCase(Left(Cells(i, 2).Value, 1))
        If Res = "C" Or Res = "U" Or Res = "M" Or Res = "G" Then
            Rows(i).Delete
        End If
    Next
End Sub
 

chris6999

XLDnaute Impliqué
Re : Macro supprimer lignes avec condition commence par

ou ça
VB:
Sub test()
    Dim i As Integer, DerniereLigne As Integer, Res As String
    DerniereLigne = Range("A65536").End(xlUp).Row
    For i = DerniereLigne To 1 Step -1
        Res = UCase(Left(Cells(i, 2).Value, 1))
        If Res = "C" Or Res = "U" Or Res = "M" Or Res = "G" Then
            Rows(i).Delete
        End If
    Next
End Sub


Merci pour cette proposition mais il ne se passe rien.
Le code devrait logiquement supprimer les lignes 1 à 8240.

Je vais essayer de creuse
Merci encore
 

chris6999

XLDnaute Impliqué
Re : Macro supprimer lignes avec condition commence par

comme d'hab s'il y avait un fichier exemple il n'y aurait pas de confusion

Code:
NB Fichier en PJ

il est où

Bonjour

Désolé le fichier était trop volumineux et il n'avait pas été pris en compte.
Je l'a modifié pour qu'il le soit.
Encore toutes mes excuses.
 

Pièces jointes

  • FICHIER TEST SUPPRIME LIGNE2.xlsm
    97.3 KB · Affichages: 45
  • FICHIER TEST SUPPRIME LIGNE2.xlsm
    97.3 KB · Affichages: 64

chris6999

XLDnaute Impliqué
Re : Macro supprimer lignes avec condition commence par

Bonjour


Je me rends effectivement compte que le fichier joint était trop volumineux donc non pris en compte.

J'ai réduit les données pour qu'il le soit.

Encore toutes mes excuses

Cordialement
 

Pièces jointes

  • FICHIER TEST SUPPRIME LIGNE2.xlsm
    97.3 KB · Affichages: 59
  • FICHIER TEST SUPPRIME LIGNE2.xlsm
    97.3 KB · Affichages: 48

Discussions similaires

Réponses
6
Affichages
202
Réponses
4
Affichages
165