Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'ai frotté la lampe et j'attends le génie qui saura m'aider !
J'ai une liste de "fournisseur à payer" pouvant être très longue. J'aimerais rechercher dans cette liste TOUS les fournisseurs pour lesquels le paiement est dû pour cette semaine en fonction de "Aujourd'hui".
PARTICULARITÉ, la semaine débute le lundi et se termine le dimanche.
Exemple, si nous somme le 18 août, je désire retracer tous les fournisseurs contenus entre le lundi 17 août et le dimanche 23 août.
Les résultats devront être retranscrits dans un autre tableau.
J'espère que la pièce jointe saura fournir l'info que je n'ai pas su transmettre.
Re : Recherche et retranscription de donnée de la semaine en cours
Vous êtes une machine. Bordel, mais c'est quoi ce truc? C'est impressionnant, mais je ne comprends pas comment fonctionne le GO. Est-ce que vous pouvez me donner le nom de ce que vous avez fait, de façon à aller m'instruire?
Dans mon exemple, les dates sont uniques, mais il se peut que plusieurs fournisseurs doivent être payés à la même date.
Je viens de retourner un nouveau fichier, j'espère qu'il n'est pas protégé cette fois-ci.
Re : Recherche et retranscription de donnée de la semaine en cours
Re,
Sympa : je passe du "génie" au "robot qui travaille dans une maison de plaisirs".
Ou quand la mécanique du claque l'emporte sur la technique du "clic". 😛
Quant au bouton "Go !", explications pour demain ! Je suis vanné (indice = cela ne veut pas dire Giga-octets)
Re : Recherche et retranscription de donnée de la semaine en cours
Bonjour MariePW, le Forum,
Explications
1° Il existe sous Excel une fonction avancée s'appelant "Filtre personnalisé/avancé" qui permet donc de filtrer - à partir d'une base - des données selon des critères à spécifier.
2° Ce qu'il nous faut comme ingrédients (pour le croustillant et le fondant) :
- une source (votre plage A1:C37) ;
- une base de conditions (votre plage E1:G8) ;
- un emplacement de destination (votre ligneE13:G13) ;
NB : essentiel --> les titres de ces champs doivent être identiques, à la virgule près !
a) En lançant la fonction (Ruban "Données" / Filtre avancé), une pop-up (fenêtre contextuelle) apparaît. --> Vous devez remplir tous les champs comme ci-dessous (voir image)
b) Ensuite, je "biaise" (j'ai bien écrit "biaise", hein ! 😉) le filtre avancé en lui indiquant que ma plage de conditions sur les dates (G1:G8) commence par la valeur G2, qui est égale à la cellule E11 (la donnée en rouge que vous pouvez modifier).
c) Enfin, le bordel-de-merde de bouton "Go !" n'est qu'un objet pilotant une macro exécutant tout ce que je viens d'expliquer. Une macro est une automatisation des tâches, générée par un code qui ressemble à ceci (voir ci-dessous), collé dans l'interface VBA d'Excel (Alt+F11, pour y accéder --> Feuil1) :
Code:
Private Sub BTN_GO_Click()
Range("A1:C37").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"Feuil1!Criteria"), CopyToRange:=Range("Feuil1!Extract"), Unique:=True
Range("G10").Select
End Sub
Si la partie c) vous paraît obscure, entrainez-vous* manuellement avec les filtres avancés sans tenir compte de ce point. C'est un peu plus de manipulations à faire, mais cela vous permettra de bien comprendre cette fonction fort pratique.
* Astuce : faites des tests ludiques --> n'utilisez pas des données de travail, mais personnelles, qui vous parlent : vous apprendrez beaucoup plus rapidement (moi, c'est avec mon hobby, le cinéma). 😉
* Exemple : "Dans ma famille, qui a les cheveux roux ? Est une femme/un homme ? A des lunettes ? etc." avec un tableau dédié (sachez également que vous pouvez croiser/imbriquez les conditions : "Personne de ma famille femme ET rousse ET avec des lunettes.)
Voili-voilou, je vais me prendre un big café, sur ce.
Re : Recherche et retranscription de donnée de la semaine en cours
Bonjour MariePW, ralph45,
Passer par ici après "la machine" ... je me fais un peu l'effet de Fabrice Luchini qui suivrait Schwarzenegger dans un couloir étroit 🙄
En pièce jointe, un essai par formules.
J'ai utilisé la dernière colonne du tableau (parce qu'elle était vide) pour afficher, par formule, le n° de ligne, si la date est comprise entre le lundi et le dimanche de la semaine en cours. Dans le tableau récapitulatif, la fonction INDEX, combinée à PETITE.VALEUR ... c'est un peu le même principe que celui proposé ici il y a à peine une quinzaine de jours ... en définitive, la proposition ne convenait pas ou n'était pas "transposable"?
D'aucuns ne manqueront pas de mentionner -avec raison- qu'on pourrait arriver à répondre à la demande avec un TCD. Voir les propositions de chris ici et de JCGL ici (les 2 seraient évidemment à adapter)
Re : Recherche et retranscription de donnée de la semaine en cours
Merci Modeste, c'est exactement ce que je désirais. Effectivement, si j'étais meilleure ou plus avancée, j'aurais été en mesure d'adapter la solution d'il y a 2 semaines, mais j'ai encore BEAUCOUP de croûte à manger avant d'être en mesure de composer de tel combinaison...
Chacune de vos réponses double mes connaissances.
Merci Ralph45! Je vais étudier ça et réussir. Je me heurte pour le moment à des problèmes de noms... J'ai bien vu votre mise en garde et collé/copie mes noms d'en-tête, mais bon, je vais chercher ailleurs et réussir, car c'est plein de belles nouvelles solutions à ma disposition.
Re : Recherche et retranscription de donnée de la semaine en cours
Bonjour à tous,
Bonjour Marie 🙂
Une alternative avec la fonction de tableau Filter, trop peu utilisée à mon goût 🙁
VB:
Sub Semaine_en_cours()
Dim x, deb As Date, fin As Date
'deb = Evaluate("=" & CLng(Date) & "-MOD(" & CLng(Date) & "-2,7)")
deb = Date - Weekday(Date - 1) + 1
fin = IIf(Weekday(Date) = 1, Date, Date + 8 - Weekday(Date))
With Sheets("Feuil1").Range("a1").CurrentRegion.Columns("A:C")
x = Filter(.Parent.Evaluate("transpose(if((" & .Columns(3).Address & ">=" & CLng(deb) & ")*(" & _
.Columns(3).Address & "<=" & CLng(fin) & "),row(1:" & .Rows.Count & "),char(2)))"), Chr(2), 0)
If UBound(x) > -1 Then
.Range("I10").Resize(UBound(x) + 1, .Columns.Count).FormulaLocal = _
Application.Index(.Value, Application.Transpose(x), Evaluate("column(" & .Rows(1).Address & ")"))
Else
MsgBox "Aucune donnée"
End If
End With
End Sub
Re : Recherche et retranscription de donnée de la semaine en cours
Bonjour Klin89 et 1 p ki 100 vo V te tu !
Je ne suis pas encore rendu au VBA dans mon évolution et je ne sais pas ce que c'est qu'un TCD. Mais je conserve vos suggestions pour plus tard. Je vous remercie énormément.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD