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

XL 2010 Glissement de cellules en fonction de 2 caractères

fastingsenna

XLDnaute Nouveau
Bonjour la communauté, j'espère que vous allez tous très bien,

Je rencontre un problème dans mon travail :
Nous disposons de deux tableaux : le premier "tb_j" correspond à celui d'aujourd'hui et "tb_j_1" à celui de la veille (on importe tous les jours un nouveau tableau J et le tableau J de la veille se retrouve en J-1).
On souhaite remplir les cellules J, J-1, J-2, J-3 et J-4 au fur et à mesure des jours.
Pour le tableau "tb_j", dans la cellule J on y introduit le dépassement du jour, dans J-1 celui de la veille, dans J-2 celui de l'avant-veille ... jusqu'à J-4.

Problème :
J'ai essayé de réaliser le processus cherché avec la fonction RECHERCHEV d'excel en concaténant les cellules "liste" avec "regle" pour obtenir le dépassement chercher dans les différentes cellules J et J-1.
Cela fonctionne très bien sauf que la liste de fonds comporte plusieurs milliers de cellules et la fonction met énormément de temps pour remplir les cellules une à une avec cette méthode.

Solution :
Je souhaiterais créer une macro en VBA afin de réaliser cette tâche, je ne vois pas comment m'y prendre, sans doute avec deux boucles qui match liste avec règle, si c'est bon, on y introduit le dépassement de la veille dans J-1. Pour faire glisser les valeurs des cellules J à chaque nouveau jour, je ne vois vraiment pas comment faire. Si quelqu'un lis ce message et comprends où je veux en venir, merci de m'aider dans cette tâche qui me semble légèrement complexe, sinon, vous pouvez me demander davantage d'informations si je n'ai pas été assez clair.

Je vous remercie vraiment de votre quelconque aide.
Très bonne journée à vous,

Un utilisateur déjà comblé par Excel Downloads

PS : je vous joins le fichier simplifié en PJ, merci.
 

Pièces jointes

  • Dashboard.xlsx
    12 KB · Affichages: 3

Deadpool_CC

XLDnaute Accro
Bonjour,
Il serait beaucoup plus simple de partir d'un tableau avec tes données datées, et de construire les tableaux de résultat attendus avec des formules.
Donc à mon avis commence par ajouter un onglet data ou tu va cumuler toutes tes données si cela est possible
En plus si tu as plusieurs remonté/saisie de données dans la journée tu pourra prendre soit une moyenne, soit la somme, soit la dernière réprésentative (en fonction de l'heure par exemple.
Tout dépend du contexte d'utilisation !
A+
 

fastingsenna

XLDnaute Nouveau
Bonjour,
Le tableau de la feuille J est dynamique et change tous les jours (même nombre de lignes mais l'ordre d'apparition des champs change) et pour la feuille J-1 on copie simplement le tableau J de la veille. Le but est de compléter les colonnes J jusqu'à j-4 tous les jours. Il faudrait une boucle qui parcourt "liste" et une dans "règle", on concatène les champs "liste" et "règle" (car pour un même fonds il y a plusieurs règles) à chaque itération de la boucle puis on va dans le tableau J-1 rechercher le champ concaténé (dans mon exemple API front & error<2% dans le tableau J-1, s'il trouve le champ : on affiche le dépassement (7.2 dans l'exemple) dans la colonne J-1 du tableau J, puis chaque jour, on fait glisser les valeurs (j-1 devient j-2, j-2 devient j-3...)
Faire un onglet data revient à faire la même chose finalement je pense (d'après de ce que j'ai compris dans ton message).
Merci à toi, bonne journée
 

Gégé-45550

XLDnaute Accro
Bonjour,
D'après les rares données qui figurent dans votre fichier de test, il semblerait que la liste des données de J est identique à celle de J-1, seul leur ordre est différent.
Est-ce bien le cas ?
Si oui, la fonction de tri incluse dans vos tableaux structurés, sur la colonne 'Règle', simplifiera déjà bien les choses.
Ensuite, un petite macro décalant vers la droite chaque colonne de la feuille J-1 et important les données de la feuille J dans la colonne de gauche sera facile à écrire.
Cordialement
 

Gégé-45550

XLDnaute Accro
A la lecture de cette dernière info, je complète mon message précédent (modifié en inversant évidemment J et J-1) : il conviendrait de faire deux tris, un sur la colonne 'Liste' et un seul la colonne 'Règle'.
 

fastingsenna

XLDnaute Nouveau
Bonjour,
Oui c'est bien le cas, seul l'ordre change. Et bah merci je n'y avait pas pensé et cela marche très bien.
Merci à toi.
Très bonne journée
 

fastingsenna

XLDnaute Nouveau
Le tri d'une colonne suffit pour trier la seconde non ?
Est-ce que la fonction Offset(0, 1) serait suffisante pour décaler les résultats ?
Merci.
 

Gégé-45550

XLDnaute Accro
Le tri d'une colonne suffit pour trier la seconde non ?
Oui bien sûr. Mais si par exemple vous avez en Colonne 'Liste' et 'Règle'
API fronterror<2%
puis quelque part
API backerror<2%
vous préférerez peut-être regrouper tous les API front, ou inversement.
Dans ce cas, la fonction 'Filtre' des tableaux structurés ne conviendra pas (de base, on ne peut filtrer que sur une seule colonne à la fois). Il faudra alors utiliser la fonction 'Tri' d'Excel.
 

fastingsenna

XLDnaute Nouveau
Pas obligatoirement mais ce choix est excellent, merci beaucoup à vous.
 

fastingsenna

XLDnaute Nouveau
Je reviens vers vous car finalement c'est plus complexe que cela : la fonction tri marche bien, seulement, les règles peuvent être modifiées et/ou supprimer et certains fonds supprimés aussi, donc s'il y a un changement sur une cellule, tout le tableau est "cassé" donc cette méthode n'est pas possible.
La seule façon de procéder est de matcher fonds et listes et chercher dans J-1. Une solution que je vais essayer est d'utiliser type instructions et un dictionnaire, chaque champ aura un ID unique et on pourra tenter de faire matcher comme ça. Je publierai la réponse si cela marche.
Bonne journée
 

Gégé-45550

XLDnaute Accro
Si vous avez un fichier avec un peu plus de données pour mieux comprendre le problème à résoudre, j'essaierai de chercher une solution de mon côté. Par exemple, la notion de 'fonds' ne faisait pas partie de la question jusqu'à présent.
 

fastingsenna

XLDnaute Nouveau
On veut dans mon exemple : trouver les champs API front & error<2% du tableau J dans le tableau J-1, une fois que les champs est trouvé dans J-1, on copie le dépassement indiqué dans le tableau J-1, dans la colonne J-1 du tableau J à la ligne du champ API front & error<2%. Plus de données n’est pas utiles je pense pour comprendre le problème, après je pourrais vous en envoyer un si vous ne comprenez toujours pas.
Bonne journée
 

Gégé-45550

XLDnaute Accro
Dans la logique précédente et avant de se lancer dans un VBA forcément plus lent, il est possible de créer dans chacun des tableau J et J-1 une colonne supplémentaire concaténant les champs 'Liste' & 'Regle' puis de faire le tri sur cette nouvelle colonne clé, non ?
Ensuite la petite macro dont on a déjà parlé (et ça peut même certainement être fait facilement "à la main").
Qu'en pensez-vous ?
 

Discussions similaires

Réponses
4
Affichages
430
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…