If cellule1=cellule 2 then next Ifnot Delete

Résolu/Fermé
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016 - 2 sept. 2016 à 15:06
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016 - 12 sept. 2016 à 17:53
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

A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 12/09/2016 à 17:46
re,

ci joint proposition

durée pour 1 indice(auc et index)= env. 0,08 secondes

attention
extraire le zip et non l'ouvrir
http://www.cjoint.com/c/FImpPNSAGJR

code en position "essai" pour 1 indice à supprimer à la livrason
position "toutes la feuille" pr^te ' enlever les apostrohes

bonne soirée

 Michel
1
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
Modifié par Ljonnier le 12/09/2016 à 17:59
Merci beaucoup pour ton aide j'ai telecharge le fichier la, je me penche dessus, je reviens dans quelques minutes

EDIT : Alors la un grand respect et un grand merci c'est exactement ce que je cherchais a faire et ca depasse mes esperances. Il me reste a comprendre comment tu as fait maintenant, merci beaucoup !!!!
0
didmed Messages postés 2660 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 19 avril 2024 739
2 sept. 2016 à 23:15
Salut.

Il est tout à fait possible de faire un "couper-coller" des 2 colonnes et ce, 70 fois > la preuve, je l'ai fait: cela m'a pris moins de 30 minutes !!!

Cela vous intéresse-t-il ??


@+
0
didmed Messages postés 2660 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 19 avril 2024 739
2 sept. 2016 à 23:17
Il y aura évidemment 2 x 70 cases à renseigner...

@+
0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
9 sept. 2016 à 17:27
Bonjour Didmed,

je cherche un moyen de rendre ca le plus automatique possible, je vais avoir au debut plus de 60 indices et ca va augmenter petit a petit donc il faut que ca soit automatise sinon je pourrais pas m'en sortir.
0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
9 sept. 2016 à 17:27
J'ai essaye de faire le code suivant


Sub test()
Dim cell As Range
Dim I As Long
For Each cell In Range("E1:E3000")
For I = 1 To 3000
If cell.Value = "OK" Then
Else
End If
If cell.Value = "NO" Then
Range("A" & I, "B" & I).Select
Selection.Delete Shift:=xlUp
End If
Range("E2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-4]=RC[-2],""OK"",""NO"")"
Selection.AutoFill Destination:=Range("E2:E42"), Type:=xlFillDefault
Range("E2:E3050").Select

Next I
Next cell

End Sub

Mais ca ne fonctionne pas je pense que je passe a cote d'un petit detail, je ne maitrise pas bien les loop mais peut etre qu'avec un Do While ca pourrait passer ?

Voici le fichier en piece jointe

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

D'avance merci
0
didmed Messages postés 2660 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 19 avril 2024 739
9 sept. 2016 à 21:35
Salut

Honnêtement, je ne maîtrise pas ! Même si cela ressemble à du BASIC...

Bonne chance.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 sept. 2016 à 08:28
bonjour

si j'ai pigé ton pb
on a par ex dans ton classeur


tu voudrais à la place ?


alors à quoi correspond "OK" et "NO" ?

merci de répondre rapidement car tu sembles filer tes problèmes le vendredi pm pour qu'on bosse pour toi le WE ?

dans l'attente

0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
Modifié par Ljonnier le 12/09/2016 à 10:31
Bonjour Michel, non ce n'etait pas poste pour que ca soit fait le week end, je cherche avant tout a comprendre comment faire ca donc si c'est toujours pas finis a la fin de la semaine prochaine c'est pas grave j'ai le temps.
J'ai poste le soir parce que je bosse dessus la journee et j'essaie de trouver des solutions jusqu'au moment ou je bloque.

L'exemple que tu as fait, c'est exactement ca, j'aimerais arriver a avoir une correspondance des dates pour l'indice XAU + l'autre indice (on va dire indice X)

Les OK et NO sont en faite une correspondance je fais un "Si Case A1 = case C1 alors OK on passe a la suivante, si case A1 different de C1 alors suppression de A1 et B1, puis recalculer la formule Si.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
12 sept. 2016 à 14:02
bon, c'est trop compliqué à faire en vba

je m'y mettrai dès que j'aurai 2 ou 3 heures de dispo. donc...
0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
12 sept. 2016 à 14:45
Je te remercie, j'ai un peu avance dessus ce matin et y'a aussi une autre solution mais qui manuellement prend des heures c'est de faire un vlookup qui identifie les dates absentes ou non et ca donnerait donc un Si N#A apparait dans la case A2 alors supprimer B2 et C2

=VLOOKUP(B2,$D$2:$D$3038,1,FALSE)
0