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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Bonjour,
Une proposition en attache
Bonjour,
C'est super très beau travail ! Je vous remercie, cependant, est-ce que si une règle vient à disparaître ou à être modifiée cela fonctionne tout de même ?
J'ai commencé avec plusieurs variables types et un dictionnaire, je pense que cela marchera très bien aussi, je publierai à la suite de cette discussion mon fichier avec le code si jamais quelqu'un est intéressé.
Encore merci à vous pour votre temps, très bonne soirée.
 
Bonjour,
C'est super très beau travail ! Je vous remercie, cependant, est-ce que si une règle vient à disparaître ou à être modifiée cela fonctionne tout de même ?
J'ai commencé avec plusieurs variables types et un dictionnaire, je pense que cela marchera très bien aussi, je publierai à la suite de cette discussion mon fichier avec le code si jamais quelqu'un est intéressé.
Encore merci à vous pour votre temps, très bonne soirée.
Le code proposé ne prend en compte que les règles contenues dans le tableau J, autrement dit, celles qui sont dans J-1 et pas dans J sont ignorées (on pourrait modifier le code pour les reprendre, mais est-ce utile si elles ne réapparaissent pas au bout de 4 jours ?).
C'est pour ça que j'ai volontairement modifié le tableau J-1 dans le fichier que j'ai envoyé, en ajoutant des items non présents dans J.
J'utilise la concaténation dans le dictionnaire
On peut très bien utiliser la concaténation dans le code, effectivement.
 
Le code proposé ne prend en compte que les règles contenues dans le tableau J, autrement dit, celles qui sont dans J-1 et pas dans J sont ignorées (on pourrait modifier le code pour les reprendre, mais est-ce utile si elles ne réapparaissent pas au bout de 4 jours ?).
C'est pour ça que j'ai volontairement modifié le tableau J-1 dans le fichier que j'ai envoyé, en ajoutant des items non présents dans J.

On peut très bien utiliser la concaténation dans le code, effectivement.
Attention, j'ai oublié un Exit For dans le code que je vous ai envoyé, son absence ralentit inutilement le code.
Voici la bonne version
VB:
If CleJ(0) = CleJm1(0) Then
                DataJour.Cells(i, 6) = CleJm1(1)
                DataJour.Cells(i, 7) = CleJm1(2)
                DataJour.Cells(i, 8) = CleJm1(3)
                DataJour.Cells(i, 9) = CleJm1(4)
                Exit For                'oubli dans la version précédente'
            End If
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour