Importation plage de données avec USF1

Ryoken83 Messages postés 3 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

Si quelqu'un peut me renseigner sur comment procéder pour faire une importation de donné comme suite au code ci-dessous. Je dois importer une plage de la cellule (B13;D123) depuis la feuille "Liste débitage" à ma feuille/fichier ouvert.

Public Sub OK_Click()
Set frm = USF1
Filepath = "M:\Bois\Opticut\Listes des clients\"
MyxlFile = Filepath & frm.ComboFile.Value
DataFile = frm.ComboFile
filetab = frm.ComboTab
Set appExcel = CreateObject("Excel.Application")
appExcel.Workbooks.Open FileName:=MyxlFile
Workbook = MyxlFile
ActiveWorkbook.Sheets("Liste débitage").Range("B2:B2").Value = ReturnData(Filepath & DataFile, (filetab), 3, 2)
ActiveWorkbook.Sheets("Liste débitage").Range("B3:B3").Value = ReturnData(Filepath & DataFile, (filetab), 2, 2)
ActiveWorkbook.Sheets("Liste débitage").Range("B4:B4").Value = ReturnData(Filepath & DataFile, (filetab), 12, 5)
ActiveWorkbook.Sheets("Liste débitage").Range("D4:D4").Value = ReturnData(Filepath & DataFile, (filetab), 12, 6)

J'ai bien essayé:
ActiveWorkbook.Sheets("Liste débitage").Range("B13:D123").Value = ReturnData(Filepath & DataFile, (filetab), 13,2;123,4 )

Ca ne marche pas pour mon essai, mais le reste fonctionne parfaitement.

Merci de votre aide

5 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 199
 
Bonjour,
Je ne comprend rien à ton code.
USF1 .. C'est quoi ?
Tu ouvre une nouvelle instance d'Excel alors que tu y est ?
ReturnData ?? c'est quoi
Explique..
A+
0
Ryoken83 Messages postés 3 Statut Membre
 
Pour expliquer en mieux, je dois doit pouvoir importer des données d'un fichier transmis par mes clients dans mon fichier actif qui me permet de le gérer, par l'intermédiaire de cette macro. Cette dernière me permet de choisir le document et la feuille depuis laquelle je veux importer les données client.

La mise en page des cellules est toujours la même, mais les données varient. Je veux donc importer directement ces données dans d'autre cellules de mon doc actifs pour les traiter, et l'emplacement est primordiale.

Meillerues salutations

Public Function GetSheetNames() As String() ' A VERIFIER
Dim I As Long
Dim SelectedWorkbook As String
Dim aSheetNames() As String
SelectedWorkbook = FullPath & "\" & DataFile
For I = 1 To SelectedWorkbook.Sheets.Count
ReDim Preserve aSheetNames(1 To I)
aSheetNames(I) = Sheets(I).Name
Next
GetSheetNames = aSheetNames
MsgBox (GetSheetNames)
End Function

Sub ListSheetNames()
Dim I As Long
Dim aSheetNames() As String
aSheetNames = GetSheetNames
For I = LBound(aSheetNames) To UBound(aSheetNames)
Debug.Print aSheetNames(I)
Next

aSheetNames(I).Copy After:=Workbooks( _
"Copie de Liste débitage Dimter modèle 21 (OB).xls").Sheets(3)

End Sub

Public Function Findfiles(List As String)
Dim frm As UserForm, ctl As Control
Dim Full_Path As String
Dim varItm As Variant, intI As Integer
Full_Path = "M:\Bois\Opticut\Listes des clients"
Set frm = USF1
Set ctl = frm!ComboFile
mylist = ""

With Application.FileSearch
.NewSearch
.LookIn = Full_Path
.SearchSubFolders = False
.FileName = "*.xls"
.MatchAllWordForms = False
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
Debug.Print
mylist = mylist & .FoundFiles(I) & ";"
frm.ComboFile.AddItem Right(.FoundFiles(I), (Len(.FoundFiles(I)) - 35)), 0
Next I
Else
End If

End With

End Function

Public Sub Open_USF()

Findfiles (mylist)
USF1.Show
End Sub

Private Sub Workbook_Open()

End Sub

Vision élargie de la fonction USF1:

unction ReturnData(Fichier As String, Feuille As String, _
Ligne As Long, Col As Integer) As String
Dim R As String
Dim Cls As Workbooks
Dim Cl As Workbook
Dim F As Worksheet
Dim Cel As Excel.Range
Set Cls = CreateObject("Excel.Application").Workbooks
Set Cl = Cls.Open(Fichier)
Set F = Cl.Worksheets(Feuille)
Set Cel = F.Cells(Ligne, Col)
R = Cel.Text
Cl.Close False
ReturnData = R
End Function

Private Sub Annuler_Click()
Unload Me
End Sub

Public Sub ComboFile_Change()
Dim asheet As Object
Dim MyxlFile As String
Set frm = USF1
Filepath = "M:\Bois\Opticut\Listes des clients\"
MyxlFile = Filepath & frm.ComboFile.Value
frm.ComboTab.Clear
Set appExcel = CreateObject("Excel.Application")
appExcel.Workbooks.Open FileName:=MyxlFile
For Each asheet In appExcel.Sheets
frm.ComboTab.AddItem asheet.Name
Next asheet
appExcel.Workbooks.Close
End Sub

Public Sub OK_Click()
Set frm = USF1
Filepath = "M:\Bois\Opticut\Listes des clients\"
MyxlFile = Filepath & frm.ComboFile.Value
DataFile = frm.ComboFile
filetab = frm.ComboTab
Set appExcel = CreateObject("Excel.Application")
appExcel.Workbooks.Open FileName:=MyxlFile
Workbook = MyxlFile
ActiveWorkbook.Sheets("Liste débitage").Range("B2:B2").Value = ReturnData(Filepath & DataFile, (filetab), 3, 2) ' Ligne et colonne à définir dans chaque appel
ActiveWorkbook.Sheets("Liste débitage").Range("B3:B3").Value = ReturnData(Filepath & DataFile, (filetab), 2, 2)
ActiveWorkbook.Sheets("Liste débitage").Range("B4:B4").Value = ReturnData(Filepath & DataFile, (filetab), 12, 5)
ActiveWorkbook.Sheets("Liste débitage").Range("D4:D4").Value = ReturnData(Filepath & DataFile, (filetab), 12, 6)

appExcel.Workbooks.Close
Unload Me
'Importer
End Sub
0
lermite222 Messages postés 9042 Statut Contributeur 1 199
 
Re,
Je n'ai pas l'intention de tout réexaminer et écrire ton classeur, le plus simple ce serait de le poster sur Cjoint.com et de mettre le lien dans un poste suivant, peut-être que je pourrais t'aider.
PS : Pour être vraiment clair, poste ton classeur et un classeur client. (exemple)
0
Ryoken83 Messages postés 3 Statut Membre
 
Bonjour,

Voici donc le fichier client:
https://www.cjoint.com/?0FvnXNBHcKl
Et voici le fichier ou vient s'importer les données du "fichier client"
https://www.cjoint.com/?0FvnYvCrgsx

Meilleures salutations
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 199
 
Re,
Je pense que tu devrais TOUT reprendre à zéro, et avant tout apprendre la différence qu'il y a entre les différent modules.
Module de feuille,
Module du classeur
Module général
Module de l'UserForm
Module de classe.
Tu emploi FileSearch qui n'existe plus à partir du 2007.
Tu mélange tout, des fonction dans l'UF que tu appel à partir d'un module.
Des fonctions public dans le module du classeur etc..
Pour commencer ouvrir le classeur client avec la sélection dans le répertoire.
J'ai mis deux façons de faire, tu choisi.
Ton clsseur en retour sans tout le code inutile. :D
Tu dis
A+
0