Erreur importation des données
Bonjour,
Ce code me permet d'importer des données dans un fichier excel d'une autre feuille excel si dans le cas où la rangée AQ = XX ou YY
Option Explicit
Option Base 1
'--------
Sub Importdatav2()
Dim Source As Workbook, Dercol As Integer
Dim Nbre As Integer, Tablo, Cptr As Integer, derlig As Integer, Lig As Integer, Col As Integer
Dim FichiersAOuvrir, I As Integer
Application.ScreenUpdating = False
FichiersAOuvrir = Application.GetOpenFilename(, , , , True)
If IsArray(FichiersAOuvrir) Then
For I = LBound(FichiersAOuvrir, 1) To UBound(FichiersAOuvrir, 1)
Set Source = Application.Workbooks.Open(FichiersAOuvrir(I), , True)
With Sheets("Workload - Charge de travail")
Dercol = Cells(2, Columns.Count).End(xlToLeft).Column
Nbre = Application.CountIf(.Columns("AQ"), "YY", '' XX'')
ReDim Tablo(Nbre, Dercol)
Lig = 1
For Cptr = 1 To Nbre
Lig = .Columns("AQ").Find("XX",'' YY'' .Cells(Lig, "AQ"), xlValues).Row
For Col = 1 To Dercol
Tablo(Cptr, Col) = .Cells(Lig, Col).FormulaLocal
Next Col
Next Cptr
End With
Source.Close False
With ThisWorkbook.Sheets("Sheet1")
derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1 'premiere cellules vide colonne A
.Range("A" & derlig).Resize(Cptr, Dercol) = Tablo
'.Activate
End With
Next I
Else
MsgBox "Aucun choix"
End If
End SubJ'ai une erreur ici
.Range("A" & derlig).Resize(Cptr, Dercol) = Tablo voici mon message d'erreur :
Method 'Resize' of object 'Range' failed
aussi j'aimerais bien savoir si c'est possible de selectionner plusieurs fichiers excel à la fois au moment de l'imporation ?
Merci
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
J'ai trouvé des erreurs de compilation dans ton code. En tout cas, je te propose celui ci-dessous. Pour ce qui concerne
la sélection multiple, utilise Application.FileDialog (msoFileDialogOpen).
Sub Importdatav2()
Dim Source As Workbook
Dim FichiersAOuvrir, I As Integer, nb_col As Integer, nb_lig As Integer
Dim ligne As Range, lignes_à_importer As Object
Application.ScreenUpdating = False
FichiersAOuvrir = Application.GetOpenFilename(, , , , True)
If IsArray(FichiersAOuvrir) Then
For I = LBound(FichiersAOuvrir, 1) To UBound(FichiersAOuvrir, 1)
Set Source = Application.Workbooks.Open(FichiersAOuvrir(I), , True)
Set lignes_à_importer = CreateObject("System.Collections.Arraylist")
With Sheets("Workload - Charge de travail").UsedRange 'plage utilisée
nb_col = .Columns.Count
For Each ligne In .Rows
If ligne.Columns("AQ") = "XX" Or ligne.Columns("AQ") = "YY" Then
lignes_à_importer.Add (ligne.Formula)
End If
Next
End With
Source.Close False
With ThisWorkbook.Sheets("Sheet1").UsedRange 'plage utilisée
nb_lig = lignes_à_importer.Count
.Offset(1).Resize(nb_lig, nb_col).Formula = Application.Transpose(Application.Transpose(lignes_à_importer.ToArray))
End With
Set lignes_à_importer = Nothing
Next I
Else
MsgBox "Aucun choix"
End IfMerci Beaucoup pour ton initiative y'a t-il une façon d'afficher un message d'erreur ou quitter Sub dans le cas ou l'utilisateur choisira un fichier qui ne respecte pas les conditions qui ont été mises en vigeur , pour le moment cela m'enméne a une erreur de codage.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Qu'entends-tu exactement par non respect des conditions de mise en vigueur ? S'il s'agit d'une condition par exemple sur les extensions de fichier, la propriété Filters de Application.FileDialog permet de restreindre le choix offert à l'utilisateur.