Problème de formule et de fonction

Bonjour,

Je suis nouveau sur le forum et peut être que cette question à déjà était surement posée.

J'ai deux tableaux assez simple (5 colonnes chacun) mais très lourds au niveau des lignes (+ de 500 000).

Je souhaite faire apparaitre dans mon tableau n°1 les dates de naissance qui sont dans mon tableau n°2.

J'ai une seule référence en commun (numéro de facture) sur les deux tableaux.

Puis je appliquer une formule ou fonction qui me permettrait de dire:"si mon numéro de facture de mon tableau n°1 se trouve dans l'ensemble des numéros de factures de mon tableau n°2, alors "ma cellule sélectionnée" (tableau n°1) est égale à la date de naissance de mon tableau n°2 qui est associée à mon numéro de facture trouvé".

J'espère que cela est possible et surtout compréhensible dans un premier temps.

En vous remerciant par avance.

Bonne journée.

Bonjour

je pense que c'est possible mais

pas besoin des 500000 lignes une dizaines suffit pour l'exemple évidemment on supprime les données confidentielles du fichier

fred

Bonjour,

Avec 500000 lignes, il y a sûrement intérêt à ne pas utiliser de formule...

Aucun problème en principe pour ce que tu demandes, mais il faut voir un échantillon de ton classeur pour s'ajuster à la position des données.

Cordialement.

Bonjour,

Vous trouverez ci-joint, un petit échantillon a titre exemple.

Je veux en fait ramener la date de naissance (tableau 2) correspondante vers le tableau 1 par rapport au numéro de titre émis à la personne. ( si je m'explique bien).

Et merci par avance pour votre aide.

11exemple.xlsx (9.86 Ko)

Re

une solution avec une macro

fred

16exemple.xlsm (17.56 Ko)

Bonsoir,

Macro proposée :

Sub InsérerDateNaissance()
    Dim d As Object, n&, i&
    Set d = CreateObject("Scripting.Dictionary")
    Application.ScreenUpdating = False
    With Worksheets("tableau 2")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            d(.Cells(i, 1).Value) = .Cells(i, 2).Value
        Next i
    End With
    With Worksheets("tableau 1")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            If d.exists(.Cells(i, 1).Value) Then _
             .Cells(i, 4).Value = d(.Cells(i, 1).Value)
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

A tester. Cordialement.

Merci beaucoup,

Je le teste dès demain matin et en conditions réelles.

Y' a t'il un moyen de s'initier aux macros (du genre les macros pour les nuls etc.) , j'avoue que cela m'intéresse.

Merci encore.....

Bonjour,

Effectivement, les macros que vous m'avez proposé fonctionnent très bien.

Seule ombre au tableau, la quantité de lignes (environ 500 000) fait que Excel "bug" et ne répond plus au bout d'un moment.

N'y a t'il pas un autre moyen comme une formule ou fonction pour aboutir au même résultat?

Merci par avance.

Bonjour

500 000 lignes cela fait beaucoup de lignes a traité... cela peut-etre plus ou moins long en fonction de la puissance de l'ordi..

Il arrive parfois que Excel marque "ne réponds plus" mais il continu a bossé en arrière plan.. laisse le temps faire son chemin.....

fred

Bonjour Fred,

C'est exactement ce que me marque le pc actuellement....

Je vais donc prendre mon mal en patience.

Merci encore,

re

on pourrait aussi faire un userform qui indique le nombre de lignes traitées je l'ai fait il y a quelques temps sur un très gros fichier ...

fred

Bonjour,

A mon avis, avant de te lancer sur le traitement de 500000 lignes, tu aurais dû tester sur un échantillon de 10000 (à 50000 max.) en mesurant le temps mis, de façon à pouvoir examiner s'il est possible, où et comment de gagner du temps...

Cordialement.

Rechercher des sujets similaires à "probleme formule fonction"