Comment ne conserver que certaines lignes d'une feuilles?

Bonjour et merci pour l'aide que vous pourrez m'apporter.

Voilà mon problème :

J'édite tous les jours des feuilles de rapport composé de plusieurs fiches clients dont 95% me sont inutiles et donc me font gaspiller du papier. Je n'ai besoin que de 2 lignes sur chaque fiches soit environ 20 lignes par rapport sur 1000 lignes au total.

Mon idée est de pouvoir faire un copier coller de ces rapports, pour ensuite filtrer et ne garder que les lignes qui m'intéressent.

Chaque jours, les rapports sont un peu differents : par exemple le jour 1, les informations sont ligne 1/info A, ligne 2/info B, ligne 3/info C...et ensuite le jour 2 ligne 1/info A, ligne 2/info B ligne 3/info B suite (informations qui ce jour ci occupe donc 2 lignes). Ce changement peut souvent s'expliquer parce qu'un client a rentré une adresse qui comporte une ligne de plus : jour 1 le premier client rentre son adresse rue, ville, code postal, et le jour 2 un client rentre son adresse rue, APPARTEMENT, ville, code postal.

Ce qui explique que chaque jour mes rapports ne sont pas totalement identiques.

Ce qui ne changent jamais cependant, ce sont les intitulés. Par exemple au dessus de la première ligne de l'adresse d'un client, il sera toujours marqué "adresse", la ligne au dessus de son numéro de téléphone sera toujours "numéro de téléphone" etc etc.

Mon idée est donc de filtrer pour ne conserver que la ligne qui contient "numéro de téléphone" et la ligne juste en dessous.

par exemple :

ligne 34 : adresse (pas besoin)

ligne 35 : 1 rue de paris (pas besoin)

ligne 36 : paris (pas besoin)

ligne 37 numéro de téléphone (besoin)

ligne 38 : 0101010101 (besoin)

ligne 134 : adresse (pas besoin)

ligne 135 : 1 rue de paris (pas besoin)

ligne 136 : paris (pas besoin)

ligne 137 numéro de téléphone (besoin)

ligne 138 : 0101010101 (besoin)

J'espère être assez clair dans mes explications Merci beaucoup encore pour l'aide que vous pourrez m'apporter.

bonjour,

peux tu mettre une fichier exemple avec quelques lignes anonymisées ?

Bonjour à tous

Un essai.

Mais avec un de tes fichiers, ce serait mieux.

Bye !

66classeur1-v1.xlsm (20.24 Ko)

Voici un fichier un peu retravaillé (suppression des données perso ^^' )

Les lignes qu'il me faut sont celles marquées "besoin". Tout le reste est inutile. Si vous avez une solution je veux bien la méthode (autant apprendre en plus :p )

Edit 1 : @ gmb : j'ai essayé le fichier mais il me dit qu'il ne trouve pas la maccro :s

56testpourforum.xls (20.00 Ko)

Bonjour,

un proposition de macro

Sub aargh() 
    dl = Cells(Rows.Count, 1).End(xlUp).Row ' dl dernière ligne utile
    Application.ScreenUpdating = False 'pour augmenter les performances on ne fait pas de mise à jour de l'écran pendant l'exécution de la macro
    i = 1 ' ctr de ligne
    Do
        If Cells(i, 1) = "Réservé pour" Then ' si on trouve la ligne "réservé pour"
            While Cells(i, 1) <> "Type de chambre" ' tant que la ligne n'est pas "type de chambre"
                i = i + 1 'on garde la ligne 'il y a un nombre variable de lignes
            Wend
        ElseIf Cells(i, 1) = "Numéro de carte" Then 'sinon si la ligne est "numéro de carte
            i = i + 4 ' on garde cette ligne et les 3 lignes suivantes
        End If
        Rows(i).Delete shift:=xlUp 'on supprime la ligne i
        dl = dl - 1 ' on adapte le numero de dernière ligne
    Loop Until i > dl : on boucle tant qu'on n'est pas à la fin
    Application.ScreenUpdating = True
End Sub

Bonjour!

Je viens de tester la maccro et c'est exactement ce qu'il me fallait! Merci énormément

Il y a juste un "petit" truc : est ce que tu as possibilité de m'expliquer ce qu'il est marqué? Si jamais un jour, je dois rajouter un critère en plus, que je puisse me débrouiller

On continue en MP ou ici directement?

Encore merci

bonjour,

commentaires mis dans le code

Merci c'est bien plus clair ^^. Si je veux mettre d'autres critères, est ce que ça marcherait si je mettais :

Sub aargh()

dl = Cells(Rows.Count, 1).End(xlUp).Row ' dl dernière ligne utile

Application.ScreenUpdating = False 'pour augmenter les performances on ne fait pas de mise à jour de l'écran pendant l'exécution de la macro

i = 1 ' ctr de ligne

Do

If Cells(i, 1) = "Réservé pour" Then ' si on trouve la ligne "réservé pour"

While Cells(i, 1) <> "Type de chambre" ' tant que la ligne n'est pas "type de chambre"

i = i + 1 'on garde la ligne

Wend

ElseIf Cells(i, 1) = "Numéro de carte" Then 'sinon si la ligne est "numéro de carte

i = i + 4 ' on garde cette ligne et les 3 lignes suivantes

[b]

ElseIf Cells(i, 1) = "nom du critère"

i = i + x(nombre de ligne dont j'ai besoin)[/b] (y a t'il besoin d'un ponctuation ou mise en page particulière?)

End If

Rows(i).Delete shift:=xlUp 'on supprime la ligne i

dl = dl - 1 ' on adapte le numero de dernière ligne

Loop Until i > dl : on boucle tant qu'on n'est pas à la fin

Application.ScreenUpdating = True

End Sub

Merci beaucoup pour les conseils

oui cela devrait marcher.

Rechercher des sujets similaires à "comment conserver que certaines lignes feuilles"