Supprimer 95 Lignes toutes les 44 Lignes

Résolu/Fermé
Cyril - Modifié par Cyril le 20/10/2015 à 12:51
 Cyril - 21 oct. 2015 à 09:52
Bonjour à tous,

Je cherche à connaitre le code VBA pour supprimer 95 lignes toutes les 44 lignes. c'est pour m'aider à mettre en forme des données TXT que je récupère tous les jours. Malheureusement le format de l'importation ne me permet pas de faire des statistiques via un tableau croisé dynamique et donc je suis obligé de mettre en forme les donées avant de réaliser mes tableaux croisés dynamiques.L'idée est donc d'automatiser ce processus via une macro. La suppression commence à partir de la ligne 44.
Je suis sous excel 2007.

Merci de votre aide.

Cyril.
A voir également:

6 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
20 oct. 2015 à 13:38
Bonjour,

J'ai laissé le test qui permet simplement de colorer les lignes à supprimer.
Rows(Ligne).Resize(95).Interior.ColorIndex = 6
Il suffit ensuite que tu supprimes cette ligne de code et que tu actives la ligne
'Rows(Ligne).Resize(95).Delete
en enlevant l'apostrophe en tête de l'instruction.

Sub Test()
Dim DerLig As Long, NbLignes As Long, Ligne As Long
Dim LigneDebut As Integer
LigneDebut = 1
DerLig = Range("A" & Rows.Count).End(xlUp).Row
NbLignes = DerLig - LigneDebut + 1
For Ligne = DerLig - 94 - (NbLignes Mod 138) To LigneDebut Step -138
Rows(Ligne).Resize(95).Interior.ColorIndex = 6
'Rows(Ligne).Resize(95).Delete
Next Ligne
End Sub

A+
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 20/10/2015 à 14:00
Bonjour,

Une autre approche car je crains que tu te sois trompé (si on commence à supprimer à la ligne 44 c'est que tu ne gardes que 43 lignes.
Je n'ai pas testé le code, et je suppose que la cellule en colonne A est remplie.
L_debut=44
l_cons=44
l_suppr=95
i=0
While Cells(L_debut+i*l_cons,1).Value <> ""
debut_lot=L_debut+i*l_cons
fin_lot=debut_lot+l_suppr-1    
Rows(debut_lot & ":" & fin_lot).Delete
i=i+1
Wend


A+
0
Bonjour à tous les 2,

Merci de vos réponses et je vais essayer les deux solutions en les adaptant à ma situation.

Zoul67, Tu as raison, pour être plus précis dans ma demande, je voudrais garder les lignes 1 à 44, supprimer les 95 lignes suivantes, garder 44 lignes, supprimer 95 lignes ect...

Je vous tiens au courant de mon avancé !
0
Rebonjour à tous les 2,

Le code de Zyrug marche pratiquement bien, ce que je ne comprend pas c'est qu'il me supprime une fois sur deux 95 lignes, et l'autre fois 96 lignes; je ne vois pas à quoi cela peut correspondre dans le code, peut-être parce que tu prend come départ la dernière ligne du tableau Excel.

Pour le code de Zoul 67 je n'arrive pas à le faire fonctionner et ça n'ont plus je ne sais pas à quoi cela est du...

Mais merci de votre aide, j'en suis déjà plus loin que mes premiers essai :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
20 oct. 2015 à 20:16
Si tu souhaites garder 44 lignes, le code doit être adapté comme ceci :
Sub Test()
Dim DerLig As Long, NbLignes As Long, Ligne As Long
Dim LigneDebut As Integer
LigneDebut = 1
DerLig = Range("A" & Rows.Count).End(xlUp).Row
NbLignes = DerLig - LigneDebut + 1
For Ligne = DerLig - 94 - (NbLignes Mod 139) To LigneDebut Step -139
Rows(Ligne).Resize(95).Delete
Next Ligne
End Sub

Remarque : Si tu oses m'appeler encore Zyrug, je te baptise Rycil.

A+
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
20 oct. 2015 à 23:09
Et dans mon code, les paramètres deviennent :
L_debut = 45 '1è ligne à supprimer
l_cons = 44 'nombre de lignes CONServées par lot
l_suppr = 95 'nombre de lignes SUPPRimées par lot

Bonne nuit
0
Ok c'est bon ça marche ! Merci à tous les deux ! Je m'excuse Gyrus,, tu fais pas semblant quand tu menaces ^^
0