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.
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
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
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)
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)