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.
Pffff! (tm AV) J'ai eu le présentiment que j'aurais droit à ce genre de message de ta part.
En effet, j'aime bien le pattern qui consiste à utiliser une colonne supplémentaire pour isoler les enregistrements (lignes) pertinents (à l'aide d'une formule adaptée) et d'y effectuer ensuite les opérations en une seule instruction.
Salutations,
Daniel M.
Bienvenu chez les incompris !
mdr !
AV
:-)))
Pffff! (tm AV)
J'ai eu le présentiment que j'aurais droit à ce genre de message de ta part.
En effet, j'aime bien le pattern qui consiste à utiliser une colonne
supplémentaire pour isoler les enregistrements (lignes) pertinents (à l'aide
d'une formule adaptée) et d'y effectuer ensuite les opérations en une seule
instruction.
Pffff! (tm AV) J'ai eu le présentiment que j'aurais droit à ce genre de message de ta part.
En effet, j'aime bien le pattern qui consiste à utiliser une colonne supplémentaire pour isoler les enregistrements (lignes) pertinents (à l'aide d'une formule adaptée) et d'y effectuer ensuite les opérations en une seule instruction.
Salutations,
Daniel M.
Daniel.M
Salut Alain,
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é !
Cette boucle (ex de ex) n'aura-t-elle jamais de fin? :-)
En passant, voici quand même une nouvelle version (avec un tantinet plus de commentaires):
Sub Det17DernLigneDesFichesDMA()
Dim nLi As Long, nCol As Long, res As Variant Dim ColUt As Range
Application.ScreenUpdating = False ' Stratégie pour effacement rapide (1 seul effacement) ' É1. Mettre formule qui retourne 1 pour les 15 premières lignes ' É2. Fixer les Valeurs ' É3. Trier sur cette condition (0 et 1) ' É4. Effacer les lignes où la formule = 0
' É3. Tri avec les 0 en dernier .Resize(, nCol + 1).Sort key1:=ColUt(1, 1), _ order1:=xlDescending, header:=xlNo res = Application.Match(0, ColUt, 0)
' É4. If Not IsError(res) Then 'si on trouve au moins un 0 .Cells(res, 1).Resize(1 + nLi - res).EntireRow.Delete End If
' Efface le contenu de la colonne utilitaire ColUt.ClearContents Set ColUt = Nothing End With
Application.ScreenUpdating = True End Sub
Salutations,
Daniel M.
"AV" wrote in message news:
A l'évidence, tu n'as pas testé l'ensemble des solutions proposées ! C'est une grave erreur !
Elle est, et de très loin, la plus rapide et la plus sure !
AV
Salut Alain,
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é !
Cette boucle (ex de ex) n'aura-t-elle jamais de fin? :-)
En passant, voici quand même une nouvelle version (avec un tantinet plus de
commentaires):
Sub Det17DernLigneDesFichesDMA()
Dim nLi As Long, nCol As Long, res As Variant
Dim ColUt As Range
Application.ScreenUpdating = False
' Stratégie pour effacement rapide (1 seul effacement)
' É1. Mettre formule qui retourne 1 pour les 15 premières lignes
' É2. Fixer les Valeurs
' É3. Trier sur cette condition (0 et 1)
' É4. Effacer les lignes où la formule = 0
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é !
Cette boucle (ex de ex) n'aura-t-elle jamais de fin? :-)
En passant, voici quand même une nouvelle version (avec un tantinet plus de commentaires):
Sub Det17DernLigneDesFichesDMA()
Dim nLi As Long, nCol As Long, res As Variant Dim ColUt As Range
Application.ScreenUpdating = False ' Stratégie pour effacement rapide (1 seul effacement) ' É1. Mettre formule qui retourne 1 pour les 15 premières lignes ' É2. Fixer les Valeurs ' É3. Trier sur cette condition (0 et 1) ' É4. Effacer les lignes où la formule = 0