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
300
Réponses
11
Affichages
188
Réponses
2
Affichages
124
Réponses
15
Affichages
362
Réponses
9
Affichages
137
Réponses
11
Affichages
481
Réponses
13
Affichages
144
Réponses
9
Affichages
652
Réponses
8
Affichages
395
Réponses
6
Affichages
363

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea