Bonjour et meilleurs voeux pour cette nouvelle année qui commence !!
Je me jette sur le forum dès ce début d'année parce que j'ai mis au point une macro dont je suis très fier (je m'auto-félicite parce que y'a que moi qu'elle rend fier lol) mais qui est incomplète.
Le principe : j'ai un index de référence et un index mis à jour. La macro compare les deux et surligne, dans une nouvelle feuille, les lignes ayant évolué.
Le problème que je rencontre, c'est quand l'évolution prend la forme d'une nouvelle ligne ajoutée. Dans ce cas, ma macro incomplète n'en tient pas compte et laisse une ligne vide.
Le principe de fonctionnement étant :
Code:
If Sheets("A").Cells(i, x) = Sheets("B").Cells(j, x)
... j'ai essayé de compléter cette formule par un "Else", autrement dit, si tu ne trouves pas de valeur équivalente, alors tu fais "ça".
Mais ça ne marche pas...
J'ai trouvé une solution qui ne me satisfait pas, à savoir lancer une première comparaison (entre i et j), puis, dans un second temps, en lancer une deuxième (k) pour identifier mes lignes laissées vides et les compléter.
Ca fonctionne mais ne me satisfait pas car sur 20 lignes, c'est rapide, mais quand il y en a plsuieurs centaines, ça rallonge d'aurant...
Donc, si quelqu'un à une solution à me proposer...
Je joins un fichier exemple, avec mes 3 macros (l'incomplète, celle qui ne marche pas et celle qui ne me satisfait pas).
Y'a-t-il une colonne , titre1 peut être qui ne change jamais,
l'on pourrait alors lancer une recherche dans index pour vérifier l'existence de la ligne, si non trouvée alors on ajoute l'originale à update , sinon l'on exécute la procédure de controle des différences .
A oui , quelle est la mise en couleur dans ce cas ?
Effectivement, les données des colonnes Titre1 et Titre2 ne changent pas (mis à part l'ajout de nouvelles occurences, évidemment), mais les deux ne sont pas systématiquement renseignées. Parfois seul titre1 est identifié, parfois seul titre2. Mais en toute logique, pour les nouvelles lignes, les 2 colonnes seront renseignées.
La mise en couleur des nouveaux documents est rouge.
Rechercher dans index l'existence d'une ligne, ce n'est pas déjà ce qui est fait par la macro ? (cherche la valeur (i, x) en (j, x) ; s'il ne la trouve pas, c'est qu'elle n'existe pas). Je crois qu'il y a un raisonnement logique dans cette histoire qui m'échappe...
Bonjour Vinvol, Bonjour camarchepas. Si j'ai bien compris... en utilisant des tableaux pour vérifier / écrire , en limitant les colorations aux seules plages nécessaires et en n'utilisant pas le blanc (qui ne semble là que pour écraser les couleurs précédentes), une proposition qui semble donner le bon résultat en plus rapide. Cordialement
Effectivement tu as bien compris et le résultat est bluffant. C'est exactement ce que je recherchais et, cerise sur le gateau, ça va me permettre de décrouvir la fonction Ubound que je ne connaissais absolument pas.
Petite question cependant, pour m'aider à apprivoiser ce code et l'adapter à mon vrai fichier :
pour le code
en l'occurence , tu as du faire une erreur de variable car le tableau TFL n'a qu'une dimension contrairement à TFU.
Il suffit de regarder les variables locales dans l'éditeur VBA pour en être persuadé .
C'est effectivement là qu'était l'os. J'avais bien modifié le 12, mais je l'avais arrêté aux nombres de colonnes utiles à la comparaison, et non pas à l'intégralité des colonnes utilisés par TFL.
Il reste des zones d'ombre qu'un peu de temps, de réflexion et de tests lèveront sans aucun doute, mais pour l'heure, l'adaptation fonctionne et c'est bien le plus important.
Merci encore à vous deux, pour votre aide et votre patience.