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 Sub

bien é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 Sub

merci de ton aide

Pipin54000

17programme-exp.xlsm (75.02 Ko)

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 Sub

Au 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

6programme-exp.xlsm (81.61 Ko)

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. ??

15programme-exp.xlsm (81.61 Ko)

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

Rechercher des sujets similaires à "importer donnees fichier"