Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suppression de lignes en WBA

12 réponses
Avatar
Michel
Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1 jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes 48
à 64, etc... en fait une fiche(données) client comporte toujours 32 lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide

10 réponses

1 2
Avatar
Pounet95
Bonjour,

D'abord recopier la feuille dans un onglet tout neuf , au cas où ....

Retour dans l'onglet à traiter :
sélectionner une colonne vide
dans la première cellule de cette colonne mettre la formule :
=MOD(LIGNE();32)
sélectionner la colonne
faire un copier puis collage spécial Valeurs
Cette colonne étant toujours sélectionnée
menu Données/Filtre/Automatique
clic sur la flèche
sélectionner Personnalisé dans la liste déroulante
première conditon choisir égal dans liste déroulante mettre 0 en face
deuxième condition choisir supérieur à dans liste déroulante mettre 15
en face
cocher le bouton OU entre les 2 conditions
Sélectionner la première ligne dont le n° est en bleu
Faire CTRL+SHIFT+flèche bas pour sélectionner les lignes à détruire
menu Edition/Supprimer la ligne
menu Données/Filtre et décocher Automatique

Le résultat obtenu est le bon ?
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"Michel" a écrit dans le message de news:

Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1
jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes
48
à 64, etc... en fait une fiche(données) client comporte toujours 32
lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide


Avatar
yan
Salut
essaie cela brut de décoffrage

For x = 16 To 36444 Step 15
y = x + 16
z = x & ":" & y
Rows(z).Select
Selection.Delete Shift:=xlUp
dis moi?
A+
yannick



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

Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1
jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes
48
à 64, etc... en fait une fiche(données) client comporte toujours 32
lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide


Avatar
Daniel.M
Salut Michel,

Sub Det17DernLigneDesFiches()
Dim nLi As Long, nCol As Long, res As Variant

' Stratégie pour effacement rapide (1 seul effacecement)
' 1.Mettre formule qui retourne VRAI pour les 15 premières lignes
' 2.Fixe les Valeurs
' 3.Tri sur cette condition (0 et 1)
' 4.Efface les lignes où la formule = 0
With Range("A1").CurrentRegion
nLi = .Rows.Count
nCol = .Columns.Count
With .Offset(0, nCol).Resize(, 1)
.FormulaR1C1 = "=--(MOD(ROW()-1,32)<15)"
.Value = .Value
End With
End With
With Range("A1").CurrentRegion ' désormais 1 col plus large
' Tri avec les 0 en dernier
.Sort key1:=.Cells(1, nCol + 1), order1:=xlDescending
res = Application.Match(0, .Offset(0, nCol).Resize(, 1), 0)
If IsError(res) Then 'pas de faux, 0
' rien à faire
Else
.Cells(res, 1).Resize(1 + nLi - res).EntireRow.Delete
End If
.Offset(0, nCol).Resize(, 1).EntireColumn.ClearContents
End With

End Sub

Salutations,

Daniel M.

"Michel" wrote in message
news:
Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1 jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes 48
à 64, etc... en fait une fiche(données) client comporte toujours 32 lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide


Avatar
Michel
Salut Yan,

Je te remercie, c'est exactement ce qu'il me fallait

A+

Michel


Salut
essaie cela brut de décoffrage

For x = 16 To 36444 Step 15
y = x + 16
z = x & ":" & y
Rows(z).Select
Selection.Delete Shift:=xlUp
dis moi?
A+
yannick



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

Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1
jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes
48
à 64, etc... en fait une fiche(données) client comporte toujours 32
lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide







Avatar
yan
Je suis ravi que cela te convienne
A+
yannick

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

Salut Yan,

Je te remercie, c'est exactement ce qu'il me fallait

A+

Michel


Salut
essaie cela brut de décoffrage

For x = 16 To 36444 Step 15
y = x + 16
z = x & ":" & y
Rows(z).Select
Selection.Delete Shift:=xlUp
dis moi?
A+
yannick



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

Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1
jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer
les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les
lignes
48
à 64, etc... en fait une fiche(données) client comporte toujours 32
lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide









Avatar
PMO
Bonjour,

Ci-dessous un code à faire tourner sur une COPIE de votre classeur.

'********************************
Option Explicit
Sub SuppressionLignes()
Dim bool As Boolean
Dim i&
Dim ligFin&
Dim deb&
Dim nbPlage&
On Error GoTo Erreur
'---- Barre d'état ----
bool = Application.DisplayStatusBar
If Not bool Then Application.DisplayStatusBar = True
'---- Nombre de lignes au total ----
ligFin& = ActiveSheet.UsedRange.Rows.Count
'---- On sort si Nb lignes n'est pas multiple de 32 ----
If ligFin& Mod 32 > 0 Then
MsgBox prompt:="La feuille comporte " & _
ligFin& & " lignes. Ce n'est pas un multiple de 32", _
Title:="Programme stoppé"
Exit Sub
End If
'---- Nombre de plages à traiter ----
nbPlage& = ligFin& 32
'---- Traitement suppression ----
Application.ScreenUpdating = False
For i& = 1 To nbPlage&
If i& Mod 20 = 0 Then
Application.StatusBar = nbPlage& & _
" plages. Traitement de la plage N° " & i&
End If
deb& = 16 + (16 * (i& - 1)) - (i& - 1)
Rows("" & deb& & ":" & deb& + 16 & "").Delete
Next i&
'---- Pseudo traitement d'erreurs ----
'---- Remet tout en place ----
Erreur:
Application.ScreenUpdating = True
Application.StatusBar = False
Application.DisplayStatusBar = bool
End Sub
'********************************

Cordialement.

PMO
Patrick Morange



Bonjour,

j'ai une feuille de calcule avec des données qui vont de la ligne 1 jusqu'à
la ligne 36'444 et je désire garder les lignes 1 à 15, puis supprimer les
lignes 16 à 32, puis garder les lignes 33 à 47, puis supprimer les lignes 48
à 64, etc... en fait une fiche(données) client comporte toujours 32 lignes,
et je désire garder uniquement les 15 premières lignes da ladite fiche.

Merci de votre aide


Avatar
AV
A l'évidence, tu n'as pas testé l'ensemble des solutions proposées !
C'est une grave erreur !
En tant que exégète officiel de Daniel M, je ne saurait trop te conseiller de
tester la solution qu'il t'a proposé !
Elle est, et de très loin, la plus rapide et la plus sure !

AV
Avatar
AV
Bienvenu chez les incompris !

mdr !
AV
Avatar
Misange
ca se peut ça ? exégète de son propre exégète ? Humm ça sent les
combines et les arrangements ça !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


on 10/11/2004 18:27:
Bienvenu chez les incompris !

mdr !
AV




Avatar
AV
ca se peut ça ? exégète de son propre exégète ? Humm ça sent les
combines et les arrangements ça !


Pfffff.....femme de peu de foi !

AV

1 2