If cellule1=cellule 2 then next Ifnot Delete

[Résolu/Fermé]
Signaler
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016
-
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016
-
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

4 réponses

Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

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 !!!!
Messages postés
2585
Date d'inscription
dimanche 19 décembre 2004
Statut
Membre
Dernière intervention
12 septembre 2021
771
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 ??


@+
Messages postés
2585
Date d'inscription
dimanche 19 décembre 2004
Statut
Membre
Dernière intervention
12 septembre 2021
771
Il y aura évidemment 2 x 70 cases à renseigner...

@+
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

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.
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

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
Messages postés
2585
Date d'inscription
dimanche 19 décembre 2004
Statut
Membre
Dernière intervention
12 septembre 2021
771
Salut

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

Bonne chance.
Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221
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

Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

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.
Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221 >
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

bon, c'est trop compliqué à faire en vba

je m'y mettrai dès que j'aurai 2 ou 3 heures de dispo. donc...
Messages postés
31
Date d'inscription
lundi 15 août 2016
Statut
Membre
Dernière intervention
23 novembre 2016

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)