kenedah
Messages postés2Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 novembre 2007
-
28 nov. 2007 à 18:16
kenedah
Messages postés2Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 novembre 2007
-
29 nov. 2007 à 15:32
Bonjour,
Sous excel :
Dans un ensemble de fichiers contenu dans un même dossier, je souhaiterais :
1- indiquer la meme donnée pour l'ensemble des fichiers (ex : proposition de saisie d'une valeur dans toutes les cellules A10 de ttes les feuilles de tous les fichiers)
2- pouvoir extraire des données qui se situe à des cellules identiques. (ex : extraction des cellules Ax:Hx pour ttes les feuilles de tous les fichiers)
3- Copier toutes ces données extraites vers un nouveau fichier
4- Proposition d'enregister tout ce qui a été extrait dans un nouveau fichier dont le nom resterait à définir
Vous remerciant par avance pour cette précieuse aide que vous m'apporterez,
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 28 nov. 2007 à 19:53
Bonsoir,
L'exemple ci-dessous facilement adaptable pour vb6 correspond au point 1.
- recherche des fichiers excel;
- ouverture du fichier;
- écriture cellule A10 dans tous les onglets.
Option Explicit
Dim strPath
strPath = "C:\SCRIPTS\Fichiers\Test"
Call FnRechercheFichiersExcel(strPath,Inputbox("saisie pour cellule A10",,Date))
MsgBox "script terminé"
'=========================================================
Function FnRechercheFichiersExcel(strPath, strSaisie)
Dim objFso, objFile, strListe
Set objFso = CreateObject("Scripting.FileSystemObject")
For Each objFile in objFso.GetFolder(strPath).Files
If LCase(objFso.GetExtensionName(objFile.Path)) = "xls" then
Call FnListeClasseur(objFile.Path, strSaisie)
End if
Next
Set objFso = Nothing
End Function
Function FnListeClasseur(strPath, strSaisie)
Dim objExcel, objClasseur, i
Set objExcel = CreateObject("Excel.Application")
Set objClasseur = objExcel.WorkBooks.Open(strPath)
objExcel.DisplayAlerts = False
objExcel.Application.Visible = False
For i = 1 To objClasseur.Sheets.Count
objExcel.ActiveWorkbook.Worksheets(i).Select()
objExcel.Cells(10,1).Value = strSaisie
Next
objExcel.ActiveWorkbook.SaveAs strPath
objExcel.ActiveWorkbook.Saved = True
objExcel.ActiveWorkbook.Close
objExcel.DisplayAlerts = True
objExcel.Application.Visible = True
Set objExcel = Nothing
Set objClasseur = Nothing
End Function
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 29 nov. 2007 à 12:08
je n'ai rien a ajouter si ce n'est remercier JMO pour l'exellente clarté et précision de sa reponse que l'on devrait mettre en tutorial de manipulation d'excel que d'heures de patauge j'aurais évité il y a quelques temps de ça si j'avais eu ton petit bout de soft sous les yeux !!!!!
kenedah
Messages postés2Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention29 novembre 2007 29 nov. 2007 à 15:32
Merci Bcps pour cette 1ere réponse ;)
A prèsent, (après avoir bosser un peu qd même lol), j'ai réussi à "bidouiller" qque chose pour les étapes 2,3,
Cependant, lorsque je copie mes données, je n'arrive pas à les importer en Valeur(ma copie pointe sur des formules, donc j'obtient un résultat #ref, systématiquement)
Et j'm'y suis tellement pris de fois que je n'arrive pas à voir où ça cloche...
Donc, voici ma macro et si qqun pouvait me dire où et comment récupérer mes données en valeur(la ou les lignes à corriger dans ma programmation)... MILLE MILLIARD DE MERCI !!
Option Explicit
Sub ouvrir_fichier()
Dim file As String
Dim wb As Workbook
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim nbsheet As Integer
Dim newbook As Workbook
Dim chemin As String
i = 1
j = 1
k = 2
nbsheet = 10
Application.FileDialog(msoFileDialogFolderPicker).Show
chemin = Application.FileDialog(msoFileDialogFolderPicker).InitialFileName
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(chemin)
Set fc = f.Files