Mise en forme tables de valeur

Bonjour,

Je débute tout juste sur Excel VBA et j'aurais besoin d'un petit coup de pouce sur une macro de mise en forme d'un fichier Excel ! Mon problème est le suivant : je n'arrive pas à supprimer les lignes inutiles de mon fichier et à faire en sorte que toutes les lignes restantes soient rangées les unes à la suite des autres.

En parcourant le forum j'ai vu qu'il était plutôt déconseillé de passer par une bouche for pour ce type de manipulations, il semblerait que la méthode AutoFilter soit plus adaptée. Cependant, je n'ai pas réussi à m'en servir. Il faudrait que j'arrive à détecter systématiquement dans la colonne A le premier élément de la cellule et supprimer la ligne en question si la cellule ne contient pas pour premier élément "S".

Je met en pièce jointe le fichier dont il est question, si quelqu'un a une idée d'une manière simple pour faire cela et veut bien m'expliquer la méthode ce serait super, merci d'avance !

4my-file.xlsx (12.18 Ko)

Voici une macro à tester :

Sub melch()

derLig = Sheets("SheetJS").Cells(Rows.Count, 1).End(xlUp).Row

For i = derLig To 2 Step -1
    If Not Left(Cells(i, 1), 1) = "S" Then Cells(i, 1).EntireRow.Delete
Next

End Sub

Pour information, quand on veut supprimer des lignes, c'est toujours plus simple de partir d'en bas et de remonter, ça éviter de sauter des lignes à supprimer.

Super, merci beaucoup pour ton aide et tes explications, la macro fonctionne !

Le code est facilement compréhensible même pour un novice, et effectivement c'est plus logique de partir d'en bas pour remonter je n'y avais pas du tout pensé

Bonjour Captp, melch, le forum,

Une variante avec autofilter....

Sub methode_filtre()       'supprime les lignes filtrées

Dim dl As Integer

Application.DisplayAlerts = False

With Sheets("SheetJS")
 dl = .Range("A" & Rows.Count).End(xlUp).Row
      .Range("A1:C" & dl).AutoFilter Field:=1, Criteria1:="<>S*"
      .Range("A2:C" & dl).SpecialCells(xlCellTypeVisible).Delete
      .ShowAllData
End With

Application.DisplayAlerts = True
End Sub

Cordialement,

Merci à tous les deux, pour les deux méthodes !

Re,

Merci pour ton retour, , ravi que ton problème soit réglé.

Pense à clôturer le sujet,

A bientôt,

Rechercher des sujets similaires à "mise forme tables valeur"