Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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





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

chris

XLDnaute Barbatruc
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

 

Mondigus

XLDnaute Nouveau
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 Accro
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 :

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
681
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…