Importer noms feuilles d'un classseur fermé

Bonjour,

J'ai besoin d'importer la liste des noms de feuilles de mon classeur fermé dans des cellules de mon classeur ouvert et pour cela j'ai fait ceci (je n'ai rien inventé...)

1.Private Sub CommandButton1_Click()
2.
3.Dim XlConnect As Object, XlCatalog As Object
4. Dim Fichier As String, Resultat As String
5. Dim Feuille As Object
6. Dim objCell As Range
7.
8.Fichier = "h:\monfichierferme.xls"
9.
10.Set XlConnect = CreateObject("ADODB.Connection" )
11. Set XlCatalog = CreateObject("ADOX.Catalog" )
12.
13.XlConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
14. ";Extended Properties=Excel 8.0;"
15. Set XlCatalog.ActiveConnection = XlConnect
16.
17.Cells(1, 1).Select
18.
19.'je ne récupére que les noms qui se terminent par "$"
20.
21.For Each Feuille In XlCatalog.Tables
22. If UCase(Right(Feuille.Name, 1)) = "$" Then
23. ActiveCell = Feuille.Name
24.
25.
26.'et suprime le "$"
27.
28.For Each objCell In Selection
29.     If Right(objCell.Value, 1) = "$" Then
30.         objCell.Value = Left(objCell.Value, Len(objCell.Value) - 1)
31.     End If
32. Next objCell
33.
34.ActiveCell.Offset(1, 0).Select
35.
36.End If
37.
38.Next
39.
40.End Sub

ce code fonctionne parfaitement sous excel 2003 ou 2010 mais bug sous 2000 avec un message d'erreur:

"projet ou bibliothéque introuvable" et surligne de cette façon la ligne

If UCase(Right(Feuille.Name, 1)) = "$" Then

que me faut-il modifier pour que cela fonctionne svp ?

s' agit-il de Microsoft office 11.0 object library coché d'un coté et Microsoft office 9.0 object library de l'autre dans les références ?

puis-je contourner le pobléme ?

Un grand merci pour vos réponses

Bonjour

Quand tu as ce message d'erreur

Dans l'éditeur VB

Menu : Exécution ---> Réinitialiser

Menu : Outils --> Références

Il faut décocher tous les références qui sont signalées "Manquant"

Voir image (c'est un exemple)

references manquantes v003

Sauvegarde le fichier, cela devrait rouler

Bonsoir,

Merci Banzai pour cette info, je ne comprends pas trop l'action de décocher un manquant mais bon, j'essaye ça demain sur 2000 !

Merci encore Banzai, c'est sympa

Merci Banzai,

Le fait de décocher les manquants a bien résolu mon probléme

ce qui donne au final ceci:

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

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 .

Bonjour

Je ne connais pas ""ADODB.Connection" ni "ADOX.Catalog"

mais tu récupères les feuilles du classeurs

Et si tu testais la propriété visible de ces Feuilles

If (UCase(Right(Feuille.Name, 1)) = "$") Or (UCase(Right(Feuille.Name, 2)) = "$'") and (Feuille.Visible = xlSheetVisible) Then

Sinon moi je ne sais pas

Bonsoir Banzai,

ça ne fonctionne pas mais je te remerci beaucoup pour ton coup de pouce

Rechercher des sujets similaires à "importer noms feuilles classseur ferme"