Importation plage de données avec USF1
Ryoken83
Messages postés
3
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
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
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
A voir également:
- Importation plage de données avec USF1
- Fuite données maif - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Données de navigation - Guide
- Comment trier des données sur excel - Guide
- Sauvegarde des données - Guide
5 réponses
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+
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+
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
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
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)
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)
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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+
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+