Extraction de données sur 2 tableaux

Bonjour à tous,

J'ai un problème à résoudre et malheureusement je ne suis pas un expert VBA. J'ai essayé de trouver la solution avec les cours du site mais certains détails m'échappent.

J'aimerais faire une sorte de rechercheV avec 2 conditions pour valider la recherche. J'aimerais que la macro cherche 2 données (Batch et Material) dans un tableau et la compare avec le 2eme tableau, si les données sont identiques alors copie/colle une 3eme donnée (Date_Décision) et une 4ème (Décideur) dans les colonnes correspondantes du 1er tableau.

Voici le code que j'ai commencé, cependant la partie "If" est fausse et je n'ai aucune idée de la manière dont je dois préciser mon code...

Sub Extract_SAP()

'Déclaration des variables
Dim Batch As String, Material As String, Décideur As String, Date_décision As String, Numéro_Ligne As Integer
Dim BatchPF As String, MaterialPF As String, DécideurPF As String, Date_décisionPF As String, Numéro_LignePF As Integer
Dim Nb_Lignes As Integer, Nb_LignesPF As Integer

'Valeur des variables
Numéro_Ligne = Sheets("Feuil1").Range("C2")
Nb_Lignes = Sheets("Feuil1").CountA(Range("C:C")) 'Fonction NBVAL

Batch = Sheets("Feuil1").Cells(Numéro_Ligne, 3) 'Valeur de la ligne puis de la colonne
Material = Sheets("Feuil1").Cells(Numéro_Ligne, 5)
Décideur = Sheets("Feuil1").Cells(Numéro_Ligne, 17)
Date_décision = Sheets("Feuil1").Cells(Numéro_Ligne, 18)

Numéro_Ligne = Sheets("PF").Range("A4")
Nb_Lignes = Sheets("PF").CountA(Range("B:B")) 'Fonction NBVAL

BatchPF = Sheets("PF").Cells(Numéro_Ligne, 3) 'Valeur de la ligne puis de la colonne
MaterialPF = Sheets("PF").Cells(Numéro_Ligne, 7)
DécideurPF = Sheets("PF").Cells(Numéro_Ligne, 25)
Date_décisionPF = Sheets("PF").Cells(Numéro_Ligne, 24)

    While Numéro_Ligne <= Nb_Lignes 'TANT QUE la variable numero est <= Nb_Lignes, la boucle est répétée
        Numéro_Ligne = Numéro_Ligne + 1 'Le numéro est augmenté de 1 à chaque boucle

        If Batch = BatchPF And Material = MaterialPF Then 'Si les 2 conditions sont respectées
            Date_décision.Value
            .Copy
            Date_décisionPF.Select  'copie les données Date_décision dans la cellule Date_DécisionPF
            .Paste
            Décideur.Value
            .Copy
            DécideurPF.Select    'copie les données Décideur dans la cellule DécideurPF
            .Paste
        Else
        End If
    Wend

Sheets("PF").Select

MsgBox "Les données ont bien été ajoutées."

End Sub

J'espère que tout est compréhensible. Merci à tous pour le temps que vous consacrerez à ma demande.

Michel

Petit up !

Peut-être que c'est jouable avec une formule toute simple, si quelqu'un a une idée...

Bonjour,

Peut-être que ça serait encore plus jouable avec un petit extrait de fichier

eric

8pour-test.xlsm (10.94 Ko)

Alors, j'ai créé un fichier "Test" avec quelques explications supplémentaires.

Mon fichier original est bien sur beaucoup plus grand et malheureusement je ne peux pas partager les informations qui s'y trouvent.

Je n'y ai pas saisi le code VBA que j'ai essayé au-dessus (car je sais qu'il est inadapté)

En espérant que cela vous suffise.

Merci pour votre réponse et le temps que vous me consacrerez

Michel

Pour moi ça manque d'explication...

La logique c'est quoi ???

Comment ça la logique c'est quoi ?..

J'ai un tableau a compléter par les données d'un autre, cependant je ne peux pas faire une simple rechercheV car les données ne sont pas uniques (par exemple même numéro de lot ou même dénomination).

Du coup pour identifier la bonne ligne à compléter, il faut vérifier le "Batch" et le "Material" car la combinaison des 2 est unique.

Ensuite, le travail consiste à copier les données "Décideur" et "Date décision" du 2ème tableau sur le premier.

Est-ce que c'est plus clair ?

Moi je vois exactement les mêmes lignes de données, sauf qu'il manque des noms et des dates.

S'il te faut tout et bien tu copies colles tout, si des noms doivent disparaitre tu dis lesquels et pourquoi.

Et si le fonctionnement est tout autre tu expliques, le fait de mettre exactement les mêmes lignes des 2 cotés n'aide pas à comprendre...

je ne peux pas faire une simple rechercheV car les données ne sont pas uniques (par exemple même numéro de lot ou même dénomination).

Dans ce cas on se crée une clé en concaténant les 2 éléments (ou plus si besoin) pour avoir une clé unique qui permet l'identification des lignes.

Insères une colonne A avec =B2&C2 sur les 2 feuilles et fait ton recherchev() dessus

Bonjour Eric,

Du coup, le concatener m'a sauvé la vie !

Même si nous nous sommes pas forcément bien compris, vous avez eu la bonne idée qui m'a permis d'avancer.

Merci pour ce coup d'oeil extérieur qui m'a été grandement utile.

A bientôt

P.S : En fait un des 2 tableaux compte plus de 1000 lignes (et beaucoup plus de colonnes que le second) et ne doit être complété que de 2 informations par ligne, obtenues petit à petit par le 2ème tableau. Ce qui explique le fait qu'il y ait les mêmes informations sur le second mais qu'il y ait des trous sur le premier (puisqu'il faut justement les remplir avec les données du second tableau).

En tout cas merci, mon problème a été résolu.

D'où l'importance de mettre un fichier représentatif du problème et du contexte, et non un cas particulier.

Rechercher des sujets similaires à "extraction donnees tableaux"