XL 2010 Mettre dans variable onglet fichiers[RESOLU]

cathodique

XLDnaute Barbatruc
Bonjour,

Je voudrais récupérer dans une variable le nom d'onglet de classeurs ouverts successivement.
Je vérifie que le fichier ouvert n'a qu'un onglet, si c'est le cas je récupère le nom dans une variable, puis ferme le fichier.
Cette variable me servira pour faire une boucle sur ces onglets ajoutés à mon fichier principal.
Je suis bloqué merci pour votre coup de main.
VB:
Sub MesFeuilles()
   Dim Fichiers As Variant, i As Integer, wb As Workbook
   Dim Wm As String, Sh
   Wm = ThisWorkbook.Name

   Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)

   If IsArray(Fichiers) Then
      For i = 1 To UBound(Fichiers)
         Set wb = Workbooks.Open(Fichiers(i))
         If wb.Sheets.Count = 1 Then
'Récupérer wb.Activesheet.Name dans Array
'...............................................................................................

         End If
         wb.Close
         Set wb = Nothing
      Next i
   End If
End Sub
Bonne soirée
 
Solution
Bonsoir Cathodique,
Pour une utilisation ultérieure il faut déclarer l'Array en public, par ex en faisant :
VB:
Public ArrayOnglet(1000), N
Sub MesFeuilles()
   Dim Fichiers As Variant, i As Integer, wb As Workbook
   Dim Wm As String, Sh
   Wm = ThisWorkbook.Name
   Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)
   If IsArray(Fichiers) Then
      For i = 1 To UBound(Fichiers)
         Set wb = Workbooks.Open(Fichiers(i))
         If wb.Sheets.Count = 1 Then
            'Récupérer wb.Activesheet.Name dans Array
            ArrayOnglet(N) = wb.Sheets(1).Name
            N = N + 1
         End If
         wb.Close
         Set wb = Nothing
      Next i
   End If
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Cathodique,
Pour une utilisation ultérieure il faut déclarer l'Array en public, par ex en faisant :
VB:
Public ArrayOnglet(1000), N
Sub MesFeuilles()
   Dim Fichiers As Variant, i As Integer, wb As Workbook
   Dim Wm As String, Sh
   Wm = ThisWorkbook.Name
   Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)
   If IsArray(Fichiers) Then
      For i = 1 To UBound(Fichiers)
         Set wb = Workbooks.Open(Fichiers(i))
         If wb.Sheets.Count = 1 Then
            'Récupérer wb.Activesheet.Name dans Array
            ArrayOnglet(N) = wb.Sheets(1).Name
            N = N + 1
         End If
         wb.Close
         Set wb = Nothing
      Next i
   End If
End Sub
 

cathodique

XLDnaute Barbatruc
Bonsoir Cathodique,
Pour une utilisation ultérieure il faut déclarer l'Array en public, par ex en faisant :
VB:
Public ArrayOnglet(1000), N
Sub MesFeuilles()
   Dim Fichiers As Variant, i As Integer, wb As Workbook
   Dim Wm As String, Sh
   Wm = ThisWorkbook.Name
   Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)
   If IsArray(Fichiers) Then
      For i = 1 To UBound(Fichiers)
         Set wb = Workbooks.Open(Fichiers(i))
         If wb.Sheets.Count = 1 Then
            'Récupérer wb.Activesheet.Name dans Array
            ArrayOnglet(N) = wb.Sheets(1).Name
            N = N + 1
         End If
         wb.Close
         Set wb = Nothing
      Next i
   End If
End Sub
Bonsoir @sylvanu ;),

Je te remercie infiniment. Là, tu me "boostes vraiment.
Je n'ai pas 1000 fichiers. Je vais un peu modifier avec un Redim.

En tout cas, tu me rends un sacré service.
Pour le partage, code de Sylvanu légèrement modifié
VB:
Option Explicit
Public ArrayOnglet(), N
Sub MesFeuilles()
   Dim Fichiers As Variant, i As Integer, wb As Workbook
   Dim Wm As String, Sh
   Wm = ThisWorkbook.Name

   Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)

   If IsArray(Fichiers) Then
      For i = 1 To UBound(Fichiers)
         Set wb = Workbooks.Open(Fichiers(i))
         If wb.Sheets.Count = 1 Then
            'Récupérer wb.Activesheet.Name dans Array
            ReDim Preserve ArrayOnglet(N)
            ArrayOnglet(N) = wb.Sheets(1).Name
            N = N + 1
         End If
         wb.Close
         Set wb = Nothing
      Next i
   End If
End Sub

Bonne soirée.

edit: je me suis noyé dans un verre d'eau
 

Discussions similaires

Réponses
2
Affichages
463

Statistiques des forums

Discussions
314 495
Messages
2 110 223
Membres
110 708
dernier inscrit
novy16