OVH Cloud OVH Cloud

suppression de lignes

13 réponses
Avatar
DENIS
Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis

10 réponses

1 2
Avatar
anonymousA
Bonjour,

supprime toutes les lignes pour lequelles les lignes de 3 à 100 ont une
colonne O vide.

Set cselc = Nothing
For Each c In Range("O3:O100")
If IsEmpty(c) Then
If cselc Is Nothing Then
Set cselc = Union(c, c)
Else
Set cselc = Union(cselc, c)
End if
End if
Next

cselc.EntireRow.Delete

A+

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis




Avatar
michdenis
Bonjour Denis,

Si tu utilises seulement la colonne O:O comme critère (est vide)
pour supprimer la ligne entière, tu peux utiliser ceci :

On error resume next
Range("O3:O100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete (xlUp)


Salutations!


"DENIS" a écrit dans le message de news:
Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis
Avatar
Jacky
Bonsoir,
Ou, un peu plus basic
'---------
For i = 100 To 3 Step -1
If Range("O" & i) = "" Then Range("O" & i).EntireRow.Delete
Next
'------------
Salutations
JJ

"DENIS" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis




Avatar
LSteph
Bonsoir ..Denis,

...du bas vers le haut bien moins de problèmes pour supprimer!
si vraiment toute la ligne

Sub AvirvidO()
For i = 100 To 3 Step -1
If IsEmpty(Rows(i).Cells(15)) Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph

"DENIS" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis




Avatar
DENIS
Merci,

Ca fonctionne très bien mais j'ai encore un ti problème.
Il arrive que la cellule O soit fusionnée en 2/3 ou 4 cellule.
Dans ce cas, la macro ci-dessous efface aussi les lignes 2/3 ou 4 qui vont
de A:N qui ne sont pas fusionnées.
par ex :
A3:O6 mais seule O3 à O6 est fusionnée. Les lignes A3 à N6 ne sont pas
fusionnées mais vont avec l'info en O3:O6
J'ai obtenu ce résultat avec Selection.EntireRow.Delete.

Denis



Bonjour,

supprime toutes les lignes pour lequelles les lignes de 3 à 100 ont une
colonne O vide.

Set cselc = Nothing
For Each c In Range("O3:O100")
If IsEmpty(c) Then
If cselc Is Nothing Then
Set cselc = Union(c, c)
Else
Set cselc = Union(cselc, c)
End if
End if
Next

cselc.EntireRow.Delete

A+

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis







Avatar
Jacky
Bonsoir michoudenis

Quelle est la fonction de (xlUp) dans ce cas ????
Stp

Salutations
JJ

"michdenis" a écrit dans le message de news:

Bonjour Denis,

Si tu utilises seulement la colonne O:O comme critère (est vide)
pour supprimer la ligne entière, tu peux utiliser ceci :

On error resume next
Range("O3:O100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete (xlUp)


Salutations!


"DENIS" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis





Avatar
DENIS
Bonsoir,

C sur, mais quelque soit la méthode proposée, elle supprime trop de lignes.
Seule la ligne ou se situe une valeur en O n'est pas supprimée mais si
celle-ci est fusionnée en 3 cellule vers le bas, par ex O3:O6 les lignes
A4,A5,A6 sont supprimées car elles ne sont pas fusionnées. Seule la ligne A3
reste avec la cellule O3. Alors comment faire ?

Denis


Bonsoir ..Denis,

....du bas vers le haut bien moins de problèmes pour supprimer!
si vraiment toute la ligne

Sub AvirvidO()
For i = 100 To 3 Step -1
If IsEmpty(Rows(i).Cells(15)) Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph

"DENIS" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis









Avatar
LSteph
Re ,

Là c'est un autre sujet.
Les fusions c'est un truc à écarter dès le départ.
Pardon les fusions sont une source de M... infinie ..
Le mieux amha est de ne pas s'en servir sauf pour de la présentation... et
encore
en aucun cas pour gèrer des données et encore moins dans des tris tables
bases ..
à fortiori avec vba quoique mergecells puisse être vérifié.. je dirais même
plutôt M__d_cells
Selon ce que je viens d'évoquer il y a solution mais je préfère écarter
toute hypothèse avec des fusions.

Désolé.

a+

lSteph

"DENIS" a écrit dans le message de news:

Bonsoir,

C sur, mais quelque soit la méthode proposée, elle supprime trop de
lignes.
Seule la ligne ou se situe une valeur en O n'est pas supprimée mais si
celle-ci est fusionnée en 3 cellule vers le bas, par ex O3:O6 les lignes
A4,A5,A6 sont supprimées car elles ne sont pas fusionnées. Seule la ligne
A3
reste avec la cellule O3. Alors comment faire ?

Denis


Bonsoir ..Denis,

....du bas vers le haut bien moins de problèmes pour supprimer!
si vraiment toute la ligne

Sub AvirvidO()
For i = 100 To 3 Step -1
If IsEmpty(Rows(i).Cells(15)) Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph

"DENIS" a écrit dans le message de
news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide
alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis











Avatar
anonymousA
Avant de se lancer dans des trucs compliqués,que veux-tu exactement ?
Quand on fusionne des cellules, quelle que soit la cellule dans laquelle
on rentre des données initialement, la cellule qui physiquement recoit
la donnée est la cellule la plus en haut à gauche (en conséquence,
aucune autre cellule de la plage fusionnée ne possède de données) . Si
il y a plus de 1 donnée dans la plage fusionnée, les autres données sont
perdues.
Essaye d'expliquer exactement ce que tu souhaites ? En vertu de ce que
j'écris précédemment, je n'arrive pas à discerner ta demande. En effet,
imaginons une plage de données fusionnées p.e A3:C5. Si on scrute la
cellule A3 soit elle a des données soit elle n'en a pas. Si elle en a,
c'est la seule cellule de la plage A3:C5 à en posséder et donc A4 et A5
n'en ont pas.Si elle n'en a pas , alors aucune cellule de A3 à A5 n'en a.
Donc je ne comprends pas ta phrase "elle supprime trop de lignes ".
J'aurais eu plutot tendance à écrire , elle n'en supprime pas assez.
Mais peut-être n'ai je rien compris ?



Bonsoir,

C sur, mais quelque soit la méthode proposée, elle supprime trop de lignes.
Seule la ligne ou se situe une valeur en O n'est pas supprimée mais si
celle-ci est fusionnée en 3 cellule vers le bas, par ex O3:O6 les lignes
A4,A5,A6 sont supprimées car elles ne sont pas fusionnées. Seule la ligne A3
reste avec la cellule O3. Alors comment faire ?

Denis



Bonsoir ..Denis,

....du bas vers le haut bien moins de problèmes pour supprimer!
si vraiment toute la ligne

Sub AvirvidO()
For i = 100 To 3 Step -1
If IsEmpty(Rows(i).Cells(15)) Then
Rows(i).EntireRow.Delete
End If
Next
End Sub

'lSteph

"DENIS" a écrit dans le message de news:


Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis











Avatar
michdenis
Bonjour Jacky,

Sélectionnes quelques lignes entières, active l'enregistreur de macro et supprime
les lignes... le code généré est :

Selection.Delete Shift:=xlUp

Moi je n'ai rien fait d'autre que de copier !!!

;-))


Salutations!



"Jacky" a écrit dans le message de news: eTBp$
Bonsoir michoudenis

Quelle est la fonction de (xlUp) dans ce cas ????
Stp

Salutations
JJ

"michdenis" a écrit dans le message de news:

Bonjour Denis,

Si tu utilises seulement la colonne O:O comme critère (est vide)
pour supprimer la ligne entière, tu peux utiliser ceci :

On error resume next
Range("O3:O100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete (xlUp)


Salutations!


"DENIS" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau A3:Q100;
Je souhaiterais qu'en partant de la cellule O3, si celle-ci est vide alors
suppression de toute la ligne. Selection.EntireRow.Delete
Et que cette opération se répète jusqu'en ligne 100.

Merci
Denis





1 2