XL 2019 Récupérer nom de feuille

Mondigus

XLDnaute Nouveau
Bonjour à tous!
j'ai un fichier pour traiter mes factures fournisseurs.
Afin de pouvoir réaliser mon TB, j'ai besoin d'une feuille que j'ai appelée "Synthèse" qui regroupe toutes les factures saisies. J'ai donc modifié le code bouton "Ajouter" du formulaire "Saisir facture" afin d'obtenir les factures saisies.
Le petit bémol est que les données sont bien copiées dans la feuille "Synthèse" mais sans le nom de la feuille qui lui corresponde.
Quelqu'un pourrait-il m'aider à trouver ce qui manque à mon code stp.
Merci
 

Pièces jointes

  • suivi-fournisseur-06.xlsm
    294.4 KB · Affichages: 8
Solution
Bonsoir @Mondigus
  • Pour la première erreur, as-tu créé le tableau structuré "tb_Synthèse" ?
    Place toi sur une ligne de la zone de résultat, onglet Accueil, Mettre sous forme de tableau, choisis un style à ta convenance, vérifie la zone présélectionnée, coche Mon tableau comporte des en-têtes, change le nom du tableau (ici tableau4 par tb_Synthèse) :

    1665509279127.png
    1665509840605.png


    1665509606642.png
    1665509651090.png


  • Pour la seconde : c'est de ma faute, j'avais commencé une modification que je n'ai pas annulée
    Dans la pièce jointe j'ai modifié le code de ce CommandButton "CmdAjout" pour inclure ma macro.
    Voir la pièce jointe (n'oublie pas de modifier le codename de la feuille de synthèse en...

Mondigus

XLDnaute Nouveau
Bonjour
En homogénéisant les noms des tableaux et les titres des colonnes cela se fait sans VBA par PowerQuery en quelques clics
Une simple actualisation suffit ce qui, outre les nouvelles factures, met à jour les retards

Regarde la pièce jointe 1151947
Bonjour @chris
Ta proposition me semble bon à prendre.
Je vais faire des recherches sur power Quercy et te reviens si je suis bloqué !
Merci pour ton aide.
 

chris

XLDnaute Barbatruc
Dernière édition:

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonne nuit les noctambules,
J'essaie de m'approprier PowerQuery, et je me fais plaisir ...
J'ai normalisé le nom des tableaux et leurs en-têtes par macro (voir le module "mdl_AtTheOne")

@chris, avec l'aide de tes infos, j'ai créé le tableau SynthèsePowerQuery dans la feuille éponyme.
8 étapes m'ont été nécessaires :
1665536815881.png

Voici ce que donne l'éditeur avancé :
Enrichi (BBcode):
let
    Source = Excel.CurrentWorkbook(),
    #"Lignes filtrées" = Table.SelectRows(Source, each Text.StartsWith([Name], "Fact_")),
    #"Content développé" = Table.ExpandTableColumn(#"Lignes filtrées", "Content", {"N° Facture", "Date facture", "Montant HT", "Montant TTC", "Date échéance", "Retard/Avance", "Etat"}, {"N° Facture", "Date facture", "Montant HT", "Montant TTC", "Date échéance", "Retard/Avance", "Etat"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Content développé",{{"Name", "Fournisseur"}}),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées",{{"Date facture", type date}, {"Date échéance", type date}, {"Montant HT", Currency.Type}, {"Montant TTC", Currency.Type}}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Type modifié","Fact_","",Replacer.ReplaceText,{"Fournisseur"}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Valeur remplacée",{"Fournisseur", "N° Facture", "Date facture", "Montant HT", "Montant TTC", "Date échéance", "Retard/Avance", "Etat"}),
    #"Lignes triées" = Table.Sort(#"Colonnes permutées",{{"Date échéance", Order.Ascending}, {"Fournisseur", Order.Ascending}})
in
    #"Lignes triées"

Pour les deux types de synthèse, j'ai lancé la mise à jour pour l'une, l'actualisation pour l'autre, lors de l'activation de la feuille. Pour les 162 lignes les temps sont à peine différents (avec un petit avantage pour la macro, ce qui m'étonne !).

Voilà, voir pièce jointe, j'arrête et je me couche 😵‍💫 🥱😴

Amicalement
Alain
 

Pièces jointes

  • suivi-fournisseur-AtThOne.xlsm
    300.3 KB · Affichages: 2

chris

XLDnaute Barbatruc
Bonjour

Nickel

En général j'inverse les actions en commençant par les actions qui peuvent se faire avant le développement du contenu
VB:
let
    Source = Excel.CurrentWorkbook(),
    #"Lignes filtrées" = Table.SelectRows(Source, each Text.StartsWith([Name], "Fact_")),
    #"Colonnes renommées" = Table.RenameColumns(#"Lignes filtrées",{{"Name", "Fournisseur"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Fournisseur", "Content"}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Colonnes permutées","Fact_","",Replacer.ReplaceText,{"Fournisseur"}),
    #"Content développé" = Table.ExpandTableColumn(#"Valeur remplacée", "Content", {"N° Facture", "Date facture", "Montant HT", "Montant TTC", "Date échéance", "Retard/Avance", "Etat"}, {"N° Facture", "Date facture", "Montant HT", "Montant TTC", "Date échéance", "Retard/Avance", "Etat"}),
    #"Type modifié" = Table.TransformColumnTypes(#"Content développé",{{"Date facture", type date}, {"Date échéance", type date}, {"Montant HT", Currency.Type}, {"Montant TTC", Currency.Type}}),
    #"Lignes triées" = Table.Sort(#"Type modifié",{{"Date échéance", Order.Ascending}, {"Fournisseur", Order.Ascending}})
in
    #"Lignes triées"

Mais c'est détail.
 

Discussions similaires

Réponses
2
Affichages
664

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT