Nettoyer une feuille de classeur grâce à VBA

Bonjour'

J'ai une feuille excel dont j'aimerais ne retenir que certaines informations, c-a-d en supprimer certaines'

J'aimerais juste garder le nom + prenom de chaque personne et par qui il a été ajouté

on supprime donc les 2 autres lignes si elles existent ...

Je demande cela en VBA car le fichier réel contient plus de 1000 lignes et il est confidentiel

voici en pièce jointe un fichier exemple

21liste.xlsx (8.27 Ko)

Salut Kass,

facile... et pas facile...

Si ton fichier est structuré de façon identique pour chaque membre, quelques lignes suffisent.

Combien de lignes sont imparties par membre ? 6 systématiquement? Y a-t-il une ou plusieurs lignes vides entre eux ?

Que faut-il faire des lignes nettoyées ? Les laisser en place ou ramener vers le haut et ainsi resserrer le fichier ?

Pas besoin de tes infos confidentielles mais un bout de fichier d'origine bidouillé nous arrangerait pour ne pas faire de bêtises!

A+


Voici un début de solution en supposant que ton fichier est structuré comme prévu.

Private Sub CommandButton1_Click()
'
iFlag = Range("A" & [65000]).End(xlUp).Row
'
For x = iFlag To 1 Step -7
    Range("A" & x - 1 & ":A" & x).EntireRow.Delete shift:=xlUp
Next
'
End Sub

Tu règles le FOR NEXT (To ...)sur la dernière ligne du 1er membre et le Step sur le nombre de lignes de chaque membre + le nombre de lignes vides de séparation (ici, j'ai supposé 6 lignes d'infos + 1 ligne de séparation).

C'est réglé pour ramener les blocs d'infos restants vers le haut.

A+

Bonjour,

le fichier est structuré comme suit :

-ligne vide

nom prenom

lieu ou profession

membre

ajouté par

-ligne vide

nom prenom

etc...

sauf que pour certains membres ils manquent le lieu ou profession donc on se retrouve comme suit :

-ligne vide

nom prenom

ajouté par

merci de votre aide

les lignes vides peuvent êtres effacés

le nom et prénom peut être mis en gras par exemple pour y voir plus clair

et mettre juste en dessous "ajouté par..."

merci de votre aide

Bonjour Kass,

voici ton fichier!

Avant de le lancer, il te faut régler la valeur de la boucle FOR NEXT sur la première ligne de ton fichier.

Ici, comme tu vois, j'ai mis 7 (l'ordi ne reconnaît pas les noms, c'est bête, hein?).

Private Sub CommandButton1_Click()
'
Application.ScreenUpdating = False
'
iFlag = Range("A" & [65000]).End(xlUp).Row
'
For x = 7 To iFlag
    If x = 7 Then
        Cells(7, 1).Font.Bold = True
    Else
        If Range("A" & x).Value = "" Then
            Rows(x).Delete xlShiftUp
            Cells(x, 1).Font.Bold = True
        Else
            If Left$(Cells(x, 1), 6) <> "Ajouté" Then
                Rows(x).Delete xlShiftUp
                x = x - 1
            End If
        End If
    End If
Next
'
Application.ScreenUpdating = True
'
End Sub

Bien à toi,

A+

13liste.xlsm (18.82 Ko)

merci bien

marche parfaitement

Rechercher des sujets similaires à "nettoyer feuille classeur vba"