Pourriez vous m’adapter cette formule dans le code ci-dessous de façon qu’il n’a plus besoin de la MFC et qu’il fasse le filtrage lorsque j’appelle ce code;
Sub AFFICHERDATESALERTES_21_JOURS()
Application.ScreenUpdating = False
Set WS = Sheets("STOCK")
Set Wd = Sheets("ALERTES DATES")
Wd.Range("A2:O65000").Clear
Dl = WS.Range("A" & Rows.Count).End(xlUp).Row
WS.Range("$A$2:$Q$" & Dl).AutoFilter Field:=11, Criteria1:=RGB( _
255, 255, 0), Operator:=xlFilterCellColor
WS.Range("$A$2:$Q$" & Dl).Copy Wd.Range("A2")
Wd.Range("A2:Q65000").FormatConditions.Delete
Sheets("STOCK").ListObjects("Tab_1").Range.AutoFilter Field:=11
End Sub
Ci-joint ma proposition
Faute d’un fichier exemple de ta part plus pratique pour répondre correctement à ton besoin j’ai conçu comme j’ai pu celui-ci sur la base des informations données par le code et ta formule
A l’avenir il serait bien que tu l’intègre dans ta demande
Onglet « STOCK » colonne « A » les noms colonne « K » les dates
Onglet « ALERTES DATES » avec ces mêmes colonnes pour intégration des lignes dont les dates colonne « K » sont supérieures ou égales à la date du jour + 8 et inférieures ou égales à la date du jour - 21 (de ce que j’ai relevé dans ta formule)
Onglet « STOCK » cliques sur le bouton « Traitement » et constates le résultat obtenu onglet « ALERTES DATES »
alors oui désolé de ne pas avoir de fichier modèle !
J’ai essayé ton code, il filtre bien les dates.
Je voulais faire pareil avec des dates de > à aujourd’hui et <= aujourd’hui +7 mais cela ne fonctionne pas .
Pourrai tu me dire quelle erreur est dans le second code s’il te plaît.
je ne comprends pas pourquoi avoir des données en colonne A !
Je voudrai juste qu’il me filtre les dates de la colonnes suivant les dates comme décrites au départ, tu vois ? et qu’il fasse un copier sur l’onglet ALERTES DATES colonne K. Est ce possible cher Maître ?
Sub AFFICHERDATESALERTES_7_a_21_JOURS()
Dim WS
Set WS = Sheets("STOCK")
With WS
On Error Resume Next
.AutoFilter.Range.AutoFilter 'eventuellement enlever autofilter précédent
On Error GoTo 0
.Columns("K").AutoFilter 1, ">=" & Format(Date + 8, "mm/dd/yyyy"), xlAnd, "<=" & Format(Date + 21, "mm/dd/yyyy") 'les dates entre aujourd'hui +8 et aujourd'hui +21
With .AutoFilter.Range
i1 = .Rows.Count 'nombre de lignes dans le range "autofilter"
i2 = .Columns(1).SpecialCells(xlVisible).Count 'nombre de lignes filtrées (entête inclus)
If i2 > 1 Then Set c = WS.Range("A1:Q1").Offset(1).Resize(i1 - 1) 'la plage à copier
End With
With Sheets("ALERTES DATES")
.UsedRange.Offset(1).Clear 'RAZ cette plage
If i2 > 1 Then c.Copy .Range("A2") 'coller
End With
.Columns("K").AutoFilter 'enlever l'autofilter
End With
End Sub
Le traitement a besoin de déterminer la dernière ligne à traiter
Il le fait sur la base de la dernière cellule d’une colonne ayant une donnée qu’il cible
J’ai choisi la colonne « A » n’ayant de ta part aucune indication dans ce sens
Si cette colonne pour cette démarche est un mauvais choix peux tu m’en déterminer une qui pourrait convenir : colonne « K » celle des dates ou sinon laquelle
Merci de m’aider
Ton fichier avec l’option de la colonne « K »
La ligne de code impliquée :
Dl = Ws.Range("K" & Rows.Count).End(xlUp).Row
Lettre « K » intégrée correspondant à la lettre de la colonne des dates
ne m’en veux pas FFO. Je l’ai déja vu plusieurs fois et on fait jamais comme il faut dès le départ.
Il faut toujours donner un fichier identique au réel du mieux qu’on peut, sinon vous les experts vous perdez énormément de temps et vous ne comprenez rien de ce qu’on demande et a la fin ce n’est jamais comme souhaité. Désolé.
Voici un modèle identique au réel.
Donc mon but c’est de pouvoir filtrer des dates de la colonne K de l’onglet STOCK :
entre aujourd’hui et aujourd’hui +7 jours
entre aujourd’hui +8 jours et aujourd’hui <= 21 jours.
et copier le résultat sur l’onglet RESULTAT FILTRAGE
Ci-joint ton fichier adapté
Dur dur en VBA de gérer des tableaux structuré !!!
C’est un enfer d’où ma hantise d’y être confronté
Je crois que j’y suis arrivé
A toi de tester et me dire
Merci mais cela ne fonctionne pas.
Si tu regardes l’onglet STOCK et que je lance le traitement 21 jours je devrai avoir 5 lignes, mais j’en ai qu’une !
il faut surtout oublier qu’un tableau structuré se trouve sur une feuille, donc il faut le traiter comme s’il est un objet unique sans connection avec cette feuille et utiliser les propriétes du tableau.
Si on mélange les 2, on est perdu. REEL RUBIS57.xlsm (23,7 Ko)
@FFO , cette façon de travailler, c’est comme enfoncer des vis dans le bois avec un marteau, ça marche et c’est tout.
Soit on utilise un TS comme il faut, soit on le convertit en plage ordinaire et continu « old school ».
L’essentiel et c’est la seule chose qui m’anime c’est que notre interlocuteur soit satisfait
Depuis plus de 4 ans que j’officie ici avec cette devise ce fut toujours le cas
Que demander de plus tout le monde est ravi !!!
On ne change pas une équipe qui gagne
Merci beaucoup pour ce résultat très positif
Un peu galéré avec surtout le tableau structuré mais malgré tout j’apprends et trouve des ficelles pour le gérer grâce à toi
N’oublies pas la colonne « K » qui doit toujours avoir une donnée pour cibler la dernière ligne à traiter
C’est celle des dates en toute logique puisque le traitement agit dessus il ne devrait pas y avoir de problème à ce niveau
A la prochaine pour t’aider à nouveau