Ouvrir et fermer un classeur sous Excel
Bonjour,
je suis entrain de faire une macro qui va extraire des valeurs d'une cellule d'une feuille excel et la mettre dans une autre feuille.
le hic c'est cette valeur ne peut etre extraite que si la feuille est ouverte .
donc ce que je veux faire c ouvrir cette feuille, extraire la valeur dont j'ai besoin et refermer cette feuille apres.
ce qui est en rouge n'a pas marché.
voila le code:
Sub ListeFichiers(Repertoire As String, iIndexMois As Long)
'-----------------------------------------------------------------------------------------
' Déclarations
'-----------------------------------------------------------------------------------------
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim FileItem As Scripting.File
Dim i As Long
Dim Nchaine, Ndebut, Nfin, f1nom As String
Dim Mchaine, Mdebut, Mfin, f1mois As String
Dim nom As String
Dim mois As String
Dim Feuilconso As Worksheet
Dim feuilsource As Worksheet
Dim Lig4, DerLig4 As Long
Dim valeur As Double
Dim name As String
Dim xlApp As Excel.Application
Dim xlBook As Workbook
Dim xlSheet As Worksheet
'-----------------------------------------------------------------------------------------
' Traitements
'-----------------------------------------------------------------------------------------
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
Set Feuilconso = Sheets("conso-factu TMA AXA")
'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
name = FileItem.name
'fnom renvoie le nom extrait du nom de fichier
Nchaine = FileItem.name
Ndebut = InStr(1, Nchaine, " ", vbTextCompare) + 1
Nfin = InStr(1, Nchaine, "_", vbTextCompare)
f1nom = Mid(Nchaine, Ndebut, Nfin - Ndebut)
'fmois renvoie le mois extrait du nom du fichier
Mchaine = FileItem.name
Mdebut = Right(Mchaine, 9)
f1mois = Mid(Mdebut, 1, 2)
With Sheets("conso-factu TMA AXA")
DerLig4 = .Range("A" & Rows.Count).End(xlUp).Row
For Lig4 = 3 To DerLig4
nom = Feuilconso.Range("A" & Lig4).Value
mois = iIndexMois
If nom = f1nom And mois = f1mois Then
[color=red]Workbooks(name).Worksheets("Feuil1").Open[/color]
valeur = (Workbooks(name).Worksheets("Feuil1").Range("C" & 8).Value)
.Range("D" & Lig4).Value = valeur
[color=red] Workbooks(name).Worksheets("Feuil1").Close[/color]
End If
Next Lig4
End With
Next FileItem
End SubComment je peux faire cela?
Merci
- Messages
- 1'036
- Excel
- 2003 FR / 2007 UK
- Inscrit
- 07/05/2007
- Emploi
- Consultant en finance
Il faut que tu mettes le nom complet du classeur je pense,
du style C:\Mes Documents.....
Ou thisworkbook.path & "\Dossier\" si tu ton classeur est dans le même répertoire que le classeur qui contient la macro...
souri84 a écrit :Il faut que tu mettes le nom complet du classeur je pense,
du style C:\Mes Documents.....
Ou thisworkbook.path & "\Dossier" si tu ton classeur est dans le même répertoire que le classeur qui contient la macro...
j'ai essayé mais ça marche pas
Bonsoir,
Essaie :
...
If nom = f1nom And mois = f1mois Then
Workbooks.Open name
valeur = Workbooks(name).Worksheets("Feuil1").Range("C8").Value
Workbooks(name).Close
.Range("D" & Lig4).Value = valeur
End if
...A+
salut le forum
Nsqualli, merci de répondre sur tes deux autres ficelles
https://forum.excel-pratique.com/viewtopic.php?t=8612
et
https://forum.excel-pratique.com/viewtopic.php?t=8619
Je vais encore passer pour être une peste sur le forum
La Charte est pourtant assez clair
Dans la charte l'Administrateur a écrit :EN POSTANT UNE QUESTION VOUS VOUS ENGAGEZ A DONNER OBLIGATOIREMENT UNE REPONSE SI VOUS AVEZ OBTENU DE L'AIDE (cela représente un minimum de respect pour les membres qui prennent le temps de vous aider, c'est également leur seul remerciement ... si vous ne voulez pas respecter les personnes à qui vous demandez de l'aide, ne posez pas de question, merci).
Mytå
Merci pour vos réponses pertinentes