Mise à jour d'un fichier Excel avec un autre
Bonjour, un sujet datant de janvier 2016 traitait le sujet. les réponses fournies par le membre BANZAI64 furent armées de patience et très complète, néanmoins après adaptation de son généreux code, j'aimerai une subtilité que je ne parviens pas à réaliser dans la modification du code VBA.
En effet, mon Tableau1 à mettre à jour comporte en colonne A l'élément à repérer dans le Tableau2 (situé en colonne A aussi) et prendre les données se trouvant en colonne B et C du Tableau2 afin de mettre respectivement le Tableau1 à jour en colonne B et H; les données en B du Tableau2 sont à placer en B du tableau1 et les données en C du Tableau2 sont à placer en H du Tableau1.
Idem pour les données manquantes dans mon Tableau1, le A du tableau2 doit se mettre en A du tableau 1, le B du Tableau2 doit se mettre en B du Tableau1 et enfin le C du Tableau2 doit se mettre en H du Tableau1 sans modifier les autres colonnes.
le code actuel ci-dessous m'efface malheureusement les données de la colonnes A du Tableau1, mais remplit correctement le B et le H
Etant novice et le code utilisé inhabituel pour moi, pourriez-vous me guider sur le soucis.
Sub UPDATE_Stock_et_Ref()
Dim Chemin As String, Fichier As String, J As Long, I As Integer, Cel As Range
Dim T1(1 To 2, 1 To 8) As String
Dim Ws As Worksheet
Application.ScreenUpdating = False
Set Ws = ActiveSheet
Chemin = ThisWorkbook.Path & Application.PathSeparator
'désigne la variable de notre fichier Cde Auto
Fichier = "Liste_des_stocks_Stock_Cathedrale.xlsm"
'désigne la variable du listing stock exporté de MatTrack
If Dir(Chemin & Fichier) = "" Then
MsgBox "Fichier pour mise à jour introuvable" & vbCr & Fichier
Exit Sub
'Condition si le listing stock n'est pas trouvé afin de sortir de la procédure
End If
With Workbooks.Open(Chemin & Fichier)
With .Sheets(1)
'Prend en compte la feuille 1 du fichier qu'il vient d'ouvrir (si besoin de mettre le nom de l'onglet, placer celui-ci entre guillemets
For J = 4 To .Range("A" & Rows.Count).End(xlUp).Row
' Parcourt de la ligne 4 dans la colonne A jusqu'à la dernière cellule non vide de cette colonne (références MatTrack à rechercher)
T1(1, 2) = .Cells(J, "B")
T1(1, 8) = .Cells(J, "C")
Set Cel = Ws.Columns("A").Find(what:=.Range("A" & J), LookIn:=xlValues, lookat:=xlWhole)
'recherche les correspondance des codes MatTrack entre la collone A du fichier des Cdes Auto et la colonne A du listing MatTrack
If Not Cel Is Nothing Then
Cel.Resize(1, UBound(T1, 2)) = T1
'Si correspondance code MatTrack Cde Auto trouvée dans le listing Cde Auto, mise à jour des données description et Stock
Else
Ws.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(1, UBound(T1, 2)) = T1
'insère les code MatTrack manquants venant du listing en bas du tableau
End If
Next J
End With
.Close savechanges:=False
'ferme le listing sans le sauvgarder
End With
End SubBonjour vuerings
ou devrais-je vous appeler trouvaille
Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :
- Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).
Edit : clôturer sur l'autre forum, je déverrouille
A+
Sujet reposté ...à suivre...
Merci de votre collaboration