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

  1. 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
  2. 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
  3. 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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