Bonjour,
j'ai fait un programme sur un fichier excel mais je ne parviens pas à le faire marcher. Ca bloque à la ligne
For Each sh In cl
avec une erreur 438 "propriété ou méthode non géré par cet objet".
Que je vous explique;
Mon programme , dans le fichier "prévisionnel"
- propose à l'utilisateur d'importer des fichiers excel (en l'occurence l'utilisateur importera des rapports d'activités; qui sont des fichiers excel composées de plusieurs feuilles toutes formalisés identiquement). je fais ça grace à un formulaire qui marche bien (bouton importer)
- le chemin des fichiers s'inscrit dans une petite liste dans le formulaire à gauche des boutons
- En appuyant sur le bouton "traiter" , le programme est censé copier dans une unique feuille(feuil1 du fichier "prévisionnel") les données -de la ligne 3 -jusqu'à ce qu'une ligne soit vide en A- et ce pour chaque feuille de chaque rapport d'activité importé.
Voici le code que j'ai réalisé (en partie car j'ai eu de l'aide). Je souligne la procédure qui pose problème et met en gras la ligne qui est pointé lors de la compilation
Option Explicit
Dim ligne_debut As Integer, colonne_debut As Integer
Dim ligne_fin As Integer, colonne_fin As Integer
Dim ligne_encours As Long, colonne_encours As Integer
Private Sub importer_Click()
Dim fichier_choisi As String
fichier_choisi = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx")
If (LCase(fichier_choisi) <> "faux" And fichier_choisi <> "0") Then
liste_fichiers.AddItem (fichier_choisi)
End If
End Sub
Private Sub traiter_Click()
Dim nom_fichier As String, i As Integer
ligne_debut = 2: colonne_debut = 1
ligne_encours = ligne_debut: ligne_encours = ligne_fin
Cells.Clear
colle_entetes
For i = 0 To liste_fichiers.ListCount
copiecolle (liste_fichiers.List(i))
Next i
End Sub
Private Sub colle_entetes()
Dim Plage As Range
Dim Cellule As Range
'Copier de la ligne 2 de la feuille entetes vers la ligne 3 de la feuil1
Worksheets("Feuil1").Range("A1:AAA1").Value = Worksheets("entetes").Range("A1:AAA1").Value
End Sub
[u]Private Sub copiecolle(fichier As String)
Dim y As Long
Dim sh As Worksheet
Dim cl As Workbook
Dim ligne_encours As Long
'ouvrir le premier fichier pour pouvoir copier coller ses données'
Set cl = Workbooks.Open(fichier)
'Pour chaque feuille du fichier à copier, trouver le nombre de lignes et jusqu'à ce que la colonne 1 contienne un vide'
[b]For Each sh In cl[/b]
'Pour chaque fichier de la liste, pour chaque feuilles de ce fichier, _
pour chaque ligne à partir de la ligne 3, _
je viens copier la ligne et la coller dans la feuil1 du fichier prévisionnel '
y = 3
Do While sh.Cells(y, 1) <> ""
ThisWorkbook.Worksheets("Feuil1").Rows(ligne_encours).Value = sh.Rows(y).Value
ligne_encours = ligne_encours + 1 'j'incrémente ligne_encours afin que dans mon fichier prévisionnel, _
la copie continue à ce faire dans la ligne d'en dessous '
y = y + 1
Loop
Next
End Sub[/u]
De plus je joint mon fichier "prévisionnel" ainsi que deux exemples de rapport d'activité
Merci beaucoup de votre aide