Comment supprimer différentes lignes sur mes feuilles Excel ?

Bonjour à tous,

Je vous explique ma requête : J'ai plus de 1000 feuilles sur un fichier excel. Ces feuilles sont composés du même titre de colonne allant de la colonne A à R. Pour certaines colonnes j'ai utilisé des formules que j'ai copié dans toutes mes feuilles. Et à la fin, j'ai une ligne total qui calcul la somme des colonnes J à R. En ayant copier cette formule à toutes mes feuilles, je me retrouve avec cette ligne total à la ligne 1592. En soi, ce n'est pas un problème pour moi.

Cependant, mes données ne se terminent pas à la même ligne dans chaque feuille. Par exemple :

- la feuille 1 a des données jusque la ligne 46

- la feuille 2 à des données jusque la ligne 542

- la feuille 3 à des données jusque la ligne 1200

ainsi de suite ...

Je voudrais savoir si il est possible de faire une macro qui dit ' Supprime moi toutes les lignes qui vont de la dernière donnée jusque la ligne 1591. Par exemple pour la feuille 1, je voudrais supprimer toutes les lignes allant de 47(inclus) jusque 1591(inclus). Ma première colonne s'appelle 'produit' donc par exemple dire ' Dès que tu n'as plus de donnée à produit, alors tu supprimes toutes les lignes jusque 1591(inclus).

Voilà ma requête, je n'ai jamais fais de VBA donc je m'exerce actuellement mais je n'arrive pas à faire ce code là.

Bien à vous,

Hello,

Yes c'est tout à fait possible, tu aurais un fichier exemple pour adapter directement à ton besoin ?

Merci d'avance ;)

@+

16exemple.xlsx (237.83 Ko)

Merci pour ton aide. Donc le fichier exemple que j'ai envoyé, j'ai pris 2 feuilles de mon fichier. Donc par exemple dans celui-là, je voudrais :

- pour la première feuille --> supprimer les lignes allant de 479 à 1591 inclus

- Pour la deuxième feuille --> supprimer les lignes allant de 97 à 1591 inclus.

Voici ce que je veux alors obtenir :

Hello dis moi si ça te va

Je ne l'ai pas encore exécuter donc tu pourras constater si c'est ça que tu veux

@+

19exemple-7.xlsm (243.62 Ko)

Un énorme merci à toi, cela fonctionne comme je veux ! As-tu le code pour le recopier sur mon fichier de base ?

Merci beaucoup

Top merci pour ton retour

Du coup tu as le code quand tu vas sur Affichage -> Macro -> baroute78 -> Modifier.

Je te le remets ici :

Sub baroute78()

For i = 1 To Sheets.Count

Sheets(i).Select

Derligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

Rows(Derligne + 1 & ":1591").Delete

Next i

End Sub

Par contre attention, je ne connais pas la tête de ton fichier, ici le code va passer sur tous les onglets donc si il y en a certains qui ne doivent pas être traités, ça risque de poser problème.

N'hésite pas si besoin

@+

Normalement ça devrait aller car j'ai toutes mes feuilles ont le même format que l'exemple avec les 2 feuilles que je t'ai envoyé. J'ai une autre requête (jamais une sans deux ici haha). Je n'y avais pas pensé mais j'ai besoin des lignes résultat pour les mettre dans une feuille summary. Il faut que me ma ligne résultat allant de J (RealGain) à la colonne R (DE) aille dans ma feuille summary. Voici l'exemple :

Bien à toi,

Lionel

10exemple-7-3.xlsm (74.51 Ko)

Hello,

Alors ma méthode, je t'ai mis un bouton "Actualiser onglet" sur l'onglet summary. Attention si tu renommes ton onglet "Summary" ça peut tout casser.

Il va t'actualiser les onglets et derrière j'ai mis une formule qui va récupérer les bonnes valeurs, t'auras juste à tirer le trait si t'as des nouveaux onglets ;)

Hésite pas si besoin

@+

11exemple-7-3.xlsm (78.20 Ko)

Merci Baroute78 mais cela ne me donne pas le résultat souhaité quand je teste la macro dans mon fichier. La macro me permet de donner le nom des feuilles mais j'en ai pas besoin, il me faut principalement les résultats de chaque feuille qui vont J (RealGain) à la colonne R (DE). Voici par exemple le fichier sans la macro et ce que le fichier que je veux. Avec la macro que tu as mis, j'obtiens le résultat là : (Le résultat que je souhaite est différent --> je ne veux pas le nom des feuilles mais compléter toutes les colonnes de B à J que tu verras dans "classeur-exemple-corrige).

Bien à toi,

Lionel

En tout cas, merci beaucoup de ton implication.

image
11classeur-exemple.xlsx (201.78 Ko)

Peut-être trouvé une méthode qui dit " Dans chaque feuille, sur la ligne où il y a écrit Result, tu me copies les résultats allant de la colonne J à la colonne R et tu les mets dans la feuille summary dans la colonne B à J" ou dire " Sur la dernière ligne de donnée de chaque feuille (cera celle de résult), tu me copies les résultats allant de la colonne J à la colonne R et tu les mets dans la feuille summary dans la colonne B à J".

C'est nettement plus facile à dire qu'à faire haha

hâte de recevoir ta réponse, merci beaucoup

Le truc c'est que c'est pas si compliqué que ça mais du coup je dois faire des sélections de feuille pour du copier coller valeur et j'aime pas ça dans le code

On ne sait pas dire "Tu me prends toutes les feuilles, et dans chaque feuille, tu prends les dernières valeurs qui se trouvent de J à R et tu me le mets dans la feuille Summary " ?

Je suis vraiment dans les bases de code donc je sais pas du tout avancer haha

Si si c'est juste que je suis une grosse flemme

Essaie ça

10exemple-7.xlsm (206.23 Ko)

My bad erreur de recalcul

Essaie cette dernière version

14exemple-7-1.xlsm (206.17 Ko)

Comment dire ... Magnifique ! Tu codes depuis longtemps ? pour voir il faut combien de temps avant d'avoir ton niveau haha

J'ai commencé quand j'étais en alternance il y a 4 ou 5 ans et on choppe vite le virus mais je suis loin d'être au niveau de certains sur ce forum

On va dire que je me débrouille pour le VBA et faire des formules complexes

En tout cas si t'as besoin de faire évoluer le fichier ou autre n'hésite pas ;)

@+

Bonjour le fil, bonjour le forum,

Une autre proposition :

Sub ThauTheme()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière ligne)
Dim LT As Integer 'déclare la variable LT (Ligne Total)

For Each O In Sheets 'boucle sur tous les onglets O du classeur
    If Not O.Name = "Summary" Then 'condition : si le nom de l'onglet O de la boucle n'est pas "Summary"
        DL = 0: LT = 0 'réinitialises les variables DL et LT
        DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la dernière ligne éditée DL de la colonne A de l'onglet O plus une
        LT = O.Cells(Application.Rows.Count, "I").End(xlUp).Row - 1 'définit la ligne LT (dernière ligne éditée de la colonne I de l'onglet O moins une)
        If LT > DL Then O.Rows(DL & ":" & LT).Delete 'supprime les ligne DL à LT si LT est supérieure à DL
    End If 'fin de la condition
Next O 'prochain onglet de la boucle
End Sub
Rechercher des sujets similaires à "comment supprimer differentes lignes mes feuilles"