Microsoft 365 Code pour tri avec critère

Marvin57

XLDnaute Occasionnel
Bonjour à tout le monde,

dans mon fichier ci-joint je peux faire un tri en appuyant le bouton de l'onglet ACCUEIL.

Ce tri se fait sur l'onglet Feuil1 colonne Comptage.
D'après mon petit code il doit me faire un tri de toutes les lignes du tableau qui ont le chiffre 1 en colonne K et m'afficher ce tri sur l'onglet Feuil2.

Jusqu'ici cela fonctionne, enfin d'après mes premiers test.

Mais, si je clique sur le bouton et que aucun 1 se trouve dans la colonne K, il m'affiche le tableau complet sur l'onglet Feuil2.

Pourriez-vous me guider S'il vous plaît pour modifier ce code afin que l'action du bouton fonctionne uniquement si dans la colonne K se trouve un ou plusieurs 1.

Merci d'avance à vous pour votre aide.

Marvin57
 

Pièces jointes

  • Marvin57 critère tri.xlsm
    21.3 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
Bonjour

tu confonds tri et filtre
ta macro fait un FILTRE

ensuite, quand tu fais la copie.. tu copies TOUTE la table, quelle soit filtrée ou pas

essaie cette macro
VB:
Sub AFFICHERALERTESQTE() 'AFFICHER LES ALERTES QUANTITES
    Application.ScreenUpdating = False
    'On Error Resume Next 'Supprimer cette ligne car elle empeche de voir les bugs potentiels du code
    Set ws = Sheets("Feuil1")
    Set wd = Sheets("Feuil2")
    With wd.ListObjects(1)
        If .ListRows.Count <> 0 Then
            .DataBodyRange.ClearContents  'avec la table de la feuille wd, on vide le databodyrange
        End If
        .Resize wd.Range("A1:K2") 'on redimensionne la table avec juste une ligne d'entete + une ligne de données (vide)
    End With


    With ws.ListObjects(1)
        .Range.AutoFilter field:=11, Criteria1:=1 'on filtre sur la colonne 11 = K
        .DataBodyRange.SpecialCells(xlCellTypeVisible).Copy Destination:=wd.ListObjects(1).DataBodyRange
    End With
    ws.ListObjects("Tableau1").Range.AutoFilter 'on supprime les filtre
 
End Sub
 

Marvin57

XLDnaute Occasionnel
Bonjour

tu confonds tri et filtre
ta macro fait un FILTRE

ensuite, quand tu fais la copie.. tu copies TOUTE la table, quelle soit filtrée ou pas

essaie cette macro
VB:
Sub AFFICHERALERTESQTE() 'AFFICHER LES ALERTES QUANTITES
    Application.ScreenUpdating = False
    'On Error Resume Next 'Supprimer cette ligne car elle empeche de voir les bugs potentiels du code
    Set ws = Sheets("Feuil1")
    Set wd = Sheets("Feuil2")
    With wd.ListObjects(1)
        If .ListRows.Count <> 0 Then
            .DataBodyRange.ClearContents  'avec la table de la feuille wd, on vide le databodyrange
        End If
        .Resize wd.Range("A1:K2") 'on redimensionne la table avec juste une ligne d'entete + une ligne de données (vide)
    End With


    With ws.ListObjects(1)
        .Range.AutoFilter field:=11, Criteria1:=1 'on filtre sur la colonne 11 = K
        .DataBodyRange.SpecialCells(xlCellTypeVisible).Copy Destination:=wd.ListObjects(1).DataBodyRange
    End With
    ws.ListObjects("Tableau1").Range.AutoFilter 'on supprime les filtre
 
End Sub
Bonjour vgendron,

Merci pour le retour.

Mais il me donne une erreur si je place votre code dans mon fichier. Voir image jointe
erreur.jpg
 

vgendron

XLDnaute Barbatruc
Bonjour vgendron,

Merci pour le retour.

Mais il me donne une erreur si je place votre code dans mon fichier. Voir image jointe
Regarde la pièce jointe 1176836
l'erreur n'intervient elle pas lorsque le filtre ne donne aucune ligne??
dans ce cas, il faut ajouter un test pour voir s'il y a bien au moins une ligne à copier
avec un truc du genre
if .databodyrange.specialcells..... .count<>0 (à tester)
 

Marvin57

XLDnaute Occasionnel
l'erreur n'intervient elle pas lorsque le filtre ne donne aucune ligne??
dans ce cas, il faut ajouter un test pour voir s'il y a bien au moins une ligne à copier
avec un truc du genre
if .databodyrange.specialcells..... .count<>0 (à tester)
Re,

je comprends ce que vous voulez dire avec

....avec un truc du genre
if .databodyrange.specialcells..... .count<>0 (à tester)

et le placer ou ?
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
809
Réponses
11
Affichages
365
Réponses
2
Affichages
360
Réponses
15
Affichages
704
Réponses
9
Affichages
353
Réponses
11
Affichages
716
Réponses
13
Affichages
397
Réponses
9
Affichages
896

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki