Importer des données d'un fichier à un autre selon choix définit en textbox

bonjour le forum,

mon programme transport avançant, je suis actuellement dans une phase de test par l'utilisation quotidienne. c'est alors que je me rend compte qu'une de mes macro n'est pas assez précise ; en effet lorsque je veux importer des données d'un autre fichier vers le miens, celle ci me récupère l'ensemble des données à traiter sur plusieurs mois. hors je me rend compte que cela créé un mélange d'infos ! c'est pourquoi il me semble plus judicieux de rechercher à importer que les données dont j'ai réellement besoin dans les prochaines semaines quitte à le faire plus régulièrement. du coup j'aimerais qu'en fonction de mon N°OF (ex: 73134) et les N°Poste (ex: 1, 1A ,2, 2A, 2B,...) celle ci ne m'importe que le données en rapport à cette commande. ci dessous une image d'illustration !

image2

en résumé je cherche comme vous avez dû le comprendre à importer mes données selon choix principal définis en textbox (T1) puis selon un affinage par soit juste 1 N°Poste ou soit tous les Postes de la commande.

ci dessous mon code actuel, ou dois je modifier les choses et que remettre à la place ?

Private Sub EXTRACTION_PROGRAMME_EXPE_Click()
    qui
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Filters.Add "Fichiers Excel", "*.xls*"
        .Title = "Merci de définir le fichier d'expédition à importer"
    End With
    If fd.Show = 0 Then
        MsgBox "Vous n'avez sélectionné aucun fichier"
        Exit Sub
    Else
        file_mere_pth = fd.SelectedItems(1)
        Workbooks.Open file_mere_pth
        file_mere = ActiveWorkbook.Name
    End If
    Set exp = Workbooks(file_mere).Sheets("P+E")
    Set transport = Workbooks(file_source).Sheets("1")
    nb_ligne_exp = exp.UsedRange.Rows.Count
    nb_colonne_exp = exp.UsedRange.Columns.Count
    nb_ligne_transport = transport.UsedRange.Rows.Count
    nb_colonne_transport = transport.UsedRange.Columns.Count
    For i = 4 To nb_ligne_exp
        If exp.Cells(i, 1) = "" Then
            nb_ligne_exp = i
            Exit For
        End If
    Next i
    For y = 6 To nb_ligne_transport
        If transport.Cells(y, 8) = "" Then
            nb_ligne_transport = y
            Exit For
        End If
    Next y
    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.Cells(y, 8) And exp.Cells(i, 2) = transport.Cells(y, 9) Then
                of_bool = True
                Exit For
            ElseIf exp.Cells(i, 17) = "EXW" Or exp.Cells(i, 18) = "JOINVILLE" _
                   Or exp.Cells(i, 18) = "USINE" _
                   Or exp.Cells(i, 18) = "OUR PREMISES" _
                   Or exp.Cells(i, 18) = "DENAIN" _
                   Or exp.Cells(i, 18) = "CAMBRAI" _
                   Or exp.Cells(i, 18) = "HATTINGEN" Then

                of_bool = True
                Exit For
            Else
            End If
            If of_bool = True Then
                Exit For
            End If
        Next y
        nb_ligne_transport = Workbooks("FC-CARRIAGE.xlsm").Sheets("1").UsedRange.Rows.Count
        For y = 6 To nb_ligne_transport
            If transport.Cells(y, 8) = "" Then
                nb_ligne_transport = y
                Exit For
            End If
        Next y
        If of_bool = False Then
            'Fichier programme_exp (colonne A) => PROGRAMME TRANSPORT (Colonne H),
            transport.Cells(y, 8) = exp.Cells(i, 1)
            'Fichier programme_exp (colonne B) => PROGRAMME TRANSPORT (Colonne I),
            transport.Cells(y, 9) = exp.Cells(i, 2)
            'Fichier programme_exp (colonne D) => PROGRAMME TRANSPORT (Colonne N),
            transport.Cells(y, 14) = exp.Cells(i, 4)
            'Fichier programme_exp (colonne F) => PROGRAMME TRANSPORT (Colonne O),
            transport.Cells(y, 15) = exp.Cells(i, 6)
            'Fichier programme_exp (colonne N) => PROGRAMME TRANSPORT (Colonne M),
            transport.Cells(y, 13) = exp.Cells(i, 14)
            'Fichier programme_exp (colonne Q) => PROGRAMME TRANSPORT (Colonne K),
            transport.Cells(y, 11) = exp.Cells(i, 17)
            'Fichier programme_exp (colonne R) => PROGRAMME TRANSPORT (Colonne L),
            transport.Cells(y, 12) = exp.Cells(i, 18)
            'Fichier programme_exp (colonne W) => PROGRAMME TRANSPORT (Colonne AZ)
            transport.Cells(y, 52) = exp.Cells(i, 23)
        End If
    Next i
    Workbooks(file_mere).Close False
    MsgBox ("Importation des données d'expédition terminée")
    Unload Me
End Sub

dans l'attente de vous lire

Pipin54000

24fc-carriage.xlsm (704.87 Ko)

Bonjour le forum

nb_ligne_transport = Workbooks("FC-CARRIAGE.xlsm").Sheets("1").UsedRange.Rows.Count
        For y = 6 To nb_ligne_transport
            If transport.Cells(y, 8) = "" Then
                nb_ligne_transport = y
                Exit For
            End If
        Next y

Quand je te disais que cela ne sert à rien que l'on t'aide puisque de toute façon, tu n'écoutes absolument pas les conseils, ni les modifications que l'on te donne!!!

ton code en copie le prouve bien, car dans ta macro c'est supposé trouver la première ligne vide, du moins pour la colonne H !!!

un simple

Workbooks("FC-CARRIAGE.xlsm").Sheets("1").Range("H"& Rows.Count).end(3).row+1

donne le résultat!!!!

solution que je t'avais déjà donné au moins à 3 ou 4 reprises, mais quand on est têtu, on est têtu.

bonne journée

Papou

Paritec,

merci pour ton retour, je vais retravailler avec l'aide que tu m'as apporté

a te lire

Pipin54000

Rechercher des sujets similaires à "importer donnees fichier choix definit textbox"