Supprimer plusieurs lignes

Bonjour à vous,

Je vous explique ma problèmatique. J'ai une formule que j'étire jusqu'à la ligne 50000, car je ne sais pas combien de valeur je vais avoir. Par contre je voudrais supprimer une fois que je connais mon nombre de lignes, toutes les formules inutiles. Voici le code que j'ai esseyé, mais qui plante car il y a trop de lignes...

Dim i As ILong, cel As Range

For i = 1 To 50000

If Cells(i, 51) = "1900 - 01" Then

Rows(i).Delete

i = i - 1

End If

Next

Il y a surement un moyen pour que la macro roule dans un délai résonnable et qu'excel ne plante pas.

merci beaucoup de votre aide !

Bonjour,

essaies cette macro

Sub supprimerlignesi()
Dim  lig As Long, cptr As Long

nbre = Application.CountIf(Columns(51), "1900-01")
lig = 65536
Application.ScreenUpdating = False

For cptr = 1 To nbre
    lig = Columns(51).Find("1900-01", Cells(lig, 51), xlValues).Row
    Rows(lig).Delete
    If lig > 1 Then
        lig = lig - 1
    Else
        lig = 65536
    End If
Next
End Sub

Salut Michel,

Merci pour ta solution, mais ça fait un peu le même phénomême, ça plante ou ça calcul durant très longtemps. J'ai laissé la macro rouler 5 minutes, rien ne se passe. Est-ce que ma demande (mon besoin) exède carrément les capacités d'excel?

Merci et bonne journée !

Vincent

Bonsoir à tous,

Peux-tu envoyer ta feuille avec une vingtaine de lignes représentatives

en précisant les critères pour supprimer les lignes

Amicalement

Claude

Bonjour à tous,

Voilà un fichier avec quelques lignes. La macro fonctionne super bien avec peu de lignes, c'est quand j'ai le même fichier avec 35 000 lignes, ça ne focntionne plus.

D'après moi, c'est tout simplement trop long pour excel, il doit tester la condition sur les 35 000 lignes et il finit par planter... tu en penses quoi?

merci encore !!

Vincent

49template.zip (13.32 Ko)

re,

Je comprends pas bien l'objectif de ta formule,

Quel est le critère dans la colonne "AB" pour supprimer

Claude

Re salut,

Merci. L'objectif de ma formule c'est d'avoir la date dans un format AAAA-MM pour que dans une autre page, j'ai un tableau croisée dynamique avec ces dates.

Je veux donc étirer la formule jusqu'en bas afin qu'il y est une formule pour toutes mes valeurs, mais une fois le tout implanter, je voudrais tout simplement supprimer les lignes ou la formules et là pour rien.

Est-ce plus clair?

Merci !!

Bonsoir

Je ne sais pas coder, mais ce qu'il faut c'est un code du genre :

derlg = première cellule vide à partir de A2

EntireRows.("A" & derlg , A50000).delete

Dans l'exemple, suppression des lignes entières concernant les cellules A29:A50000

Je laisse coder un spécialiste.

Amicalement

Nad

79093208 2410402702554778 2687409518698037248 n

re,

excuse-moi d'insister mais là, ta formule ne fait que tester la colonne AB,

si vide => engendre une erreur d'où le "1900-01" donc ligne à supprimer

C'est çà ?

Pour la macro, c'est pas un problème mais faudrait que je comprenne !

Claude

édit: tu estime à combien (environ, fourchette) le nombre de lignes à supprimer

Salut à tous,

Merci de ta réponse. En effet, on peut voir ça comme ça. Il peut y avoir en 10 000 et 50 000 données.

Merci encore de ton aide.

Vincent

bonjour à tous,

Si on arrête la formule à la dernière ligne du tableau, y-a plus rien à supprimer !

ou alors j'ai rien pigé

Tout çà manque de précision !

Bonne journée

Claude

logo

Re,

Ok je réeplique. Le tableau provient d'une source de données externes. Je veux que l'utilisateur copy/paste le tableau. J'ai fait une formule de date que j'ai étirer jusqu'à 50 000, car je ne sais pas combien de données le tableua va avoir. Hors, je voudrais qu'une fois le tableau copier/coller qu'une macro supprime toutes les lignes ou la formule ne sert à rien.

Est-ce plus clair?

merci beaucoup !

re,

Sub SupprLignes()
Dim Lg As Long
    Lg = Range("A65536").End(xlUp).Row + 1
    Range("a" & Lg & ":a60000").EntireRow.Delete
End Sub

Claude

Wow, Merci Claude. ça supprime vite ta macro...

J'aimerais simplement comprendre le code :

Sub SupprLignes()

Dim Lg As Long --> On définit la variable Lg

Lg = Range("A65536").End(xlUp).Row + 1 --> On effectue la condition sur toutes les cellules de A à aprtir d'en bas et on monte

Range("a" & Lg & ":a60000").EntireRow.Delete --> Je ne comprend pas la ligne

End Sub

De plus, comment as-tu définit la condition dans ta macro (A ="")?

Merci d'avance pour tes explications

Vincent

re,

La variable Lg est la dernière ligne occupée de la colonne A (en partant du bas)

çà pourrait être une autre colonne (vérifier que se soit une colonne remplie)

ensuite de ce N° de ligne Lg + 1 jusqu'à 60 000 , on supprime les lignes entières

il n'y a pas ici de condition

Claude

Ok merci. Je commence à mieux comprend VBA grâce au livre VBA pour excel 2003 de John Walkenbach, mais j'ai toujours besoin du forum.

merci à tous.

Rechercher des sujets similaires à "supprimer lignes"