Tableau Excel alimentant un second

C'est un fichier à part.

Il faut que lors du lancement tu choisisses leur fichier, exemple :

capture d ecran 651

Essaie la solution, je dois dans tous les cas l'améliorer car j'ai un soucis quand les BUYER'S REF commencent par un 0 !

Les données sont appelées à chaque lancement de la macro comme tu le fais aujourd'hui par copie des colonnes qui t'intéressent. Il ne peut y avoir de lien permanent car comme tu le signales, des lignes peuvent être ajoutées au milieu et c'est là tout la difficulté.

Pour contourner le problème des numéros qui commencent par 0, j'ai changé de stratégie, je recopie les colonnes directement sans passer par un tableau d valeurs

Option Explicit
Option Base 1

Sub import()
'                                           importation      ancien           colonnes complémentaires
Dim Nom_Fichier As Variant, wb As Workbook, tbl1 As Variant, tbl2 As Variant, tbl3 As Variant, col() As Variant, i%, j%, k%, ws As Worksheet

    ' numéro des colonnes à importer, si 0 on passe
    col = Array(0, 22, 3, 4, 5, 6, 7, 8, 9, 10, 11)

    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx")
    If Nom_Fichier = False Then Exit Sub

    tbl2 = Sheets(Sheets.Count).UsedRange.Value
    Sheets.Add after:=Sheets(Sheets.Count)
    Set ws = ActiveSheet

    ' recopie des colonnes du fichier source
    Set wb = Workbooks.Open(Nom_Fichier)
        For j = 1 To UBound(col)
            If col(j) <> 0 Then wb.ActiveSheet.Columns(col(j)).Copy Destination:=ws.Cells(1, j)
        Next
    wb.Close
    Sheets(Sheets.Count - 1).Rows(1).Copy Destination:=ActiveSheet.Range("A1")
    tbl1 = ws.UsedRange.Value

    ' mise en exergue des différences et mise en place des 4 dernières colonnes
    ReDim tbl3(1 To UBound(tbl1), 1 To 4)
    For i = 1 To UBound(tbl1)
        For k = 1 To UBound(tbl2)
            ' identifiant de la ligne composé des colonnes 4, 6 et 7
            If tbl1(i, 4) = tbl2(k, 4) And tbl1(i, 6) = tbl2(k, 6) And tbl1(i, 7) = tbl2(k, 7) Then
                ' mise en exergue des différences
                For j = 1 To UBound(col)
                    If tbl1(i, j) <> tbl2(k, j) Then Cells(i, j).Interior.Color = 65535
                Next
                ' recopie des infos complémentaires
                For j = UBound(col) + 1 To UBound(col) + 4
                    tbl3(i, j - UBound(col)) = tbl2(k, j)
                Next
            End If
        Next
    Next

    ' copie des résultats
    Range("A1").Offset(0, UBound(col)).Resize(UBound(tbl3), UBound(tbl3, 2)) = tbl3
    Cells.EntireColumn.AutoFit

End Sub
14livraisons.xlsm (38.40 Ko)

comment sera t il lié au tableau 1?

Ton sujet passe normalement par une base partagée entre commerce et logistique ; un système "mini-ERP" sur lequel tout le monde se greffe et enrichit au fur et a mesure.

Je ne sais pas s'il existe des solution avec un fichier excel partagé entre plusieurs secteurs. J'ai compris que c'était possible mais je n'ai aucune compétence dans ce domaine.

La solution proposée est viable, on recopie le tableau des commerçants vers la logistique, mais elle en peut pas être en temps réel. Le tableau est recopié à la demande via la macro.

oufffffff….

mon mini cerveau a enfin reussi!!!!!!!!!

merci pour ta patience!

ca a été long mais finalement j'ai compris!

ton tableau fonctionne parfaitement

je l'ouvre, j'ouvre le tableau 1, je le modifie, j'enregistre, j'active les macros dans le tableau 2 et la comme par magie un nouvel onglet se crée qui reprend mes modifs….

c'est bien cela en langage profane?

Parfait !

Après plusieurs itérations, tu peux supprimer les importations précédentes pour ne conserver que la dernière (voire l'avant-dernière ..., il vaut mieux toujours être très prudent !), mais tu peux aussi conserver tout l'historique.

Si tu vois un bug, ou quelque chose qui ne te convient pas, n'hésite pas !

Rechercher des sujets similaires à "tableau alimentant second"