Microsoft 365 RESOLU Trie en VBA à partir d'une base

Bambi35

XLDnaute Occasionnel
Bonjour à tous
Je viens vers vous pour de l'aide.
Je cherche à partir des informations de la Feuille "Base" d'obtenir sur la feuille "Résultat "une liste dans l'ordre alphabétique en colonne "E" en passant par du VBA
Un premier trie sur la Feuille "Base" de la colonnes "N" pour enlever les "Appr"
Puis sur la colonne "B" enlever les ID commençant par "FH;HM;HA"
et transféré le résultat des colonnes "B;C;D;H;L;M;N;P" sur la feuille "Résultat" en colonnes "A;B;C;D;E;F;G;H"
avec un ordre alphabétique sur la colonne "E"
Je vous ai déjà demandé il y a quelque temps de l'aide sur d'autres sujets mais là je m'arrive pas.


Merci de votre aide


Bambi35
 

Pièces jointes

  • Trie.xlsx
    20.6 KB · Affichages: 7

chris

XLDnaute Barbatruc
Bonjour à tous

Une unique formule 365 en cellule A4 de Résultat
après mise sous forme de tableau structuré nommé Rapport du tableau initial
VB:
=CHOISIRCOLS(LET(t;LET(cd;Rapport[Decision];cid;Rapport[ID];FILTRE(Rapport;(Rapport[Decision]<>"Appr")*(GAUCHE(Rapport[ID];2)<>"FH")*(GAUCHE(Rapport[ID];2)<>"HM")*(GAUCHE(Rapport[ID];2)<>"HA")));ct;CHOISIRCOLS(t;12);TRIERPAR(t;ct));2;3;4;8;12;13;14;16)
 
Dernière édition:

Bambi35

XLDnaute Occasionnel
Effectivement, il y a un souci avec mon fichier, je vois que le tableau d'origine reste sous forme de plage et pas de table
ceci dit.. ca n'explique pas pourquoi ca fonctionne toujours chez moi..
vgendron
Pourquoi je ne vois pas ton script ?
Effectivement, il y a un souci avec mon fichier, je vois que le tableau d'origine reste sous forme de plage et pas de table
ceci dit.. ca n'explique pas pourquoi ca fonctionne toujours chez moi..
 

vgendron

XLDnaute Barbatruc
avec le dernier fichier posté (post 15) j'ai refait la requete avec la table structurée "Tab_Rapport"

et le script est celui ci
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Tab_Rapport"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Item", type text}, {"ID", type text}, {"Rev", type text}, {"Name", type text}, {"Creation Date", type datetime}, {"Item Rev", type text}, {"Status", type text}, {"WF", type datetime}, {"Current", type text}, {"Responsible", type text}, {"Completion", type datetime}, {"Sign", type text}, {"role", type any}, {"Decision", type text}, {"Decision Date", type text}, {"Comments", type text}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Item", "Creation Date", "Item Rev", "Status", "Current", "Responsible", "Completion", "Decision Date"}),
    #"Texte en majuscules" = Table.TransformColumns(#"Colonnes supprimées",{{"ID", Text.Upper, type text}}),
    #"Lignes filtrées" = Table.SelectRows(#"Texte en majuscules", each ([Decision] = "Ouvr")),
    #"Lignes filtrées1" = Table.SelectRows(#"Lignes filtrées", each not Text.StartsWith([ID], "FH") and not Text.StartsWith([ID], "HM") and not Text.StartsWith([ID], "HA")),
    #"Lignes triées" = Table.Sort(#"Lignes filtrées1",{{"Sign", Order.Ascending}})
in
    #"Lignes triées"
 

Bambi35

XLDnaute Occasionnel
vgendron

Merci de ton retour mais dans le fichier Excel
je n'ai que dans la feuil1

Private Sub CommandButton1_Click()
Sheets("Résultat").Range("A3").ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
Je n'ai aucun autre script
Pourquoi ?
D'habitue il y a des modules avec des script
J'ai due loupé quelque chose
Désolé
 

vgendron

XLDnaute Barbatruc
vgendron

Merci de ton retour mais dans le fichier Excel
je n'ai que dans la feuil1

Private Sub CommandButton1_Click()
Sheets("Résultat").Range("A3").ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
Je n'ai aucun autre script
Pourquoi ?
D'habitue il y a des modules avec des script
J'ai due loupé quelque chose
Désolé
C'est un script Power Query.. pas de vba

la ligne de code VBA, c'est juste pour remplacer un clic droit/actualiser sur la table de résultat
 

vgendron

XLDnaute Barbatruc
Euh... tu as déjà tous les éléments depuis un certain temps.
bon. on va essayer de donner quelques éléments

1) dans la feuille "Rapport"
ton tableau ETAIT une simple plage de données
une ligne d'entete en ligne 3; et les données de la ligne 4 à la ligne 43

Maintenant, c'est une Table structurée
selectionne une cellule au hasard (A3 par exemple), ==> dans le ruban Excel, un onglet "Création" apparait
Quand tu le selectionnes, tu vois à gauche le "Nom du tableau" ==> Tab_Rapport

2) pour trier, filtrer cette table structurée, tu as eu plusieurs solutions
- par formule
- par VBA (macro avec du code dans des modules)
- par Power Query==> utilisation de requetes
quand on écrit un script PQ, la plage de données initiale est automatiquement transformée en table strucuturée si c'en est pas déjà une..


quan les données de la table "Tab_Rapport" changent
- par formule==> rien à faire, la mise à jour se fait toute seule
-par VBA, il faut executer la macro (par un clic sur ton bouton (l'utilisation de l'évènement change ou _activate permet de se passer de ce clic)
- par Power Query, il faut aller sur le tableau de résultat (Feuille Résultat), clic droit / actualiser
si tu cliques sur le tableau de résultat, un nouvel onglet apparait dans le ruban: "Requête"
dans celui ci, tu choisis l'option "Modifier la requête" et l'éditeur Power query s'ouvre
et la, tu peux voir le détail du script PQ

les menus décrits sont tels que je les vois sur Excel 2010.. ca a certaienement changé sur ta version, mais le principe reste le meme
 

Discussions similaires