seagull6 | Bonjour,
Merci oovaveoo , au final je suis arrivé à ce résultat qui fonctionne dans tous les cas de figure.
reste un cas particulier à gérer qui est le suivant:
quand je lance ma macro fichier fermé tout est ok et j'ai bien la liste des feuilles visibles avec leur nom propre par contre si d'aventure le fichier se trouve être ouvert alors viennent aussi s'ajouter les feuilles cachées(en hidden), ce que je ne souhaite pas.
Code :
- Private Sub CommandButton1_Click()
- Dim XlConnect As Object, XlCatalog As Object
- Dim Fichier As String, Resultat As String
- Dim Feuille As Object
- Fichier = "h:\monfichierferme.xls"
- Set XlConnect = CreateObject("ADODB.Connection" )
- Set XlCatalog = CreateObject("ADOX.Catalog" )
- XlConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
- ";Extended Properties=Excel 8.0;"
- Set XlCatalog.ActiveConnection = XlConnect
- Cells(1, 1).Select
- 'je teste si le nom de chaque feuille se termine par $ ou par $' et si oui l'importe dans ma ellule
- For Each Feuille In XlCatalog.Tables
- If UCase(Right(Feuille.Name, 1)) = "$" Or UCase(Right(Feuille.Name, 2)) = "$'" Then
- ActiveCell.Value = nom
- ActiveCell = Feuille.Name
- 'je reprend chaque valeur et si elle se termine par $ je suprime 1 caractére à la fin
- 'si elle se termine par $' je suprime 2 caractéres à la fin
- Dim objCell As Range
- For Each objCell In Selection
- If Right(objCell.Value, 1) = "$" Then
- objCell.Value = Left(objCell.Value, Len(objCell.Value) - 1)
- End If
- If Right(objCell.Value, 2) = "$'" Then
- objCell.Value = Left(objCell.Value, Len(objCell.Value) - 2)
- End If
-
- Next objCell
- ActiveCell.Offset(1, 0).Select
- End If
- Next
- End Sub
|
|