OVH Cloud OVH Cloud

macro supression de lignes

7 réponses
Avatar
darib52
bonjour à tous,
j'ai une macro qui est censée supprimer des lignes.
si je teste sur 3 000 lignes, c'est OK.
si je teste sur l'intégralité de mon fichier, 35 000 lignes, ça bug.
et je n'arrive pas à la mettre au point.
si vous pouviez me donner un coup de main, ça serait sympa.
merci d'avance.
bon noël à tous.


Sub Macro1()

Dim mesLignes As String
Dim x As Integer

For x = 65 To Range("A65536").End(xlUp).Row Step 72
mesLignes = IIf(mesLignes = "", x & ":" & x + 1, mesLignes & "," &
x & ":" & x + 1)
Next
Range(mesLignes).Delete
End Sub

7 réponses

Avatar
anonymousA
bonjour,

sans trop chercher, x as integer implique x <= 32 768 , donc 35000 ca
en lui va pas. Dim x as long et essaye.

A+
Avatar
darib52
merci pour cette précision.

le bug s'est déplacé

Range(mesLignes).Delete
Avatar
FxM
Bonsoir,

Non testé :
Sub Macro1()
Dim plage As Range
Dim x As Long

Set plage = Nothing
For x = 65 To Range("A65536").End(xlUp).Row Step 72
If plage Is Nothing Then
Set plage = Range("A" & x).EntireRow
Else
Set plage = Union(plage, Range("A" & x).EntireRow)
End If
Next x
plage.Delete
End Sub

@+
FxM


darib52 wrote:
bonjour à tous,
j'ai une macro qui est censée supprimer des lignes.
si je teste sur 3 000 lignes, c'est OK.
si je teste sur l'intégralité de mon fichier, 35 000 lignes, ça bug.
et je n'arrive pas à la mettre au point.
si vous pouviez me donner un coup de main, ça serait sympa.
merci d'avance.
bon noël à tous.


Sub Macro1()

Dim mesLignes As String
Dim x As Integer

For x = 65 To Range("A65536").End(xlUp).Row Step 72
mesLignes = IIf(mesLignes = "", x & ":" & x + 1, mesLignes & "," & x
& ":" & x + 1)
Next
Range(mesLignes).Delete
End Sub


Avatar
darib52
OK pour le fonctionnement.
mais ne supprime qu'une ligne sur les 2 à supprimer.


Bonsoir,

Non testé :
Sub Macro1()
Dim plage As Range
Dim x As Long

Set plage = Nothing
For x = 65 To Range("A65536").End(xlUp).Row Step 72
If plage Is Nothing Then
Set plage = Range("A" & x).EntireRow
Else
Set plage = Union(plage, Range("A" & x).EntireRow)
End If
Next x
plage.Delete
End Sub

@+
FxM


darib52 wrote:

bonjour à tous,
j'ai une macro qui est censée supprimer des lignes.
si je teste sur 3 000 lignes, c'est OK.
si je teste sur l'intégralité de mon fichier, 35 000 lignes, ça bug.
et je n'arrive pas à la mettre au point.
si vous pouviez me donner un coup de main, ça serait sympa.
merci d'avance.
bon noël à tous.


Sub Macro1()

Dim mesLignes As String
Dim x As Integer

For x = 65 To Range("A65536").End(xlUp).Row Step 72
mesLignes = IIf(mesLignes = "", x & ":" & x + 1, mesLignes & "," &
x & ":" & x + 1)
Next
Range(mesLignes).Delete
End Sub




Avatar
FxM
Essaie en remplaçant :
Range("A" & x).EntireRow
par
Range("A" & x).Resize(2, 1).EntireRow

@+
FxM


darib52 wrote:
OK pour le fonctionnement.
mais ne supprime qu'une ligne sur les 2 à supprimer.


Bonsoir,

Non testé :
Sub Macro1()
Dim plage As Range
Dim x As Long

Set plage = Nothing
For x = 65 To Range("A65536").End(xlUp).Row Step 72
If plage Is Nothing Then
Set plage = Range("A" & x).EntireRow
Else
Set plage = Union(plage, Range("A" & x).EntireRow)
End If
Next x
plage.Delete
End Sub

@+
FxM


darib52 wrote:

bonjour à tous,
j'ai une macro qui est censée supprimer des lignes.
si je teste sur 3 000 lignes, c'est OK.
si je teste sur l'intégralité de mon fichier, 35 000 lignes, ça bug.
et je n'arrive pas à la mettre au point.
si vous pouviez me donner un coup de main, ça serait sympa.
merci d'avance.
bon noël à tous.


Sub Macro1()

Dim mesLignes As String
Dim x As Integer

For x = 65 To Range("A65536").End(xlUp).Row Step 72
mesLignes = IIf(mesLignes = "", x & ":" & x + 1, mesLignes & ","
& x & ":" & x + 1)
Next
Range(mesLignes).Delete
End Sub






Avatar
darib52
merci.
ça fonctionne.

Joyeux Noël


Essaie en remplaçant :
Range("A" & x).EntireRow
par
Range("A" & x).Resize(2, 1).EntireRow

@+
FxM


darib52 wrote:

OK pour le fonctionnement.
mais ne supprime qu'une ligne sur les 2 à supprimer.



Bonsoir,

Non testé :
Sub Macro1()
Dim plage As Range
Dim x As Long

Set plage = Nothing
For x = 65 To Range("A65536").End(xlUp).Row Step 72
If plage Is Nothing Then
Set plage = Range("A" & x).EntireRow
Else
Set plage = Union(plage, Range("A" & x).EntireRow)
End If
Next x
plage.Delete
End Sub

@+
FxM


darib52 wrote:

bonjour à tous,
j'ai une macro qui est censée supprimer des lignes.
si je teste sur 3 000 lignes, c'est OK.
si je teste sur l'intégralité de mon fichier, 35 000 lignes, ça bug.
et je n'arrive pas à la mettre au point.
si vous pouviez me donner un coup de main, ça serait sympa.
merci d'avance.
bon noël à tous.


Sub Macro1()

Dim mesLignes As String
Dim x As Integer

For x = 65 To Range("A65536").End(xlUp).Row Step 72
mesLignes = IIf(mesLignes = "", x & ":" & x + 1, mesLignes & ","
& x & ":" & x + 1)
Next
Range(mesLignes).Delete
End Sub








Avatar
FxM
darib52 wrote:
merci.
ça fonctionne.

Joyeux Noël


Merci, de même.