Signification d'un code

stephcic

XLDnaute Junior
Bonjour,

je débute en VBA et je bosse sur un fichier comprenant le code ci-dessous :

Sub SupLignesFiltreAuto()
[BE7].AutoFilter Field:=1, Criteria1:="FAUX"
Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
[BE7].AutoFilter
End Sub

Quelqu'un pourrait il me déchiffer ce code car il plante ?

Merci d'avance

Steph
 

Tirou

XLDnaute Occasionnel
Re : Signification d'un code

Code:
Sub SupLignesFiltreAuto()
  [BE7].AutoFilter Field:=1, Criteria1:="FAUX"
Applique un filtre depuis la case BE7 sur toutes les cases directement en dessous jusque la première case vide.
Masque toute la liste ainsi repérée

Code:
  Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
      Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
Effectue une suppression de donnée à partir des données toujours visibles de ce qui a été appelé _FilterDataBase dans les étiquettes excel.

Code:
  [BE7].AutoFilter
End Sub

Retire le filtrage automatique.


Bon, je ne suis pas certain de moi, ça dépends un peu de _FilterDataBase, mais je pense que ton bout de code fait la suppression de presque toutes les données. Les données supprimées sont toutes les lignes à partir de la première cellule vide en descendant depuis la cellule BE7
 

stephcic

XLDnaute Junior
Re : Signification d'un code

ce bout de code ne fonctionne pas et je n'arrive pas à voir pourquoi.
le but est de supprimer toutes lignes qui ne correspondent pas à un critère choisi dans un formulaire.
Si l'utilisateur choise le code 33900 par exemple, le code est sensé supprimé toutes les lignes de l'onglet qui ne comportent pas ce code en colonne A
 

Tirou

XLDnaute Occasionnel
Re : Signification d'un code

Question 1)
Est-ce que tu peux placer de manière non confidentielle ton classeur ici ? ça sera plus simple

Question 2)
Y a-t-il une donnée dans la cellule BE7? si non, c'est normal que ça plante.

Question 3)
Est-ce que le filtrage dont tu parles en colonne A était déjà en place ou c'est à toi de le mettre? Parce que avec le code présenté, tu es loin de la colonne A ... et encore plus de l'intégration d'un critère de recherche (là ton critère de filtrage pour suppression est "on garde tout ou presque)
 

stephcic

XLDnaute Junior
Re : Signification d'un code

voici mon fichier édulcoré, j'ai gardé la même mise en forme afin de pouvoir adapter votre réponse.
Donc, à l'ouverture du fichier, un formulaire apparait.
l'utilisateur choisit un code et en faisant OK, la macro ne doit conserver (normalement) que les lignes correspondantes au code choisi.
Sauf que cela bugue.
j'espère que cela vous permettra de me dépanner
Merci d'avance.
 

Pièces jointes

  • exemple.xlsm
    35.6 KB · Affichages: 62
  • exemple.xlsm
    35.6 KB · Affichages: 54
  • exemple.xlsm
    35.6 KB · Affichages: 52

Tirou

XLDnaute Occasionnel
Re : Signification d'un code

Salut,

Voilà qui devrait t'aller.
J'ai viré le passage par les filtres automatiques, je n'arrivais pas à filtrer facilement comme je le voulais (cad afficher tous les éléments sauf un particulier" c'est surement faisable, mais pas envie de me prendre la tête)

Du coup, la technique utilisée : on balaye la plage et si c'est différent du critère, on supprime.

A te relire
 

Pièces jointes

  • exemple.xlsm
    40 KB · Affichages: 66
  • exemple.xlsm
    40 KB · Affichages: 66
  • exemple.xlsm
    40 KB · Affichages: 58

Tirou

XLDnaute Occasionnel
Re : Signification d'un code

Tes en-têtes de colonnes se situent à quelles lignes? est-ce que la colonne de critère d'agence est bien la A? est-ce qu'il y a des données initiales (s'il n'y a que les en-têtes, oui, ça va planter) ?

Plus tu me donnes d'infos, plus je peux t'aider efficacement
 

Paf

XLDnaute Barbatruc
Re : Signification d'un code

Bonjour à tous

un aménagement du code initial:
on sélectionne le site dans l'userform, puis on transmet sa valeur dans la sub SupLignesFiltreAuto

dans la UserForm
Code:
Private Sub OK_Click()
    SupLignesFiltreAuto ChoixSite.Value 'appel la sub de suppression avec le nom du site à supprimer
    
    Unload UserForm1
    MsgBox "Veuillez enregistrer le fichier sur votre disque avec le nom de votre choix de type CLASSEUR EXCEL", vbOKOnly, "DERNIERE ETAPE"
    Application.Dialogs(xlDialogSaveAs).Show
End Sub
Dans le Module1

Code:
Sub SupLignesFiltreAuto(MonSite)
 Dim WS1 As Worksheet, DerLig As Long

 Set WS1 = Worksheets("par tiers - lien drel")

 DerLig = WS1.Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne utile du tableau
 If Not WS1.AutoFilterMode Then WS1.Range("A7:AP7").AutoFilter
    
 WS1.[A7].AutoFilter Field:=1, Criteria1:=MonSite 'filtre selon le site selectionné
 
 WS1.Range("A7:AP" & DerLig).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp 'supprime les lignes visibles
  
End Sub

A+
 

Tirou

XLDnaute Occasionnel
Re : Signification d'un code

Salut Paf,

Attention, ton code supprime justement les lignes utiles et laisses celles à virer (cf #5)

Salut stephcic

Chez moi, les entêtes de colonnes sont conservées. Est-ce que tu constates la suppression directement dans mon fichier ou est-ce une fois collé chez toi? Dans ce second cas, qu'est-ce qui change entre ton fichier et le miens ? (structure de la feuille? )

A te relire
 

Discussions similaires

Réponses
2
Affichages
118

Statistiques des forums

Discussions
312 238
Messages
2 086 491
Membres
103 234
dernier inscrit
matteo75654548