Supprimer 1 ligne sur 2

Bonjour,

J'ai construit une macro afin de supprimer 1 ligne sur 2 sur l'onglet Base de mon fichier, mais celà ne supprime pas 1 une ligne 2 mais quasiment la totalité des lignes.

Je pensais que celà venait du fait qu'à chaque fois, 2 lignes sont donc fusionnées, mais malgré l'ajout de la défusion dans la macro, elle ne fonctionne toujours pas.

Merci de votre aide.

8test-drp.xlsm (248.51 Ko)

Salut,

Ton fichier ne contient aucune macro

Amicalement.

Bonjour,

Vu qu'elle ne fonctionnait pas, je les ai supprimé pour éviter la confusion.

Je préfère que les répondants partent d'une page vierge.

Merci

Salut,

Je pensais pouvoir voir dans ta macro dans quelle direction tu veux partir.

Selon moi il y a effectivement 4 possibilités dans ton fichier de supprimer une ligne sur deux :

1) Supprimer les lignes paires selon la numérotation Excel

2) Supprimer les lignes impaires selon la numérotation Excel

3) Supprimer les lignes combinées 1-2, 5-6, 9-10, etc.

4) Supprimer les lignes combinées 3-4, 7-8, 11-12, etc.

De plus, toutes les feuilles n'ont pas le même point de départ ; certaines ont des données dès la ligne 1 selon Excel, d'autres dès la ligne 3 selon Excel. Alors quelle(s) feuille(s) doit/doivent être traitée(s) ?

Cordialement.

J'ai repris le fichier et conserver que les onglets intéressants.

La macro décrite s'applique sur l'onglet "Base".

11test-drp.xlsm (201.28 Ko)

Salut et merci de ta réponse.

J'ai construit une macro afin de supprimer 1 ligne sur 2 sur l'onglet Base de mon fichier, mais celà ne supprime pas 1 une ligne 2 mais quasiment la totalité des lignes.

Je ne comprends pas cette affirmation. Pour la partie des lignes que tu traites par ta macro – du Range("2:2 ……….") au Range("………. 40:40") – ça supprime bien une ligne sur deux. Et ceci selon mon modèle 1) Supprimer les lignes paires selon la numérotation Excel.

Dans le fichier ci-joint, après que j’ai lancé ta macro, on voit bien sur la feuille ''Base'' que les anciennes lignes 2, 4, 6, ....... 38, 40 ont été supprimées selon ton souhait.

Maintenant, afin que la macro traite toutes les lignes, jusqu’au fond du tableau de la feuille ‘’Base’’ – quel que soit sa grandeur - il vaudrait mieux passer par une boucle afin de ne pas devoir compléter ta ligne Range("2:2……….40:40").Select à l’infini.

Mais je n’ai pas l’envie de me lancer dans la réalisation de ce code avant que tu me confirmes que le résultat final souhaité est bien celui atteint pour les nouvelles lignes 1 à 20 de la feuille ‘’Base’’ du nouveau fichier ci-joint et que ça t’est égal de perdre les données qui se trouvent sur les lignes supprimées, telles que les données inscrites dans la cellule E14 de la feuille ‘’Base telle que reçue’’ du fichier ci-joint. Sinon, si ces données doivent être récupérées - où faut-il les reporter ? A la suite de la ligne du dessus (les données de la ligne 2 reportées à la suite de la ligne 1, etc.) ?

Dans l’attente de tes instructions.

Salut,

Je m'excuse tout d'abord de mon manque de cordialité sur le message précédent.

Les données que tu m'as envoyé correspondent exactement à ce que je veux, les données perdues ne me sont pas forcément utiles.

Etant donné que l'onglet pourra régulièrement dépasser les 500 lignes, je suis effectivement preneur d'une boucle.

Par ailleurs, il y a de grandes chances que dan chaque fichier, j'ai plusieurs onglets à traiter de la même manière. Est-il possible dans la programmation, de donner la consigne de mener l'opération sur tous les onglets autres que celui où se trouve le bouton?

Merci pour ton aide.

Salut,

Dans le fichier ci-joint, si tu cliques sur le bouton en place sur la feuille ''Tableau de bord'', ça traite toutes les feuilles du fichier sauf cette feuille ''Tableau de bord''.

Par ailleurs, il y a de grandes chances que dan chaque fichier, j'ai plusieurs onglets à traiter de la même manière.

Si tu dois traiter de nouveaux fichiers régulièrement, tu vas devoir déplacer les feuilles à traiter dans ce fichier Test DRP afin que ça fonctionne, en y enlevant les feuilles déjà traitées, autrement leurs lignes paires seront à nouveau effacées !

Une solution serait d'avoir ta feuille ''Tableau de bord'' seule dans un fichier et de faire en sorte que tu puisses aller traiter d'autres fichiers depuis là.

Un exemple : Tu ouvres ton fichier Test DRP, tu lances la macro, une fenêtre s'ouvre afin que tu choisisses le fichier contenant les feuilles à traiter, la macro traite les feuilles nécessaires et soit referme le fichier à traiter, soit le laisse ouvert à l'écran.

Un autre exemple : Tu ouvres à l'écran ton fichier Test DRP et le fichier à traiter - et ces deux seuls fichiers uniquement - et tu lances la macro depuis le fichier DPR qui traitera l'autre fichier ouvert à ce moment-là.

La solution du premier exemple à ma préférence, à moins que le fichier à traiter - et qui serait ouvert à l'écran conjointement - aient un nom, ou en tout cas une partie de son nom, bien précis (Par exemple Fichier_à_traiter_Septembre, Fichier_à_traiter_Octobre, etc.).

La solution du deuxième exemple serait à utilisé si ton fichier est de toute façon ouvert à l'écran au moment où tu veux en traiter les feuilles, afin de ne pas devoir le refermer puis devoir aller le rouvrir par l'intermédiaire de la macro.

A te relire.

12test-drp-v1.xlsm (215.34 Ko)

Salut,

Merci pour ta macro, elle fonctionne parfaitement.

Comme le fichier ne sera utilisé qu'une seule fois par jour et changé quotidiennement, la forme me convient sans avoir besoin de le couper à d'autres fichiers. En revanche, pour éviter des appuis intempestifs sur le bouton de l'onglet Tableau de bord, est-il possible d'ajouter un mot de passe à son utilisation (510200).

Pour faciliter l'utilisation du fichier, est-il également possible d'ajouter à la macro :

- mise à niveau automatique de la largeur des colonnes en fonction des données

- tri de chaque onglet en fonction de la colonne D (du plus ancien au plus récent)

Merci

Salut,

Je pense avoir répondu à ton attende dans le fichier ci-joint.

Chaleureusement.

6test-drp-v2.xlsm (216.84 Ko)

Comme dirait Galopin, encore une mort subite ?

Bonsoir

moi je préfère faire un delele sur les range vide a voir

            For j = .Range("A" & Rows.Count).End(xlUp).Row + 1 To 2 Step -1
                         If .Range("A" & j).Value = "" Then .Rows(j).Delete Shift:=xlUp
             Next j

A+

Maurice

Là n'était pas la question

Rechercher des sujets similaires à "supprimer ligne"