Macro: Trier une colonne et supprimer des lignes, plusieurs onglets

merguez59

XLDnaute Nouveau
Bonsoir à tous,

Comme l'indique le sujet, je souhaite trier une des colonnes de chaque feuille d'un classeur (la même sur chaque onglet) et supprimer des lignes (les mêmes sur chaque onglet).

Voici en PJ un exemple.

Si vous pouviez m'éclairer sur deux façon de procéder:

1- une macro accomplissant la tâche en une fois.
2- une macro permettant d'accomplir la tache onglet par onglet

Attention, pour la 1ere façon de procéder, je ne souhaite pas que le 1er onglet (onglet synthèse) soit affecté
 

Pièces jointes

  • test.xlsx
    9.5 KB · Affichages: 60
  • test.xlsx
    9.5 KB · Affichages: 59
  • test.xlsx
    9.5 KB · Affichages: 60

Modeste

XLDnaute Barbatruc
Re : Macro: Trier une colonne et supprimer des lignes, plusieurs onglets

Bonsoir merguez59,

de chaque feuille d'un classeur
... il te faudra donc une boucle: For each f in WorkSheets

je ne souhaite pas que le 1er onglet (onglet synthèse) soit affecté
... il faudra donc ajouter un test: If f.Name <> "Synthese"

trier une des colonnes
... d'accord, mais si tu précises laquelle, c'est mieux :rolleyes:. Je présume que c'est la colonne B (puisque la première l'est déjà ... m'a-t-il semblé) f.Range("A2").CurrentRegion.Sort key1:=f.Range("B2"), Header:=xlYes

... Quant aux lignes à supprimer, je ne suis pas arrivé à deviner!?

Au stade actuel donc, on obtient donc (dans un module standard)
VB:
Sub trieTout()
For Each f In Worksheets
    If f.Name <> "Synthese" Then
        f.Range("A2").CurrentRegion.Sort key1:=f.Range("B2"), Header:=xlYes
    End If
Next f
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Macro: Trier une colonne et supprimer des lignes, plusieurs onglets

Bonjour,

si j'avais d'autres feuilles à "épargner" que ma feuille "synthese", comment rédiger? (Synthese2)
If f.Name <> "Synthese" And If f.Name <> "Synthese2" ?
Absolument :) (ne pas oublier le 'then' sur la même ligne)

Deux lignes de plus pour trouver le magasin 6 en colonne A de chaque feuille et supprimer la ligne concernée (... si magasin 6 existe dans cette feuille)
VB:
Sub trieTout()
    For Each f In Worksheets
        If f.Name <> "Synthese" And f.Name <> "Synthese 2" Then
            f.Range("A2").CurrentRegion.Sort key1:=f.Range("B2"), Header:=xlYes
            mag = Application.Match(6, f.Range("A:A"), 0)
            If Not IsError(mag) Then f.Rows(mag).EntireRow.Delete
        End If
    Next f
End Sub
 

Discussions similaires

Réponses
1
Affichages
523

Statistiques des forums

Discussions
312 890
Messages
2 093 350
Membres
105 696
dernier inscrit
FrancisR