' le filtre élaboré a besoin d'une colonne de donnée avec etiquette
' donc pour ne pas mettre cette etiquette dans la liste on se décale d'une ligne vers le bas
Remarques
Si le premier enregistrement des données d'origine est en double, il apparaît deux fois dans la nouvelle liste. Masquez simplement la première ligne.
Si vous exécutez la commande Filtre élaboré sur place, la feuille contient encore tous les enregistrements. Les enregistrements doubles sont masqués. Pour contourner ce problème, pointez sur Lignes dans le menu Format, puis cliquez sur Afficher.
Sub Exemple() ' maintenant cela fonctionne dans tout les cas 'toto = Array("x", "a", "c", "b", "b", "c", "a") toto = Array("c", "a", "c", "b", "b", "c", "a") Range("A1").Value = "Ma liste" For i = 2 To UBound(toto) + 2 Range("A" & i).Value = toto(i - 2) Range("B" & i).Value = i - 1 Next MsgBox "on va maintenant traiter les doublons" Range("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True 'ce qui suit est encore une autre "affaire" : ' VBA ne détruit pas (comme on pourrait s'y attendre", les doublons ! il se contente de masquer les lignes ! ' il nous faut donc rétablir nous-mêmes la situation ... Dim c As Range, cunion As Range For Each c In ActiveSheet.UsedRange.Rows If c.Hidden = True Then If cunion Is Nothing Then Set cunion = c Else Set cunion = Application.Union(c, cunion) End If End If Next c If Not cunion Is Nothing Then cunion.EntireRow.Delete End If End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim couic As Range Set couic = Range("A:A").Find(Range("A1").Value, LookIn:=xlValues) If Not couic Is Nothing Then couic.EntireRow.Delete End If Set couic = Nothing
Private Sub supp_doublons(colonne As Range, ligne1 As Integer, ligne2 As Integer) Application.ScreenUpdating = False Rows(ligne1).Insert Shift:=xlUp Cells(ligne1, colonne.Address).Value = Chr(0) Range(Cells(ligne1, colonne.Column), Cells(ligne2 + 1, colonne.Column)).AdvancedFilter Action:=xlFilterInPlace, Unique:=True Dim c As Range, couic As Range For Each c In Range(Cells(ligne1, colonne.Column), Cells(ligne2 + 1, colonne.Column)).Rows If c.Hidden = True Then If couic Is Nothing Then Set couic c Else Set couic Application.Union(couic, c) End If Next c couic.EntireRow.Delete Cells(ligne1, colonne.Column).EntireRow.Delete Application.ScreenUpdating = True End Sub
'supp_doublons Columns("B"), 6, 12 'ou, à son gré supp_doublons Columns(2), 6, 12
Private Sub supp_doublons(colonne As Range, ligne1 As Integer, ligne2 As Integer) Dim c As Range, zone As Range, couic As Range Application.ScreenUpdating = False Rows(ligne1).Insert Shift:=xlUp Cells(ligne1, colonne.Address).Value = Chr(0) Set zone = Range(Cells(ligne1, colonne.Column), Cells(ligne2 + 1, colonne.Column)) zone.AdvancedFilter Action:=xlFilterInPlace, Unique:=True For Each c In zone.Rows If c.Hidden = True Then If couic Is Nothing Then Set couic c Else Set couic Application.Union(couic, c) End If Next c If Not couic Is Nothing Then couic.EntireRow.Delete Cells(ligne1, colonne.Column).EntireRow.Delete Set zone Nothing: Set couic Nothing Application.ScreenUpdating = True End Sub
Filtrer à l'aide de critères élaborés
Insérez, au-dessus de la plage, au moins trois lignes vides qui peuvent être utilisées comme plage de critères. Cette plage doit posséder des étiquettes de colonne. Veillez à laisser au moins une ligne vide entre les valeurs des critères et la plage.
Exemple de présentation de ces éléments
Type Vendeur Ventes
Type Vendeur Ventes
Boissons Suyama 5 122
Viande Bartoli 450
Produit Beaune 6 328
Produit Bartoli 6 544
Dans les lignes situées sous les étiquettes de colonne, entrez les critères de comparaison.
Exemples de critères
Plusieurs conditions dans une seule colonne
Si vous voulez appliquer au moins deux conditions à une seule colonne, tapez les critères directement les uns en dessous des autres dans des lignes distinctes. Par exemple, la plage de critères suivante affiche les lignes qui contiennent « Bartoli », « Beaune » ou « Suyama » dans la colonne Vendeur.
Vendeur
Bartoli
Beaune
Suyama
Une condition dans deux colonnes ou davantage
Pour rechercher des données qui remplissent une condition dans plusieurs colonnes, tapez tous les critères dans la même ligne de la plage de critères. Par exemple, la plage de critères suivante affiche toutes les lignes qui contiennent « Produit » dans la colonne Type, « Bartoli » dans la colonne Vendeur et un montant de ventes supérieur à 1 000 euros.
Type Vendeur Ventes
Produit Bartoli >1 000
Une condition dans une colonne ou dans une autre
Pour rechercher des données qui remplissent soit une condition dans une colonne, soit une condition dans une autre colonne, tapez les critères dans des lignes différentes de la plage de critères. Par exemple, la plage de critères suivante affiche toutes les lignes qui contiennent soit « Produit » dans la colonne Type, soit « Bartoli » dans la colonne Vendeur, soit un montant de ventes supérieur à 1 000 euros.
Type Vendeur Ventes
Produit
Bartoli
>1 000
Un des deux jeux de conditions pour deux colonnes
Pour rechercher des lignes qui remplissent un des deux jeux de conditions, comprenant chacun des conditions pour plusieurs colonnes, tapez les critères dans des lignes distinctes. Par exemple, la plage de critères suivante affiche les lignes qui contiennent à la fois « Bartoli » dans la colonne Vendeur et un montant de ventes supérieur à 3 000 euros, et celles qui affichent « Beaune » dans la colonne Vendeur et un montant de ventes supérieur à 1 500 euros.
Vendeur Ventes
Bartoli >3 000
Beaune >1 500
Plus de deux jeux de conditions pour une colonne
Pour rechercher des lignes qui remplissent plus de deux jeux de conditions, incluez plusieurs colonnes ayant le même en-tête de colonne. Par exemple, la plage de critères suivante affiche les ventes comprises entre 5 000 et 8 000 en plus de celles qui sont inférieures à 500.
Ventes Ventes
>5 000 <8 000
<500
Conditions créées par le calcul d'une formule
Vous pouvez utiliser comme critère une valeur calculée par une formule. Dans ce cas, n'utilisez pas une étiquette de colonne comme étiquette de critère. Conservez l'étiquette de critère vide ou utilisez une étiquette qui ne soit pas une étiquette de colonne de la plage. Par exemple, la plage de critères suivante affiche les lignes dont la valeur contenue dans la colonne C est supérieure à la moyenne des cellules C7:C10.
=C7>MOYENNE($C$7:$C$10)
Remarques
La formule que vous utilisez pour une condition doit faire appel à une référence relative pour faire référence à l'étiquette de colonne (par exemple, Ventes) ou au champ correspondant dans le premier enregistrement. Toutes les autres références au sein de la formule doivent être des références absolues, et la formule doit prendre la valeur VRAI ou FAUX. Dans l'exemple de formule, « C7 » fait référence au champ (colonne C) pour le premier enregistrement (ligne 7) de la plage.
Vous pouvez utiliser une étiquette de colonne dans la formule au lieu d'une référence de cellule relative ou d'un nom de plage. Si Microsoft Excel affiche une erreur de valeur telle que #NOM? ou #VALEUR! dans la cellule qui contient le critère, ignorez ce message, car il est sans conséquence sur les modalités de filtrage de la plage.
Lors de l'évaluation de données, Microsoft Excel ne distingue pas les majuscules des minuscules.
Tous les éléments commençant par ce texte sont filtrés. Par exemple, si vous tapez le texte Dav comme critère, Microsoft Excel trouve « David » et « Davis ». Pour rechercher uniquement le texte spécifié, tapez la formule suivante, où texte correspond au texte recherché : =''=texte''
Pour rechercher des valeurs de texte qui contiennent certains caractères mais pas d'autres, utilisez un caractère générique.
Caractères génériques
Les caractères génériques suivants peuvent être utilisés comme critères de comparaison pour des filtres, ainsi que lors de la recherche et du remplacement d'un contenu.
Utilisez Pour rechercher
? (point d'interrogation) un seul caractère
Par exemple, p?rt trouve « port » et « part ».
* (astérisque) un nombre quelconque de caractères
Par exemple, *Est trouve « Nord-Est » et « Sud-Est ».
~ (tilde) suivi de ?, *, ou ~ un point d'interrogation, un astérisque ou un tilde
Par exemple, fy91~? trouve « fy91? ».
Cliquez sur une cellule de la plage.
Dans le menu Données, pointez sur Filtrer, puis sur Filtre avancé.
Pour filtrer la plage en masquant les lignes qui ne remplissent pas les critères, cliquez sur l'option Filtrer la liste sur place.
Pour filtrer la plage en copiant dans un autre emplacement de la feuille de calcul les lignes qui correspondent aux critères, cliquez sur l'option Copier vers un autre emplacement, cliquez dans la zone Destination, puis sur l'angle supérieur gauche de la zone dans laquelle vous souhaitez coller les lignes.
Dans la zone Zone de critères, tapez la référence de la plage de critères, y compris les étiquettes de critère.
Pour déplacer temporairement la boîte de dialogue Filtre avancé pendant que vous sélectionnez la plage de critères, cliquez sur Réduire la boîte de dialogue .
Pour modifier la manière dont les données sont filtrées, modifiez les valeurs de la zone de critères, puis recommencez le filtrage des données.
Conseils
Vous pouvez nommer une plage Critères et afficher ainsi automatiquement la référence à la plage dans la zone Zone de critères. Vous pouvez aussi spécifier le nom Base de données pour la plage de données à filtrer, et le nom Extraire pour la plage dans laquelle vous souhaitez coller les lignes. Ces plages apparaîtront alors automatiquement dans les zones Plage et Destination.
Quand vous copiez des lignes filtrées vers un autre emplacement, vous pouvez spécifier les colonnes à inclure dans la copie. Avant de procéder au filtrage, copiez les étiquettes des colonnes souhaitées vers la première ligne de la zone dans laquelle vous envisagez de coller les lignes filtrées. Lors du filtrage, saisissez une référence aux étiquettes de colonne copiées dans la zone Destination. Les lignes copiées incluront alors uniquement les colonnes dont vous avez copié les étiquettes.