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 !
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
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