Supprimer 95 Lignes toutes les 44 Lignes

Résolu
Cyril -  
 Cyril -
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.

6 réponses

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    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
  2. Zoul67 Messages postés 2001 Statut Membre 149
     
    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
  3. Cyril
     
    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
  4. Cyril
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Gyrus Messages postés 3360 Statut Membre 526
     
    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
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      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
  7. Cyril
     
    Ok c'est bon ça marche ! Merci à tous les deux ! Je m'excuse Gyrus,, tu fais pas semblant quand tu menaces ^^
    0