Extraire des données de classeur vers une base de données
yannes.cgn
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour bonjour,
je souhaiterai répertorier des factures que j'ai répertorié dans un classeur vers une base de donnée à l'aide d'une macro VBA.
Mais voilà! Dès que je lance la macro le fameux message d'erreur propre au cas échant m'indique " Propriété non gérée par cet objet"
Naturellement je me suis renseigné avant et malgrés avoir vérifié chaque paramètre le problème persiste: HELP :) !
Nota: je souhaite aussi que tous les fichiers se mettent à la suite
LA ZONE QUI ME POSE PROBLEME EST SOULIGNEE
je souhaiterai répertorier des factures que j'ai répertorié dans un classeur vers une base de donnée à l'aide d'une macro VBA.
Mais voilà! Dès que je lance la macro le fameux message d'erreur propre au cas échant m'indique " Propriété non gérée par cet objet"
Naturellement je me suis renseigné avant et malgrés avoir vérifié chaque paramètre le problème persiste: HELP :) !
Nota: je souhaite aussi que tous les fichiers se mettent à la suite
LA ZONE QUI ME POSE PROBLEME EST SOULIGNEE
Sub recup()
Dim i%, chemin$, Fichier$, Factures$
Application.ScreenUpdating = False
i = Range("A1").Row 'sélectionner la cellule de début
chemin = "C:\factures" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(chemin & "*.xls") ' Premier fichier
Do While Fichier <> ""
Workbooks.Open Filename:=chemin & Fichier 'charge le classeur
With ActiveWorkbook.Worksheets(1)
.Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Cells(i, 1).Paste
.Range("A65536").End(xlUp).Select
.Close savechanges:=False
End With
MsgBox ("pb")
i = Range("A65536").End(xlUp)(2).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub
A voir également:
- Extraire des données de classeur vers une base de données
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Extraire une video youtube - Guide
- Trier des données excel - Guide
- Extraire le son d'une vidéo - Guide
3 réponses
Bonjour,
Sub recup()
Dim i%, chemin$, Fichier$, Factures$
Application.ScreenUpdating = False
'i = Range("A1").Row 'sélectionner la cellule de début ??????????????
i = 1
chemin = "C:\factures" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(chemin & "*.xls") ' Premier fichier
Do While Fichier <> ""
Workbooks.Open Filename:=chemin & Fichier 'charge le classeur
With ActiveWorkbook.Worksheets(1)
'.Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Cells(i, 1)
.Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Range("A" & i).Resize(i + 3, 2)
.Close savechanges:=False
End With
MsgBox ("pb")
i = Range("A65536").End(xlUp)(2).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub
Bonjour,
1- vérifier que le(s) classeur(s) concerné(s) s'ouvre(nt) bien.
2- pas top top :
A remplacer par :
=> pas de paste : inutile
=> c'est le workbook que l'on ferme, pas WorkBook.WorkSheets(1)...
=> suppression du i et du Select inutile.
3- Ton code devient donc :
4- Si tu le souhaites, tu n'es même pas obligé d'ouvrir tes classeurs... Voir cette astuce.
On peut l'appliquer à ton cas très facilement, si tu le veux...
1- vérifier que le(s) classeur(s) concerné(s) s'ouvre(nt) bien.
chemin = "C:\factures"dans ton cas ne fonctionnera pas. Il faut ajouter le "" en fin de chemin, soit :
chemin = "C:\factures"
2- pas top top :
With ActiveWorkbook.Worksheets(1) .Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Cells(i, 1).Paste .Range("A65536").End(xlUp).Select .Close savechanges:=False End With
A remplacer par :
With ActiveWorkbook .Worksheets(1).Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0) .Close savechanges:=False End With
=> pas de paste : inutile
=> c'est le workbook que l'on ferme, pas WorkBook.WorkSheets(1)...
=> suppression du i et du Select inutile.
3- Ton code devient donc :
Sub recup() Dim chemin$, Fichier$, Factures$ Application.ScreenUpdating = False chemin = "C:\factures" 'saisir le chemin complet du dossier où se trouvent les fichiers Fichier = Dir(chemin & "*.xls") ' Premier fichier Do While Fichier <> "" Workbooks.Open Filename:=chemin & Fichier 'charge le classeur With ActiveWorkbook .Worksheets(1).Range("A2:C5").Copy Workbooks("classeur_steph_solution2").Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0) .Close savechanges:=False End With 'MsgBox ("pb") Fichier = Dir ' Fichier suivant Loop End Sub
4- Si tu le souhaites, tu n'es même pas obligé d'ouvrir tes classeurs... Voir cette astuce.
On peut l'appliquer à ton cas très facilement, si tu le veux...
Bonjour Pijaku,
viens seulement de voir ca:
chemin = "C:\factures" manque "\" a la fin
pour lecture fichier sans ouvrir, il faut que je m'y mette ca doit etre top si pas mal de fichier
viens seulement de voir ca:
chemin = "C:\factures" manque "\" a la fin
pour lecture fichier sans ouvrir, il faut que je m'y mette ca doit etre top si pas mal de fichier