Importer des données d'un fichier à un autre
bonjour le forum,
pour mon programme transport je voulais savoir si vous connaitriez pas un code VBA (je suppose qu'il en faut un) afin de pouvoir récupérer différentes données d'un fichier "Expe" vers mon fichier "transport". les données sont dans différentes colonnes (à chaques fois les mêmes) et toutes sur la même ligne pour une copie dans mon fichier dans les même colonnes à chaques fois mais à des lignes différentes : à la suite de la dernière .
il faudrait que je puisse faire une MAJ chaque jour et qu'à chaque MAJ il ne me copie que celle que je n'ai pas afin d'éviter les doublon ou erreur.
pensez vous que c'est réalisable ?
j'ai déjà trouver ça comme piste ....
Sub test()
'identifier les variable tableau transport
'infos de base
Dim Date_Lanc As Date
Dim NOf As Double
Dim NPost As Double
Dim NPlan As Double
Dim Terms As String
Dim Desti As String
'infos colisage
Dim Recet As String
Dim Client As String
Dim Design_March As String
Dim Cel As Range
Dim DLig As Double
Workbooks.Open ("chemin fichier 1")
For Each Cel In Range("Q4:Q" & Range("a1").End(xlDown).Row)
If Cel.Value <> "EXW" Or Cel.Value <> "FCA" Then
Terms = Cel.Value
NOf = Cel.Offset(0, -16).Value
NPost = Cel.Offset(0, -15).Value
NPlan = Cel.Offset(0, -14).Value
Terms = Cel.Offset(0, 0).Value
Desti = Cel.Offset(0, 1).Value
Recet = Cel.Offset(0, -6).Value
Client = Cel.Offset(0, -13).Value
Design_March = Cel.Offset(0, -11).Value
End If
Next Cel
Workbooks("chemin fichier 2").Activate
DLig = Range("A1").End(xlDown).Row + 1
Cells(DLig, 2) = Date_Lanc
Cells(DLig, 3) = NOf
Cells(DLig, 4) = NPost
Cells(DLig, 5) = NPlan
Cells(DLig, 6) = Terms
Cells(DLig, 7) = Desti
Cells(DLig, 8) = Recet
Cells(DLig, 9) = Client
Cells(DLig, 10) = Design_March
End Subbien évidement, je ne demande pas qu'on me fasse mon code mais plutôt que l'on m'aide à le réaliser et que l'on prenne le temps de m'expliquer les choses afin qu'à l'avenir je puisse réussir seul
mes tableaux en exemple vous aiderez ?
merci de votre aide
Pipin54000
Bonjour,
Merci de nous envoyer vos tableaux, plus facile.
Merci
re,
les données à copier / coller de programme exp à programme transport sont :
OF (colonne A) ; Poste (colonne B) ; Client (colonne D) ; Designation Marchandise (colonne F) ; Emballage = Type (colonne N) ;
Incoterm (colonne Q) ; Destination (colonne R) ; Destination finale (colonne W)
1 ligne programme exp = 1 pièce fabriquée donc = 1 ligne programme transport
à noter que j'aimerai que la macro puisse faire la différence entre les lignes déjà copiées / collées et donc qui ne sont plus à reprendre et les nouvelles qui s'ajoutent chaque jours. et qu'elles les colle à la suite de la dernière ligne complétée
mon précédent code est une erreur, celui ci est celui que j'essaie de rendre utilisable
Private Sub PROGRAMME_EXPE_VALIDER_Click() ' = BOUTON VALIDER SUR USERFORM
'identifier les variable à extraire du programme expé
Dim Num_OF As Double
Dim Num_Post As String
Dim Client As String
Dim Design_March As String
Dim Emballage As String
Dim Incoterm As String
Dim Destina As String
Dim Destina_Finale As String
Dim Cel As Range
Dim DLig As Double
Workbooks.Open ("\\FERRY04\Expeditions\1 PB_VLM_VW_ME_ST\Programme_Exp.xlslm ")
For Each Cel In Range("A4:A" & Range("A4").End(xlDown).Row)
If Cel.Value <> "EXW" Or Cel.Value <> "FCA" Then
Num_OF = Cel.Value
Num_Post = Cel.Offset(0, 1).Value
Client = Cel.Offset(0, 3).Value
Design_March = Cel.Offset(0, 5).Value
Emballage = Cel.Offset(0, 12).Value
Incoterm = Cel.Offset(0, 15).Value
Destina = Cel.Offset(0, 16).Value
Destina_Finale = Cel.Offset(0, 21).Value
End If
Next Cel
Workbooks.Activate ("PROGRAMME TRANSPORT.xlsm")
DLig = Range("A1").End(xlDown).Row + 1
Cells(DLig, 8) = Num_OF
Cells(DLig, 9) = Num_Post
Cells(DLig, 14) = Client
Cells(DLig, 15) = Design_March
Cells(DLig, 13) = Emballage
Cells(DLig, 11) = Incoterm
Cells(DLig, 12) = Destina
Cells(DLig, 52) = Destina_Finale
End Submerci de ton aide
Pipin54000
re,
Merci de me donner plus de détail :
Fichier programme_exp (colonne A) => PROGRAMME TRANSPORT (Colonne H),
(colonne B) =>
(colonne D) =>
(colonne F) =>
(colonne N) =>
(colonne Q) =>
(colonne R) =>
(colonne W) =>
Merci de compléter
PAr la suite comment veux tu faire la bascule de ces info ( un bouton )?
re,
Fichier programme_exp (colonne A) => PROGRAMME TRANSPORT (Colonne H),
Fichier programme_exp (colonne B) => PROGRAMME TRANSPORT (Colonne I),
Fichier programme_exp (colonne D) => PROGRAMME TRANSPORT (Colonne N),
Fichier programme_exp (colonne F) => PROGRAMME TRANSPORT (Colonne O),
Fichier programme_exp (colonne N) => PROGRAMME TRANSPORT (Colonne M),
Fichier programme_exp (colonne Q) => PROGRAMME TRANSPORT (Colonne K),
Fichier programme_exp (colonne R) => PROGRAMME TRANSPORT (Colonne L),
Fichier programme_exp (colonne W) => PROGRAMME TRANSPORT (Colonne AZ)
par la suite, la bascule des infos doit se faire par un bouton (celui ci est déjà créé) c'est grâce à mon userForm n°2 dans la partie
extraction : programme expédition. la macro que j'ai rédiger y est associé, à supprimer si ne convient pas
en te remmerciant
Pipin54000
Bonjour,
Voici un débit de code
Option Explicit
Public nb_ligne_exp, nb_colonne_exp, nb_ligne_transport, nb_colonne_transport, i, y As Integer
Public of_bool As Boolean
Sub export()
'!!!!partie ouverture des fichiers à créer
nb_ligne_exp = Workbook("Programme_Exp.xlsm").Sheets("P+E").UsedRange.Rows.Count
nb_colonne_exp = Workbook("Programme_Exp.xlsm").Sheets("P+E").UsedRange.Columns.Count
nb_ligne_transport = Workbook("PPROGRAMME TRANSPORT.xlsm").Sheets("1").UsedRange.Rows.Count
nb_colonne_transport = Workbook("PROGRAMME TRANSPORT.xlsm").Sheets("1").UsedRange.columnss.Count
Set Exp = Workbook("Programme_Exp.xlsm").Sheets("P+E")
Set transport = Workbook("PROGRAMME TRANSPORT.xlsm").Sheets("1")
For i = 4 To nb_ligne_exp
of_bool = False
For y = 6 To nb_ligne_transport
'Si n°OF retrouvé alors exit for sinon création
If Exp.Cells(i, 1) = transport(y, 8) Then
of_bool = True
Exit For
Else
End If
If of_bool = True Then
Exit For
End If
Next y
If of_bool = False Then
'Fichier programme_exp (colonne A) => PROGRAMME TRANSPORT (Colonne H),
transport(y, 8) = Exp.Cells(i, 1)
'Fichier programme_exp (colonne B) => PROGRAMME TRANSPORT (Colonne I),
transport(y, 9) = Exp.Cells(i, 2)
'Fichier programme_exp (colonne D) => PROGRAMME TRANSPORT (Colonne N),
transport(y, 14) = Exp.Cells(i, 4)
'Fichier programme_exp (colonne F) => PROGRAMME TRANSPORT (Colonne O),
transport(y, 15) = Exp.Cells(i, 6)
'Fichier programme_exp (colonne N) => PROGRAMME TRANSPORT (Colonne M),
transport(y, 13) = Exp.Cells(i, 14)
'Fichier programme_exp (colonne Q) => PROGRAMME TRANSPORT (Colonne K),
transport(y, 11) = Exp.Cells(i, 17)
'Fichier programme_exp (colonne R) => PROGRAMME TRANSPORT (Colonne L),
transport(y, 12) = Exp.Cells(i, 18)
'Fichier programme_exp (colonne W) => PROGRAMME TRANSPORT (Colonne AZ)
transport(y, 52) = Exp.Cells(i, 23)
End If
Next i
End SubAu moins ca fais une passe pour voir s'il y a déjà un OF d’inséré. si ce n'est pas le cas, il le créer.
C'est bon ?
RE Valc,
tu vas bien ?
j'ai testé en insérant ton code dans mon vba, il semblerait que rien ne se passe .... j'ai peut être mal fais un truc !
ci dessous les 2 fichiers utiles, n'hésite pas à me donner ton avis sur la chose, me conseiller : je suis la pour apprendre !!
je te remercie de ton aide
Pipin54000
re,
tu as oublié les fichiers
lol
oups pardon
merci de ton aide
Pipin54000
Bonjour,
Voici le fichier "programme transport" à jour, mais je pense que je n'ai pas compris ce que tu souhaite faire en faite.
Là, la routine va copier les info de l'onglet P+E du fichier Programme_Exp vers l'onglet 1 du fichier programme transport.
Rien à voir avec l'onglet 11 ou se lance l'userform 1. ??
Valc,
ce que je souhaite faire,
c'est avoir la possibilité de pouvoir récupérer les données de "programme_expe" et me les coller dans les bonnes colonnes de "programme transport".
la macro doit reprendre les nouvelles données ajoutée la veille et non me reprendre tout depuis le début chaque fois que je la lance. pourquoi ? la vraie question serait à quoi me servent ces données ?
mon job est d'organiser pour ma société des transports, du coup la récupération vers mon programme de ces données me permet d'organiser les transports à partir du moment ou l'on sait quand la pièce sera dispo et non au dernier moment comme actuellement. ça me permet d'anticiper et donc d'être réactif en cas de perturbation. mais du coup c'est possible que la macro ne récupère que les données qui sont en dispo 8 semaines plus tard max ? voir trop loin n'a pas grand intérêt.
et j'ai zappé de te préciser au début, la macro ne doit reprendre aucune donnée de la ligne lorsqu'il s'agit soit en colonne Q de l'incoterm "EXW" soit en colonne R de la destination"JOINVILLE" ou "USINE" ou " OUR PREMISES" ou "DENAIN" ou "CAMBRAI" ou "HATTINGEN"
l'userform lui me sert dans l'organisation pure et dure de mon transport et non en anticipation voilà pourquoi cela ne le concerne pas pour le moment
pour faire le lien avec mon autre poste, le calendrier me servira pour avoir un visuel simple sur mes départ de l'usine au quotidien. mais on en reparle sur le poste en question
ai je éclairé ta lanterne avec mes explications ?
a te lire
Pipin54000