Récuperer valeurs fichier fermé plusieurs onglets

Bonjour et mes meilleurs vœux 2023

Je voudrais récupérer des infos dans un fichier fermé et dans une cellule et onglet , jusque là ça va très bien.

Seulement je voudrais récupérer d'autres informations dans une autre feuille du même fichier et là je n'y arrive pas.

Dois-je refermer le fichier et le recharger ?

Merci pour votre aide

Onglet = Array("Feuill1", "Feuill2")
Maconnexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomFichier & ";Extended Properties=""Excel 12.0;HDR=No"";"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cellule = "A21:AD21"
MaRequete = "select * from[" & Onglet(0) & "$" & Cellule & "]"
Rs.Open MaRequete, Maconnexion
Fin = Worksheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Données").Range("B" & Fin).CopyFromRecordset Rs
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cellule = "D21"
MaRequete = "select * from[" & Onglet(1) & "$" & Cellule & "]"
Fin = Worksheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Données").Range("B" & Fin).CopyFromRecordset Rs
Maconnexion.Close
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Bonjour Jefekoi

Il faut utiliser 2 jeux de RecordSet différents

Dim Rs1 as ADODB.Recordset, Rs2 as ADODB.Recordset

A+

Merci Bruno

Est-ce correct ?

Mais ça marche uniquement si je fais comme ceci :

Dim Rs1 As New ADODB.Recordset
Dim Rs2 As New ADODB.Recordset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cellule = "A21:AD21"
MaRequete = "select * from[" & Onglet(0) & "$" & Cellule & "]"
Rs1.Open MaRequete, Maconnexion
Fin = Worksheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Données").Range("A" & Fin).Value = Fichiers
Sheets("Données").Range("F" & Fin).CopyFromRecordset Rs1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cellule = "K14:K14"
MaRequete = "select * from[" & Onglet(1) & "$" & Cellule & "]"
Rs2.Open MaRequete, Maconnexion
Sheets("Données").Range("D" & Fin).CopyFromRecordset Rs2
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Re,

Normalement oui

A+

Merci une dernière question dans la deuxième feuille je dois récupérer 2 cellules différentes

K14 et B20

je dois recréer un nouveau jeu ?

Re,

Après réflexion, normalement on peut juste faire

Cellule = "A21:AD21"
MaRequete = "select * from[" & Onglet(0) & "$" & Cellule & "]"
Rs.Open MaRequete, Maconnexion
Fin = Worksheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Données").Range("A" & Fin).Value = Fichiers
Sheets("Données").Range("F" & Fin).CopyFromRecordset Rs
Rs.Close
' 2ème cellule
Cellule = "K14:K14"
MaRequete = "select * from[" & Onglet(1) & "$" & Cellule & "]"
Rs.Open MaRequete, Maconnexion
Sheets("Données").Range("D" & Fin).CopyFromRecordset Rs
RS.Close
' 3ème Cellule
Cellule = "B20:B20"
MaRequete = "select * from[" & Onglet(1) & "$" & Cellule & "]"
Rs.Open MaRequete, Maconnexion
Sheets("Données").Range("D" & Fin).CopyFromRecordset Rs
RS.Close

A+

MAGNIFIQUE

Merci Bruno

Excellente journée à toi

Re,

De rien, la même chose pour toi

Bonjour,

Je reviens un peu sur la macro,

Son but est d'analyser de récupérer des donnés dans différents fichiers et dossiers

Jusque là ça va.

Là ou il y a un problème c'est que dans certains fichiers les noms des onglets ne sont pas les mêmes , mais commencent par la même chose , j'ai essayé avec l’astérisque mais ça ne marche pas.

Je connais leur noms d'avance mais je ne sais pas dans quel fichier on peut les retrouver exactement.

Avez vous une idée ?

Bonjour,

J'ai trouvé une façon de me donner le Nom des onglets d'un fichier fermé

Seulement lorsque j'appelle la function je n'arrive pas à retourner le Nom des onglets : MonOnglet

Sauf si je met un Msgbox dans la function mais mon but est de récupérer dans la macro "teste"

C'est sur que c'est tout bête mais je n'y arrive pas et en même temps en regardant sur le Net on voit toute sorte de méthode.

Function GetSheetsNames(file)
Set sh = GetObject(file).Worksheets
For Each c In sh
MonOnglet= MonOnglet & chr(13) & c.Name
Next
End Function

Sub Teste()
file = "C:\Your path\Your file.xls"
GetSheetsNames (file)
End Sub

Hummm en cherchant sur le OuaiB

J'ai trouvé cette source qui est pas mal pour afficher les noms des onglets d'un fichier fermé

N'oubliez pas de modifier le lien et le nom du fichier : szFullName = "Lien\fichier.xlsx"

J'ai besoin d'un avis de nos expert pour me dire si cette source est bien ou pas.

Public Sub DemoGetSheetNames()
    Dim lNumEntries As Long
    Dim szFullName As String
    Dim szFileSpec As String
    Dim aszSheetList() As String
    Sheet1.UsedRange.Clear
    szFullName = "Lien\fichier.xlsx" 'CStr(Application.GetOpenFilename(szFileSpec, , "Select an Excel File"))

    If szFullName <> CStr(False) Then
        GetSheetNames szFullName, aszSheetList()
        lNumEntries = UBound(aszSheetList) - LBound(aszSheetList) + 1
        Sheet1.Range("A1").Resize(lNumEntries).Value = Application.WorksheetFunction.Transpose(aszSheetList())
        Sheet1.Range("A1").EntireColumn.AutoFit
    End If
End Sub
Private Sub GetSheetNames(ByRef szFullName As String, ByRef aszSheetList() As String)
    Dim bIsWorksheet As Boolean
    Dim objConnection As ADODB.Connection
    Dim rsData As ADODB.Recordset
    Dim lIndex As Long
    Dim szConnect As String
    Dim szSheetName As String
    Erase aszSheetList()
   ' If Application.Version < 12 Then
   '     szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & szFullName & ";Extended Properties=Excel 8.0;"
   ' Else
        szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & szFullName & ";Extended Properties=Excel 8.0;"
   ' End If
    Set objConnection = New ADODB.Connection
    objConnection.Open szConnect
    Set rsData = objConnection.OpenSchema(adSchemaTables)
    Do While Not rsData.EOF

        bIsWorksheet = False
        szSheetName = rsData.Fields("TABLE_NAME").Value
        If Right$(szSheetName, 1) = "$" Then
            ''' This is a simple sheet name. Remove the trailing "$" and continue.
            szSheetName = Left$(szSheetName, Len(szSheetName) - 1)
            bIsWorksheet = True
        ElseIf Right$(szSheetName, 2) = "$'" Then
            ''' This is a sheet name with spaces and/or special characters.
            ''' Remove the right "&'" characters.
            szSheetName = Left$(szSheetName, Len(szSheetName) - 2)
            ''' Remove the left single quote character.
            szSheetName = Right$(szSheetName, Len(szSheetName) - 1)
            bIsWorksheet = True

        End If

        If bIsWorksheet Then

            ''' Embedded single quotes in the sheet name will be doubled up.
            ''' Replace any doubled single quotes with one single quote.
            szSheetName = Replace$(szSheetName, "''", "'")
            ''' Load the processed sheet name into the array.
            ReDim Preserve aszSheetList(0 To lIndex)
            aszSheetList(lIndex) = szSheetName
            lIndex = lIndex + 1
        End If
        rsData.MoveNext
    Loop
    MsgBox Y
    rsData.Close
    Set rsData = Nothing
    objConnection.Close
    Set objConnection = Nothing

End Sub
Rechercher des sujets similaires à "recuperer valeurs fichier ferme onglets"