Comment retrouver la bonne ligne ?

bonsoir à tous,

j'ai une question pour laquelle je ne vois pas de solutions, peut être serez vous plus inventif que moi !

voilà le sujet, nous recevons régulièrement des fichiers ayant 14 000 lignes reprenant des tarifs

A partir de ce fichier, j'ai crée des liaisons sur un autre fichier afin d'obtenir des tarifs bien spécifiques

mon problème est du au fait que l'ordre des tarifs est parfois modifié par l'ajout ou la suppression de lignes

ce qui réduit à néant mes liaisons

comment faire pour que les liaisons soient toujours avec les bons tarifs malgré les modifications de l'ordre des lignes tarifaires ?

merci pour vos lumières

Bonjour

Utiliser une fonction de recherche à partir du Code article

RECHERCHEV est en général tout indiquée.

Cordialement

Bonsoir,

il faudrait balayer les 14000 lignes et

mettre à jour les nouveaux tarifs sur ton fichier (pas besoin de liaison)

Une macro fera çà très bien,

envoie des extraits des 2 feuilles (structures réelles)

Amicalement

Claude

bonsoir

ci joint les fichiers suivants :

asiawbtest : c'est le fichier qui est composé d'env 16000 lignes

asiawbtest 2 : c'est le fichier pour lequel seules quelques lignes tarifaires nous sont utiles

l'objectif c'est de pouvoir "récupérer" les "bons" tarifs du 1er fichier sur le second quelque soit l'ordre du 1er

a vous lire

re,

excuse mon anglais,

je ne vois pas de colonne Tarif sur test1

quelles sont les lignes et colonnes à mettre à jour dans test2

précise ces points

Amicalement

Claude

Edit Amadéus: Effectivement, il vaut mieux faire en VBA parce que 14000 Formules risque d'alourdir considérablement le fichier.

bonjour

les infos à prendre sur la feuille test correspondent à colonne F nommée O/F USD

ces informations sont à recopier sur la feuille test 2 dans les colonnes E et F à partir de la ligne 106

comme vous pouvez le constater, seuls certains tarifs de la feuille test sont à recopier sur la feuille test 2

merci de vos commentaires

Bonjour,

ok vu, je m'en occupe dans la journée,

on ne traite pas les lignes avant la 106 ème

Claude

-- Ven Fév 11, 2011 1:50 pm --

re,

Tu copie dans ton fichier la feuille des nouveaux tarifs (la nommer "Tarif")

et cliquer le bouton de la "Feuil1" (ligne 104)

fichier: https://www.excel-pratique.com/~bigfiles/doc/chb44_Tarifs.zip

Sub MiseAjour()
Dim Lg%, i%, x%, Ch$, T
'Macro par Claude Dubois pour "chb44" Excel-Pratique le 11/02/11
    T = Time
        Sheets("Feuil1").Activate                               'on démarre de cette feuille
        Application.ScreenUpdating = False
    With Sheets("Tarif")                                        'feuille à nommer (nouveau tarifs)
        Lg = .Range("a65536").End(xlUp).Row
        .Range("w2:w" & Lg) = "=b2&a2&c2"                       'concatene

        Lg = Range("b105").End(xlDown).Row
        For i = 106 To Lg
            x = 0
            Ch = Cells(i, "b") & Cells(i, "c") & Cells(i, "d")
            On Error Resume Next                                'si n'existe pas
            x = WorksheetFunction.Match(Ch, .Range("w:w"), 0)   'cherche ligne
            On Error GoTo 0
            If x > 0 Then
                Cells(i, "e") = .Cells(x, "g")
                Cells(i, "f") = .Cells(x + 1, "g")
            End If
        Next i
        .Columns("w").Clear
    End With
    MsgBox ("temps macro = " & Format(Time - T, "hh:mm:ss"))
End Sub

Tu nous diras le temps de traitement

Amicalement

Claude

bonjour

merci pour le code, je viens de le tester et apparement, il fonctionne à merveille ! et en 6 secondes !!

avec ce code, vous me faites gagner un temps fou !!!!

un grand merci

Rechercher des sujets similaires à "comment retrouver bonne ligne"