Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

BUG sur Filtre Auto en macro ?

4 réponses
Avatar
lolo
Salut à toutes et à tous,
Est ce moi (je crois) ou y a t-il un bug dans Excel.

J'utilise cette macro pour extraire les valeurs uniques par ligne,
comprises entre les lignes A4 et C250 et je recopie les résultats
uniques à partir de CA4.

" Range("A4:C250").AdvancedFilter Action:=xlFilterCopy,
copytorange:=Range("CA4"), unique:=True "

Je me suis aperçu que la 1ere ligne en A4 était recopiée 2 fois en CA4
et CA5 si elle existait au minimum 2 fois, en A4 et A5. Je pense que la
1ere copie CA4 doit donc servir d'en-tête de colonne. J'ai donc une
autre macro qui me recopie les données qu'a partir de CA5, comme cela je
n'utilise pas la ligne d'en-tête.

Mon probléme vient lorsque la 1ere ligne en A4 est unique.
Lorsque j'applique ma macro de filtre, ma ligne est recopiée sans être
dupliquée, et donc lorsque j'applique ma 2eme macro de recopie, cette
ligne est ignorée car elle se trouve en CA4 uniquement.
Comment faire pour avoir les valeurs uniques par ligne en prenant en
compte mes lignes uniques si il y en a.

Merci d'avance.

4 réponses

Avatar
michdenis
Bonjour Lolo,

Essaie de cette façon en adaptant le nom de la feuille où se retrouvent tes données.

Cette procédure va recopier toutes tes données (sans les en-têtes de colonne) en évitant d'y inclure les doublons trouvés.

'-------------------------
Sub FiltreElabore()

Application.ScreenUpdating = False
With Worksheets("Feuil1") 'à déterminer
With .Range("A4:C250")
.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.Item(1, 1), unique:=True
.Offset(1).SpecialCells(xlCellTypeVisible).Copy _
Sheets(.Parent.Name).Range("CA4")
.Parent.ShowAllData
End With
End With

End Sub
'-------------------------


Salutations!




"lolo" a écrit dans le message de news: 433722b2$0$11140$
Salut à toutes et à tous,
Est ce moi (je crois) ou y a t-il un bug dans Excel.

J'utilise cette macro pour extraire les valeurs uniques par ligne,
comprises entre les lignes A4 et C250 et je recopie les résultats
uniques à partir de CA4.

" Range("A4:C250").AdvancedFilter Action:=xlFilterCopy,
copytorange:=Range("CA4"), unique:=True "

Je me suis aperçu que la 1ere ligne en A4 était recopiée 2 fois en CA4
et CA5 si elle existait au minimum 2 fois, en A4 et A5. Je pense que la
1ere copie CA4 doit donc servir d'en-tête de colonne. J'ai donc une
autre macro qui me recopie les données qu'a partir de CA5, comme cela je
n'utilise pas la ligne d'en-tête.

Mon probléme vient lorsque la 1ere ligne en A4 est unique.
Lorsque j'applique ma macro de filtre, ma ligne est recopiée sans être
dupliquée, et donc lorsque j'applique ma 2eme macro de recopie, cette
ligne est ignorée car elle se trouve en CA4 uniquement.
Comment faire pour avoir les valeurs uniques par ligne en prenant en
compte mes lignes uniques si il y en a.

Merci d'avance.
Avatar
AV
Un filtre élaboré nécessite absolument une étiquette de colonne (en général le
nom du champ si la BD est correctement organisée)

AV
Avatar
lolo
Bonjour,
En fait j'utilisais le filtre éalboré pour extraire les lignes uniques.
La seule solution serait donc de mettre une ligne "qui ne sert à rien"
et de la sélectionnée en tant qu'etiquette ?

Un filtre élaboré nécessite absolument une étiquette de colonne (en général le
nom du champ si la BD est correctement organisée)

AV




Avatar
Comres.metz
Bonjour,

Absolument génial, c'est exactement ce que je cherchais.
J'étais déja en train de rajouter une ligne vierge au dessus de mon tri.....
Merci beaucoup pour ce coup de main.

"michdenis" a écrit dans le message de
news:
Bonjour Lolo,

Essaie de cette façon en adaptant le nom de la feuille où se retrouvent
tes données.


Cette procédure va recopier toutes tes données (sans les en-têtes de
colonne) en évitant d'y inclure les doublons trouvés.


'-------------------------
Sub FiltreElabore()

Application.ScreenUpdating = False
With Worksheets("Feuil1") 'à déterminer
With .Range("A4:C250")
.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.Item(1, 1), unique:=True
.Offset(1).SpecialCells(xlCellTypeVisible).Copy _
Sheets(.Parent.Name).Range("CA4")
.Parent.ShowAllData
End With
End With

End Sub
'-------------------------


Salutations!




"lolo" a écrit dans le message de news:
433722b2$0$11140$

Salut à toutes et à tous,
Est ce moi (je crois) ou y a t-il un bug dans Excel.

J'utilise cette macro pour extraire les valeurs uniques par ligne,
comprises entre les lignes A4 et C250 et je recopie les résultats
uniques à partir de CA4.

" Range("A4:C250").AdvancedFilter Action:=xlFilterCopy,
copytorange:=Range("CA4"), unique:=True "

Je me suis aperçu que la 1ere ligne en A4 était recopiée 2 fois en CA4
et CA5 si elle existait au minimum 2 fois, en A4 et A5. Je pense que la
1ere copie CA4 doit donc servir d'en-tête de colonne. J'ai donc une
autre macro qui me recopie les données qu'a partir de CA5, comme cela je
n'utilise pas la ligne d'en-tête.

Mon probléme vient lorsque la 1ere ligne en A4 est unique.
Lorsque j'applique ma macro de filtre, ma ligne est recopiée sans être
dupliquée, et donc lorsque j'applique ma 2eme macro de recopie, cette
ligne est ignorée car elle se trouve en CA4 uniquement.
Comment faire pour avoir les valeurs uniques par ligne en prenant en
compte mes lignes uniques si il y en a.

Merci d'avance.