Transferts de valeur d'un dossier vers un Excel
bonjour a tous
je viens vers vous car je suis une bille en vba
j'aurai besoin de récupérer la case M2 et le résultat d une formule situer en N1 dont la valeur est de type horaire "00:00:00" de chaque classeur d'un même dossier et de la copier dans un classeur de ce même dossier sous une colonne C et D
C4 = M2 classeur 1 D4 = N1 classeur 1
C5 = M2 classeur 2 D4 = N1 classeur 2
le tous autant de fois que de classeur
le seul classeur non pris en compte seras celui ou sont copier les valeurs M2 et N1
j'avais commencé a essayer de modifier un vieux bout de code mais cela manque de commentaire
Sub Transferer()
Dim dossier As Object, Fichier As Object, Chemin As String, Lg As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = True
DerLg = Range("D65536").End(xlUp).Row + 1
Range("D3:D" & DerLg).Delete
Chemin = ThisWorkbook.Path
FName = Dir(Chemin & "\" & "*.xls")
Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
Lg = 3
For Each Fichier In dossier.Files
NomFichier = Fichier.Name
If Not Fichier.Name = "Analytique OGP HEURE SUP.xls" Then
Workbooks.Open Filename:=Chemin & "/" & NomFichier
On Error Resume Next
With Workbooks(NomFichier)
.Sheets("Feuil1").Range("N1").Copy ThisWorkbook.Sheets("HEURE SUP").Range("D" & Lg)
.Close
Lg = Lg + 1
End With
End If
Next
End Suben espèrent que quelqu'un est un peut de temps pour m'aider;
merci d'avance
cordialement
PAGO82
bonjour voici ton code commenter et dont j'ai ajouter ce que tu voulais normalement
fred
Sub Transferer()
Dim dossier As Object, Fichier As Object, Chemin As String, Lg As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = True
'recupere la derniere ligne occupée en colonne D +1 de la feuille active moi je rajout le nom de l'onglet
DerLg = Sheets("HEURE SUP").Range("D65536").End(xlUp).Row + 1
'supprime les ligne de la colonne D => supprime les données existantes
'Range("D3:D" & DerLg).Delete
'je renplacerait par
Range("C3:D" & DerLg).Delete
'stock dans une variable le chemin qui permet d'acceder a ce documentt
Chemin = ThisWorkbook.Path
'regarde si des fichiers *.xls existent dans le dossier a priori ne sert pas ...
' FName = Dir(Chemin & "\" & "*.xls")
'déclaration d'un objet type dossier
Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
'initialise ta variable pour les lignes ou seront stockée les info copiées des autres classeurs
'on commence a ligne 3
Lg = 3
'on va parcourir parcourir tous les fichiers du dossier cela suppose que tous les fichiers sont de type xls
For Each Fichier In dossier.Files
'récupération du nom de fichier un par un
NomFichier = Fichier.Name
'vérification que ce n'est pas le fichier source ... ce fichier !!
If Not NomFichier = "Analytique OGP HEURE SUP.xls" Then
'en cas d'erreur on passe a l'instruction suivante evite le plantage du code mais te dit rien, peut-etre "dangereux" car si le resultat n'est la le bon tu ne sais pas pourquoi mise a part faire drouler la macro manuellement...
On Error Resume Next
'ouverture du fichier
Workbooks.Open Filename:=Chemin & "/" & NomFichier
With Workbooks(NomFichier)
' cela supose que dans tous les fichiers l'onglet 'Feuil1' existe !!!!
'copie de la cellule N1 de la feuille 'feuil1' du fichier qu'on vient d'ouvrir dans le fichier source onglet Heure SUP cellule D lig
.Sheets("Feuil1").Range("N1").Copy ThisWorkbook.Sheets("HEURE SUP").Range("D" & Lg)
'il faut mettre ici la deuxième cellule que tu veux copié dans la colonne C
.Sheets("Feuil1").Range("M2").Copy ThisWorkbook.Sheets("HEURE SUP").Range("C" & Lg)
'fermeture du fichier
.Close
'incrementation de la lig
Lg = Lg + 1
End With
End If
Next
End Submerci beaucoup
cela répond exactement a mon attente
mais cela ne fonctionne pas juste la colonne D récupérant le résultat de la formule N1=O5+O17+O29+O41+O53+O65+O71 sur chaque classeur en Feuil1
résultat sur Analytique OGP HEURE SUP.xls colonne C parfait mais D a zero
C3 D3
20 0:00:00
C4 D4
21 0:00:00
deplus la formule est récupéré pas le résultat et elle ne correspond pas a celle de N1
formule en D3=E7+E19+E31+E43+E55+E67+E73
formule en D4=E8+E20+E32+E44+E56+E68+E74
je n'ai pas de formule de ce type en colonne E
si quelqu'un a une idée sur ce qui ce passe
bonsoir
c'est la valeur de la cellule qu'il faut recupérer ???
dans ce cas il faut remplacer
'copie de la cellule N1 de la feuille 'feuil1' du fichier qu'on vient d'ouvrir dans le fichier source onglet Heure SUP cellule D lig
.Sheets("Feuil1").Range("N1").Copy ThisWorkbook.Sheets("HEURE SUP").Range("D" & Lg)
'il faut mettre ici la deuxième cellule que tu veux copié dans la colonne C
.Sheets("Feuil1").Range("M2").Copy ThisWorkbook.Sheets("HEURE SUP").Range("C" & Lg)par
ThisWorkbook.Sheets("HEURE SUP").Range("D" & Lg) = .Sheets("Feuil1").Range("N1").value
'il faut mettre ici la deuxième cellule que tu veux copié dans la colonne C
ThisWorkbook.Sheets("HEURE SUP").Range("C" & Lg) = .Sheets("Feuil1").Range("M2").value fred