If cellule1=cellule 2 then next Ifnot Delete

Résolu
Ljonnier Messages postés 33 Statut Membre -  
Ljonnier Messages postés 33 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Ljonnier Messages postés 33 Statut Membre
       
      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
  2. didmed Messages postés 2654 Date d'inscription   Statut Membre Dernière intervention   845
     
    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
    1. didmed Messages postés 2654 Date d'inscription   Statut Membre Dernière intervention   845
       
      Il y aura évidemment 2 x 70 cases à renseigner...

      @+
      0
    2. Ljonnier Messages postés 33 Statut Membre
       
      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
  3. Ljonnier Messages postés 33 Statut Membre
     
    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
    1. didmed Messages postés 2654 Date d'inscription   Statut Membre Dernière intervention   845
       
      Salut

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

      Bonne chance.
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Ljonnier Messages postés 33 Statut Membre
       
      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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Ljonnier Messages postés 33 Statut Membre
         
        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
    2. Ljonnier Messages postés 33 Statut Membre
       
      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