Associer lignes de deux classeurs

Bonjour à tous,

Je dispose de deux feuilles comportant chacun une colonne dédiée à un numéro d'enregistrement.

La 1ére feuille nommée "PROFS" mentionne outre cette colonne, une colonne "nom" et "pays".

La seconde feuille nommée "ELEVES" mentionne outre cette colonne, une colle" nom", une colonne "prénom" et une colonne" date de naissance".

J'ai créé une troisième feuille montrant le résultat souhaité.

Le classeur originel comportant plusieurs milliers de lignes, je voudrai que cette troisième s'alimente automatique ou facilement ; la colonne numéro d'enregistrement commune aux deux premières feuilles constituant le vecteur commun

Merci pour votre aide car je me prends la tête dessus depuis 2 jours

15stats.xlsx (10.14 Ko)

Bonjour,

La 3e feuille est vide !

Ce résultat est aisé à obtenir !!!

le voici pardon

19stats.xlsx (10.36 Ko)

A tester :

Sub Résultats()
    Dim d As Object, Trés(), clé, dsg, n%, i%, k%
    Set d = CreateObject("Scripting.Dictionary")
    With Worksheets("Elèves")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            For k = 2 To 3
                dsg = dsg & "|" & .Cells(i, k)
            Next k
            dsg = dsg & "|" & CLng(.Cells(i, 4))
            d(.Cells(i, 1).Value) = dsg: dsg = ""
        Next i
        ReDim Trés(d.Count, 5)
        For k = 2 To 4
            Trés(0, k + 1) = .Cells(1, k)
        Next k
    End With
    With Worksheets("Profs")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            clé = .Cells(i, 1)
            If d.exists(clé) Then
                For k = 2 To 3
                    dsg = dsg & "|" & .Cells(i, k)
                Next k
                dsg = dsg & d(clé)
                d(clé) = dsg: dsg = ""
            End If
        Next i
        For k = 1 To 3
            Trés(0, k - 1) = .Cells(1, k)
        Next k
    End With
    n = 0
    For Each clé In d.keys
        n = n + 1
        Trés(n, 0) = clé
        dsg = Split(d(clé), "|")
        For i = 1 To 5
            Trés(n, i) = dsg(i)
        Next i
    Next clé
    With Worksheets("résultats")
        .UsedRange.ClearContents
        .Range("A1").Resize(UBound(Trés, 1) + 1, UBound(Trés, 2) + 1).Value = Trés
        .Cells(UBound(Trés, 2) + 1, 2).Resize(UBound(Trés, 1)).NumberFormat = "dd/mm/yyyy"
        .Activate
    End With
End Sub

Il a fallu contourner un peu pour conserver les dates...

Cordialement.


Une petite modif à faire ici :

[...]
    With Worksheets("Elèves")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            For k = 2 To 4
                dsg = dsg & "|" & .Cells(i, k).Value2
            Next k
            d(.Cells(i, 1).Value) = dsg: dsg = ""
        Next i
[...]

On gagne une ligne !

14didier83-stats.xlsm (21.86 Ko)

bonsoir,

je ne suis assez calé pour comprendre ce que vous m'avez envoyé; désolé

Bonjour,

avec une formule alors

(Hello à MFERRAND)

P.

9stats-1.xlsx (10.70 Ko)
didier83 a écrit :

bonsoir,

je ne suis assez calé pour comprendre ce que vous m'avez envoyé; désolé

Et tu n'as pas testé !

RE,

Non cela ne fonctionner pas car plusieurs élèves se rapportent à un même professeur? En clair, je dispose de 1000 élèves pour 300 professeurs. Et là où cela se complique c'est que numéro d'enregistrement pour un prof peut différer?

exemple pour N° enregistrement d'un prof :

MC#Loch#1256-5268

MC#Loch#1256-6947

MC#Loch#1256-2355

Dur, dur

Alors dans ce cas, donne un exemple plus parlant ...

P.

Ton modèle et ton résultat attendu ne correspondent donc pas à la réalité !

Tu nous fait perdre notre temps pour rien donc !

Bonsoir,

Voici un extrait plus concret. dans la colonne "numéro" le contenu de la cellule diffère pour les 4 derniers chiffres

exe :

MC#Loch#1256-7223 dupuis France

MC#Loch#1256-8563 dupuis France

MC#Loch#1256-2648 dupuis France

Voilà pourquoi c'est compliqué

La feuille résultat constitue le résultat escompté

Pardon pour la perte de temps

Bonne soirée

re,

le code UNIQUE pour une personne , c'est donc les 4 chiffres qui suivent le tiret "-" ?

P.

Rechercher des sujets similaires à "associer lignes deux classeurs"