VBA Classer par ordre croissant selon critère texte dans plusieurs plages

Bonjour le Forum,

J'ai besoin de créer une fonction en VBA (domaine dans lequel je ne comprends rien lol) qui me permettrait de classer des dates par ordre croissant par rapport à un critère texte situé dans plusieurs plages.

Je vous joint ci dessous un fichier exemple qui explique plus précisément mon problème et mes besoins.

J'espère que quelqu'un pourra m'aider et merci d'avance pour ceux qui m' apporterons leur aide.

Bien Cordialement,

Ps: je voudrais éviter une solution via une macro

Bonjour

Plutôt que VBA tu peux utiliser PowerQuery intégré à ta version Excel

J'ai

  • homogénéisé les titres des tableaux
  • redimensionner les tableaux à leur contenu : un tableau structuré ne doit JAMAIS contenir de ligne vides
    (le formules et formats se recopient quand on ajoute une ligne sous le tableau, ligne qui s'intègre automatiquement
  • créé une requête

Actualiser par Données, Actualiser Tout

Tu peux enlever la colonne A&B des tableaux si elle ne sert pas

Tu peux ajouter des tableaux dont le nom commence par Table : ils seront pris en compte

Pour tout autre tableau ne devant pas être pris en compte, le nom ne doit pas commencer par Table

17noms-dates-pq.xlsx (54.31 Ko)

Bonjour 78chris et merci pour ta réponse rapide,

Je ne connais pas du tout PowerQuery, peux-tu m' expliquer comment as-tu fait pour avoir les résultats souhaités stp.

Si j'ai d'autres tableaux dans mon fichier qui commencent par Tab, dois-je les renommés pour qu'ils ne soient pas pris en compte?

Cordialement,

RE

Comme indiqué le nom doit commencer par Table pour que ce soit pris en compte et tout autre début de nom n'est pas pris en compte

Pour lancer l'éditeur et voir ce qui a été fait : Données, Obtenir des données, lancer l'éditeur PowerQuery

A droite la liste des étapes

En dehors de la première étape de Synthese, le reste est fait depuis les options des onglets ou du clic droit

On peut voir le contenu d'une étape en cliquant sur le rouage au bout de sa ligne

Si tu as des questions sur certaines étapes, reposte

Désolé,

J'ai été dans le Menu Données mais je ne trouve pas "Obtenir des données"

RE

Tu as bien 2016 comme indiqué dan ton profil ?

Sur PC ?

Oui je suis bien sur PC et je pense bien être en Excel 2016 (mon achat du Pack Office date de moins de 4 ans) mais je n'arrive à retrouver cette information...

Re 78chris,

Quand je suis dans ton fichier et dans ton onglet "PowerQuery", je vois quand je suis dans ton tableau:

sous Menu "Données externes"

Acces

Web

Fichier texte

Autres sources

Connexions éxistantes

mais tout est en gris sauf quand je me place dans une cellule hors du tableau.

Dans un autre fichier,

Quand je vais dans le menu données, j'ai en haut à gauche le sous menu "Récupérer et transformer":

Données externes (tout est grisé à l'intérieur)

Nouvelle requête

Afficher les requêtes

à partir d'un tableau

Sources récentes

En fait je ne vois nulle part "Obtenir des données"

Ou dois-je aller pour voir ce que tu as fait dans ton fichier ?

et ou dois-je aller dans le mien pour y reproduire ce que tu as fait?

Cordialement

RE

Quand tu lances Excel la version s'affiche

Je n'ai plus 2016 (PC tombé en panne)

Sur 2019 c'est aussi Obtenir des données

Il ne faut pas se placer dans le tableau résultat mais à côté ou en dessous

Tu peux utiliser Afficher les requêtes

Bonjour 78chris,

Je n'ai pas encore eu le temps de tester ta solution via le PowerQuery mais je pense pouvoir m'en sortir. Au pire je reviendrais demander de l'aide.

Du coup, j'aurais une autre question concernant son utilisation, je voudrais savoir s'il était possible de reporter dans un autre tableau une valeur dans une colonne adjacente toujours par rapport aux noms et tout en gardant l'ordre chronologique des dates ?

Merci d'avance,

Bonjour

Pas compris ta question trop vague

Précise

Re,

Dans mon fichier exemple il y a les dates et des noms associés dans chaque tableau mais dans mon véritable fichier, j'ai d'autres colonnes à droite des noms avec des valeurs que j'aimerais reportées comme dans le tableau "classement" des dates mais en remplaçant les dates par ces valeurs tout en gardant l'ordre chronologique des dates tous tableaux confondus.

autrement dit, c'est comme-ci je rajoutait dans mon exemple une colonne à droite des noms avec des références texte du type "Hd", "Pe" etc. que j'aurais besoin de classer toujours dans l'ordre chronologique des dates de chaque tableau.

J'espère que tu m'as compris sinon je peux compléter mon fichier exemple pour illustrer mes propos.

RE

Si l'idée est de faire une synthèse identique au tableau de classement mais avec autre chose que les dates, oui c'est possible ou si l'idée est d'associer d'autres colonnes avant ou après le nom dans le tableau de classement c'est faisable aussi.

Bonjour 78chris,

J'ai délaissé un peu le sujet à cause du covid mais me revoilà sain et sauf! J’espère d'ailleurs que tout s'est bien passé de ton coté...

Je pensais pouvoir me débrouiller avec power query mais je ne m'en sors pas du tout lol, je n'arrive pas à reproduire ce que tu as fait sur le fichier exemple dans mon véritable fichier.

Est-ce qu'on peut reprendre étape par étape stp.

Dois-je aller dans afficher les requêtes pour voir comment tu as fait ?

Car quand j'ouvre ton fichier, je vais dans l'onglet "Données" puis "Afficher les requêtes", je vois 2 requêtes apparaître sur la droite de ma feuille mais il y a sur la première qui s'appelle Synthèse un panneau attention Téléchargement non effectué. Quand j'essaie de l'actualiser voila le message affiché: Expression.Error : Désolé... Nous n'avons pas pu trouver une table Excel nommée « Tableau1!_FilterDatabase ».

Peux-tu me diriger car je ne sais pas du tout quoi faire ni même si c'est la bonne méthode pour récupérer ta procédure.

Merci.

Bonjour

Il doit y avoir dans ton classeur un nom Tableau1!_FilterDatabase (voir gestionnaire de noms).

Or la requête prend tous les noms qui commence par Table (tes tableaux étant nommés Tableau1 à Tableaux) : du coup ce nom pose problème

Il faudrait le supprimer ainsi que ses éventuels copains de même style

Après tu peux effectivement voir les étapes des requêtes (volet de droite) et leur détail via le rouage et si quelque chose n'est pas clair, reposter

Si je comprend bien, je dois reporter toutes les requêtes de ton fichier dans le mien donc voila quand je clique droit sur la première requête "Synthèse" je clique modifier et je vois donc qu'il y a 17 étapes appliquées, la première se nomme "Source".

Comment je fait pour définir mes sources (qui sont dans véritable fichier des tableaux commençant tous par Base)?

RE

Si le nom des tableaux structurés commence par Base : tu modifies le filtre à l'étape 2

Par défaut il prend tout ce qui est nommé

En fait je ne comprend pas comment reporter de ton fichier vers le mien.
Je dois simplement faire un copier / coller sur la requête "Synthese" de ton fichier et la recopier dans mon fichier ou je dois regarder ce que tu as fait et le reproduire étape par étape ?

Re

En principe tu peux copier coller les 2 requêtes

As-tu bien le tableau Liste_Noms dans l'onglet Noms à classer

On demande toujours un classeur représentatif : cela évite ce genre de problème où rien ne correspond...

Je commence à comprendre, j'ai réussi a copier coller mais effectivement ça bloque avec la correspondance des noms de colonnes et également le fameux noms à classer.

Pour les noms des colonnes, je les ai changé dans l'étape Content développé par contre je n'ai pas trouvé pour changer le nom "Noms à classer" et "Liste de noms".

Rechercher des sujets similaires à "vba classer ordre croissant critere texte plages"