Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Chemin

11 réponses
Avatar
Michel Mto
Bonjour à toutes et à tous,
Est ce que dans une macro de ce type :

MATCH(""Totaux"",'[Brouillard XXX " & Year(Date) & _
".xls]" & Workbooks("Brouillard XXX " & Year(Date) &
".xls").Sheets(Workbooks("Brouillard XXX " _
& Year(Date) & ".xls").Sheets.Count - 1).Name & _
"'!$C:$C,0)
qui me donne la formule suivante : EQUIV("Totaux";'[Brouillard XXX
2010.xls]nomdefeuille'!$C:$C;0)

je pourrai éviter d'ouvrir le classeur "Brouillard XXX 2010.xls" qui
contient le nom de la feuille dans laquelle doit s'effectuer la recherche.
En effet, je voudrais aller chercher, au travers de ce code, le nom de
l'avant dernière feuille, mais sans ouvrir ce classeur.

Est ce possible, quelle est la synthaxe ??
Merci d'avance pour votre aide.

Michel MTO

1 réponse

1 2
Avatar
Michel Mto
Encore merci Daniel,
j'ai adapter de la manière suivante :
Sub NbFeuillesClasseurFerméEssai3()
Dim XlDb As DAO.Database, Nb As Integer, Tabl() As String
Dim Fichier As String, Ctr As Integer
Ctr = -1
Fichier = _
"d:donneesdanielvocabulaire.xls"
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;")
For i = 0 To XlDb.TableDefs.Count - 1
' ci dessous j'ai mis 2 dans le right et mis ="$'" car
XlDb.TableDefs(i).Name ramène le nom avec un apostrophe
If Right(XlDb.TableDefs(i).Name, 2) = "$'" Then
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
' puis ceci car mes noms de feuille ont tous 4 caractères
Tabl(Ctr) = Mid(XlDb.TableDefs(i).Name, 2, 4)
End If
'Stop
Next i
' j'ai enlever le -1 car cela me ramène le nom de la feuille se trouvant
avant l'avant dernière feuille !!!
MsgBox Tabl(UBound(Tabl))
End Sub

Cdlt
Michel MTO

"DanielCo" a écrit dans le message de news:
i2bruh$usl$
Bonjour.
Je ne connais rien à DAO; je suppose que :
Set XlDb = OpenDatabase(fichier, False, True, "Excel 8.0;")
affecte à XLDb l'objet classeur
et que :
XlDb.TableDefs
représente les feuilles et les plages définies dans le classeur. Pour
trouver l'avant dernière feuille, essaie :

Sub test()
Dim XlDb As DAO.Database, Nb As Integer, Tabl() As String
Dim Fichier As String, Ctr As Integer
Ctr = -1
Fichier = "d:donneesdanielvocabulaire.xls"
Set XlDb = OpenDatabase(Fichier, False, True, "Excel 8.0;")
For i = 0 To XlDb.TableDefs.Count - 1
If Right(XlDb.TableDefs(i).Name, 1) = "$" Then
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Tabl(Ctr) = XlDb.TableDefs(i).Name
End If
Next i
MsgBox Tabl(UBound(Tabl) - 1)
End Sub

Cordialement.
Daniel

> Bonjour Daniel,
> Effectivement au moment de l'exécution du code il y avait une petite


erreur,
> "l'indice n'appartient pas à la sélection" quelque chose dans ce genre


!!
> merci à toi pour la correction.
>
> Connais tu la signafication de :
> Set XlDb = OpenDatabase(fichier, False, True, "Excel 8.0;")
> Nb = XlDb.TableDefs.Count - 1
>
> et comment éviter de compter les feuilles des plages nommées et des


plages
> filtrées.
> Merci
>
> Michel MTO
>
> "DanielCo" a écrit dans le message de news:
> i2blpk$k55$
>> Bonjour Jacky
>> Ce code fonctionne en remplaçant
>> MsgBox Sheets(Nb).Name
>> par
>> MsgBox XlDb.TableDefs(Nb).Name
>> Toutefois, il tient compte en plus des feuilles des plages nommées et
>> des plages filtrées.
>> Cordialement.
>> Daniel


1 2