If cell1 = cell2 next Ifnot Delete

Bonjour,

Dans le fichier ci-joint j'ai une grande base de donnee avec plusieurs indices boursiers. Je souhaite prendre comme valeur de reference le cours de la once d'or XAU Currency. La quotation commence au 01/01/2005 et s'arrete au 23 aout 2016. Mon soucis c4est aue j'aimerais faire correspondre les quotations de XAU aux autre quotations.

Je m'explique avec un exemple concret;

24/03/2005 425.47 24/03/2005 3026

25/03/2005 424.88 29/03/2005 3017

28/03/2005 426.1 30/03/2005 3027

29/03/2005 426.45 31/03/2005 3003

Les deux premiere colonne ( date + valeur) correspondent a XAU, les deux colonnes suivantes correspondent a VG1 index.

On peux voir que le decalage se fait apres le 24 Mars, il suffirait juste de supprimer le 25/03 et le 28/03 de la premiere colonne avec leur quotes correspondantes pour retrouver l'equilibre et donc arriver a ca :

24/03/2005 425.47 24/03/2005 3026

29/03/2005 426.45 29/03/2005 3017

30/03/2005 427.95 30/03/2005 3027

31/03/2005 428.24 31/03/2005 3003

Et j'ai ce probleme sur des collonnes de 2800 cellules, et j'en ai un peu plus de 60 donc je ne peux pas le faire manuellement..

Auriez vous, dans l'ideal, un code VBA permettant de me mettre a niveau mes colonnes ?

voici le fichier avec toute mes donnees:

https://www.cjoint.com/c/FIcnfxQnhf7

D'avance merci

vous n'avez pas besoin de macro...

vous pouvez insérer une colonne vide et dans ses cellules entrer une formule qui retourne une erreur lorsqu'elle ne trouve pas de date de cotation XAU dans la colonne des dates de cotations VG1. Ensuite trier par cette colonne. Ensuite supprimer toutes les lignes ayant cette formule en erreur. Ensuite trier à nouveau par la colonne contenant les dates.

La formule est =VLOOKUP(E2,$G$2:$G$3038,1,FALSE).

Je joins le fichier.

10book2.xlsx (136.11 Ko)

Merci stefano.gatto pour votre reponse. La formule fait ressortir les erreurs mais ne les corrige pas, je bloque sur la formule ou la partie du code qui va permettre de supprimer les cellules responsable de l'erreur du coup ca donnerais If CellA = Cell B Then next ifnot delete the concerned cells

Je trouve des codes ou des formules pour supprimer la ligne entiere mais pas les cellules specifiees. Est-ce que avec un Offset ou quelque chose du genre ca pourrrait fonctionner ?

non elle ne les corrige pas mais vous signale quelles lignes il faut supprimer.

En lisant mes instructions vous verrez comment les regrouper (en les triant) pour ensuite les supprimer toutes ensemble.

Enfin il faudra re-trier dans l'ordre initial, cad par la date de cotation XAU.

Dites-moi si ça ne marche pas.

Effectivement ca marche bien et je vous remercie, mais ca marche dans le cas ou j'ai tres peu de date a trier, car ca prend quand meme pas mal de temps, j'ai un peu plus de 60 indices et certainement plus par la suite donc si vous avez une idee pour automatiser la chose je suis preneur car le soucis actuel c'est que ca va me prendre la journee pour trier une par une les valeurs ....

ok j'ai compris. Oui dans ce cas il faut une macro qui aligne 2 séries de dates et qui peut le faire pour une suite prédéfinie de couples de séries de dates...

Ce n'est pas difficile, il suffit de faire une boucle qui teste l'égalité des dates et supprime la cellule du "mauvais" côté.

Ensuite il faut appeler cette procédure pour tous les couples de colonnes.

Quelque chose dans ce style:

For lngRow = 2 to 3000 
    if cells(lngRow,,lngCol)=cells(lngRow,lngCol+2) then
        'ne rien faire
    else
        cells(lngrow,lngCol+2).Delete xlShiftUp   'suppression date intruse
        cells(lngrow,lngCol+3).Delete xlShiftUp   'suppression cotation intruse
    endif
next lngRow

pas sûr de la syntaxe mais l'aide online devrait vous aider. Dites-moi si vous avez un problème à faire cette macro

Bonjour Stephano,

ca m'a l'air bon, le seul probleme est que la macro prend enormement de temps avant de se terminer, j'imagine qu'il est difficile de faire plus rapide du fait de l'utilisation d'une boucle.... et je ne peux jamais arriver au bout de la macro. Mon ordinateur n'est surement pas assez puissant

j'ai rajoute ces lignes en debut et fin de macro pour normalement accelerer la chose mais ca reste impossible a completer :

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

...... Macro .....

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

Auriez vous une idee pour arranger ce probleme ?

oui, effectivement la méthode range.delete est lente.

Dans ce cas je ne vois rien d'autre qu'automatiser la séquence manuelle que je recommandais, afin de pouvoir l'exécuter sur toutes les quotations. Je n'ai pas de code pour ça, mais je pense que j'utiliserais l'enregistreur et que j'aménagerais une boucle ensuite.

Merci pour vos reponses, je vais me pencher sur l'enregistreur de macro.

Encore merci

Rechercher des sujets similaires à "cell1 cell2 next ifnot delete"