Sous excel Supression ligne Automatic

banbao Messages postés 6 Statut Membre -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'aurai besoins d'une aide precieuse

Dans une feuille excel d'environ 500000 lignes je voudrai effacer des lignes en Automatique
si et seulement si la valeur est différent de G OU J aprés la syntaxe MID=

Ci joint 3 exemples BRUT et ceux sur trois lignes différente

GPC--PM=PM--MID=1_DOMODULE_C71.01--C=2422217--S=LT_WC_GPC_Chuckspot--R=DOMODULE_C71.SANSALIGN.VA04A00262C0--N=3--G=2--T=3.09659238752066379--I1=Range_PHY_X--I2=Range_PHY_Y

GPC--PM=PM--MID=J934IRI.13--C=2425404--S=LT_WC_GPC_Chuckspot--R=RA69A.49E0.RA69A49E0047--N=3--G=1--T=3.7990593927151779--I1=Range_PHY_X--I2=Range_PHY_Y

GPC--PM=PM--MID=G002412.11--C=2435320--S=LT_WC_GPC_Chuckspot--R=8207B.01A0.8207B00134E3--N=3--G=1--T=7.47596122141144814--I1=Range_PHY_X--I2=Range_PHY_Y

ci joint le resultat escompté les seuls ligne qui m'intéresse

GPC--PM=PM--MID=J934IRI.13--C=2425404--S=LT_WC_GPC_Chuckspot--R=RA69A.49E0.RA69A49E0047--N=3--G=1--T=3.7990593927151779--I1=Range_PHY_X--I2=Range_PHY_Y

GPC--PM=PM--MID=G002412.11--C=2435320--S=LT_WC_GPC_Chuckspot--R=8207B.01A0.8207B00134E3--N=3--G=1--T=7.47596122141144814--I1=Range_PHY_X--I2=Range_PHY_Y

bref j'accepte uniquement les datas qui sont = a G* ou J* aprés le MID=
par conséquent j'efface de ma feuille les autres

merci d'avance pour votre Aide
A voir également:

5 réponses

tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   435
 
Bonsoir,
les données sont dans une seule et même cellule ou le "--" signifie que l'on change de colonne ?
0
banbao Messages postés 6 Statut Membre
 
Salut,
chaque ligne commence par GPC et tout le script se trouve dans une meme cellule

Merci
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir,

une proposition :
Sub supplig()
    Dim car As String, lig As Long, derlig As Long, a
    derlig = Cells(Range("A:A").Rows.Count, 1).End(xlUp).Row
    For lig = derlig To 2 Step -1
        car = Mid(Cells(lig, 1).Value, InStr(Cells(lig, 1).Value, "MID=") + 4, 1)
        If Not (car = "G" Or car = "J") Then a = 1 'Rows(lig).EntireRow.Delete
    Next lig
End Sub

Si MID= n'est pas trouvé la ligne est supprimée (celles des cellules vides en A aussi)
Comme tu as parlé de 500000 lignes j'ai fait en sorte que la macro s'adapte au nombre de lignes d'excel 2003 et 2007
eric
0
banbao Messages postés 6 Statut Membre
 
MRCI ERIC pour cette Proposition j'aurai loisirs a le testé demain

Encore Merci, je t'en dirai des Nouvelles
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
heuuu, je t'ai mis la version intermédiaire qui ne supprime pas les données...
Teste plutôt ça :
Sub supplig()
    Dim car As String, lig As Long, derlig As Long
    derlig = Cells(Range("A:A").Rows.Count, 1).End(xlUp).Row
    For lig = derlig To 2 Step -1
        car = Mid(Cells(lig, 1).Value, InStr(Cells(lig, 1).Value, "MID=") + 4, 1)
        If Not (car = "G" Or car = "J") Then Rows(lig).EntireRow.Delete
    Next lig
End Sub

Et j'ai supposé que tu avais une ligne de titre à ne pas traiter.
eric
0