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

recherche du nom de la 1ère feuille d'un fichier fermé, dans le cadre d'une boucle

4 réponses
Avatar
Antoine76
Bonsoir

Dans le cadre de la récupération de valeurs provenant de tous fichiers
fermés, tous classés dans un même dossier, je voudrais mettre, comme
condition au sein d'une boucle avant copie, < si le nom de la feuille 1 du
fichier i est "Salariés" >.
J'ai essayé de voir comment tirer partie du programme de Robert Dezan :
RD-lecture données classeur fermé V1B sur excelabo
(http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme).
Il y a une macro, Extraction_NomsFeuilles_Classeur_Fermé, qui est intégrée à
tout un ensemble de macro.
Malheureusement, je n'arrive pas à "isoler" les lignes maîtresse de ce
programme tout en les gardant fonctionnelles afin de pouvoir les
réutiliser.

Peut-être certains d'entre vous ont-ils déjà eu à résoudre ce cas de figure
et pourraient m'indiquer comment mettre sous variable le nom de la 1ère
feuille du fichier ?

Merci à tous

Antoine

4 réponses

Avatar
michdenis
Bonjour Antoine76,

Essaie ceci :

Tu dois charger 2 références à ton projet :
"Microsoft Activex Data Object 2.1 object Librairy"
"Microsoft ADO Ext. 2.7 for DDL and Security".

'--------------------------
Sub test()
'Adapte le chemin et le nom du classeur de ton application.
ReadSheetNames "c:Classeur1.xls"
End Sub
'--------------------------

Sub ReadSheetNames(TheCompleteFilePath As String)
Dim cnn As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim Tbl As ADOX.Table

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & TheCompleteFilePath & ";" & _
"Extended Properties=Excel 8.0;"
Cat.ActiveConnection = cnn
For Each Tbl In Cat.Tables
If InStr(1, Tbl.Name, "$") > 0 Then
MsgBox Left$(Tbl.Name, Len(Tbl.Name) - 1)
End If
Next Tbl
Set Cat = Nothing
cnn.Close
Set cnn = Nothing
End Sub
'--------------------------


Salutations!



"Antoine76" a écrit dans le message de news:
Bonsoir

Dans le cadre de la récupération de valeurs provenant de tous fichiers
fermés, tous classés dans un même dossier, je voudrais mettre, comme
condition au sein d'une boucle avant copie, < si le nom de la feuille 1 du
fichier i est "Salariés" >.
J'ai essayé de voir comment tirer partie du programme de Robert Dezan :
RD-lecture données classeur fermé V1B sur excelabo
(http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme).
Il y a une macro, Extraction_NomsFeuilles_Classeur_Fermé, qui est intégrée à
tout un ensemble de macro.
Malheureusement, je n'arrive pas à "isoler" les lignes maîtresse de ce
programme tout en les gardant fonctionnelles afin de pouvoir les
réutiliser.

Peut-être certains d'entre vous ont-ils déjà eu à résoudre ce cas de figure
et pourraient m'indiquer comment mettre sous variable le nom de la 1ère
feuille du fichier ?

Merci à tous

Antoine
Avatar
Antoine76
Bonjour michdenis

Merci pour ton aide, et si rapide en plus...

J'ai coché les 2 références VBA et cela fonctionne.
Il m'envoie bien le nom "normal" de toutes les feuilles, sauf pour une dont
le nom de composé de 2 mots (Juneau Bureau) pour lequel il me met un '
devant et un $ derrière. Il m'envoie aussi pour toutes les feuilles un nom
de type 'toto$Impression_des_ (?) et 'toto$zone_d_impressi (?) qui doivent
correspondre à la définition de la zone d'impression et de la ligne de titre
à reporter à chaque page.
Peu importe, car le nom "Sommaire" que je recherche sort "clean" et en
direct.

Petite question annexe : la sélection de ces 2 références est-elle
automatiquement enclenché pour le VBA de tous les fichiers?

Merci à toi, pour le coup de clavier !

Antoine

"michdenis" a écrit dans le message de news:
#
Bonjour Antoine76,

Essaie ceci :

Tu dois charger 2 références à ton projet :
"Microsoft Activex Data Object 2.1 object Librairy"
"Microsoft ADO Ext. 2.7 for DDL and Security".

'--------------------------
Sub test()
'Adapte le chemin et le nom du classeur de ton application.
ReadSheetNames "c:Classeur1.xls"
End Sub
'--------------------------

Sub ReadSheetNames(TheCompleteFilePath As String)
Dim cnn As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim Tbl As ADOX.Table

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & TheCompleteFilePath & ";" & _
"Extended Properties=Excel 8.0;"
Cat.ActiveConnection = cnn
For Each Tbl In Cat.Tables
If InStr(1, Tbl.Name, "$") > 0 Then
MsgBox Left$(Tbl.Name, Len(Tbl.Name) - 1)
End If
Next Tbl
Set Cat = Nothing
cnn.Close
Set cnn = Nothing
End Sub
'--------------------------


Salutations!



"Antoine76" a écrit dans le message de news:


Bonsoir

Dans le cadre de la récupération de valeurs provenant de tous fichiers
fermés, tous classés dans un même dossier, je voudrais mettre, comme
condition au sein d'une boucle avant copie, < si le nom de la feuille 1 du
fichier i est "Salariés" >.
J'ai essayé de voir comment tirer partie du programme de Robert Dezan :
RD-lecture données classeur fermé V1B sur excelabo
(http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme).
Il y a une macro, Extraction_NomsFeuilles_Classeur_Fermé, qui est intégrée
à

tout un ensemble de macro.
Malheureusement, je n'arrive pas à "isoler" les lignes maîtresse de ce
programme tout en les gardant fonctionnelles afin de pouvoir les
réutiliser.

Peut-être certains d'entre vous ont-ils déjà eu à résoudre ce cas de
figure

et pourraient m'indiquer comment mettre sous variable le nom de la 1ère
feuille du fichier ?

Merci à tous

Antoine






Avatar
michdenis
Bonjour Antoine 76,

Un espace dans le nom d'une feuille est souvent précurseur à bien des surprises.

Si tu modifies cette section, cela devrait aller :

For Each Tbl In Cat.Tables
If InStr(1, "'" & Tbl.Name & "'", "$") > 0 Then
MsgBox Left(WorksheetFunction.Substitute(Tbl.Name, "$", ""), Len(Tbl.Name) - 1)
End If
Next Tbl

Les noms avec des espaces vont se présenter sous cet aspect
'Feuil1 denis' entouré de guillement simple.

Cette section dans ta question :
| 'toto$Impression_des_ (?) et 'toto$zone_d_impressi (?) qui doivent
| correspondre à la définition de la zone d'impression et de la ligne

À quoi fais-tu référence ? Le symbole "$" est prohibé dans la
nomination d'une plage nommée.

De façon générale, Ado considère "Les plages nommées" comme des "Table"
de données. De même en est-il des feuilles de calculs. Dans le cas de ces
dernières, ADO ajoute le suffixe "$" à la fin des noms de feuille comme pour
indiquer que c'est une table....!


Salutations!


"Antoine76" a écrit dans le message de news: %
Bonjour michdenis

Merci pour ton aide, et si rapide en plus...

J'ai coché les 2 références VBA et cela fonctionne.
Il m'envoie bien le nom "normal" de toutes les feuilles, sauf pour une dont
le nom de composé de 2 mots (Juneau Bureau) pour lequel il me met un '
devant et un $ derrière. Il m'envoie aussi pour toutes les feuilles un nom
de type 'toto$Impression_des_ (?) et 'toto$zone_d_impressi (?) qui doivent
correspondre à la définition de la zone d'impression et de la ligne de titre
à reporter à chaque page.
Peu importe, car le nom "Sommaire" que je recherche sort "clean" et en
direct.

Petite question annexe : la sélection de ces 2 références est-elle
automatiquement enclenché pour le VBA de tous les fichiers?

Merci à toi, pour le coup de clavier !

Antoine

"michdenis" a écrit dans le message de news:
#
Bonjour Antoine76,

Essaie ceci :

Tu dois charger 2 références à ton projet :
"Microsoft Activex Data Object 2.1 object Librairy"
"Microsoft ADO Ext. 2.7 for DDL and Security".

'--------------------------
Sub test()
'Adapte le chemin et le nom du classeur de ton application.
ReadSheetNames "c:Classeur1.xls"
End Sub
'--------------------------

Sub ReadSheetNames(TheCompleteFilePath As String)
Dim cnn As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim Tbl As ADOX.Table

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & TheCompleteFilePath & ";" & _
"Extended Properties=Excel 8.0;"
Cat.ActiveConnection = cnn
For Each Tbl In Cat.Tables
If InStr(1, Tbl.Name, "$") > 0 Then
MsgBox Left$(Tbl.Name, Len(Tbl.Name) - 1)
End If
Next Tbl
Set Cat = Nothing
cnn.Close
Set cnn = Nothing
End Sub
'--------------------------


Salutations!



"Antoine76" a écrit dans le message de news:


Bonsoir

Dans le cadre de la récupération de valeurs provenant de tous fichiers
fermés, tous classés dans un même dossier, je voudrais mettre, comme
condition au sein d'une boucle avant copie, < si le nom de la feuille 1 du
fichier i est "Salariés" >.
J'ai essayé de voir comment tirer partie du programme de Robert Dezan :
RD-lecture données classeur fermé V1B sur excelabo
(http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme).
Il y a une macro, Extraction_NomsFeuilles_Classeur_Fermé, qui est intégrée
à

tout un ensemble de macro.
Malheureusement, je n'arrive pas à "isoler" les lignes maîtresse de ce
programme tout en les gardant fonctionnelles afin de pouvoir les
réutiliser.

Peut-être certains d'entre vous ont-ils déjà eu à résoudre ce cas de
figure

et pourraient m'indiquer comment mettre sous variable le nom de la 1ère
feuille du fichier ?

Merci à tous

Antoine






Avatar
Antoine76
De retour, michdenis - heures française pour le dernier repas oblige !

Le symbole $ apparaît pour la plage de "zone_d_impression" (vérification
faite dans insertion/nom/définir seulement dans la feuille Sommaire), mais
la zone "impression_des_titres" concerne elle, toutes les feuilles .
Si tu veux visualiser la chose, je t'ai mis le fichier en Cjoint :
http://cjoint.com/?bovA0YGqWy

La modification que tu as apportée, supprime effectivement tous les $ ; mais
les zone_d_impression et impression_des_titres subsistent, ainsi que les '
sur certains noms , mais pas tous...
Mais ne te tracasses pas ,car la recherche sélective sur le nom stricte de
"Sommaire" les éliminera de toute façon.

Merci à toi

Antoine

"michdenis" a écrit dans le message de news:

Bonjour Antoine 76,

Un espace dans le nom d'une feuille est souvent précurseur à bien des
surprises.


Si tu modifies cette section, cela devrait aller :

For Each Tbl In Cat.Tables
If InStr(1, "'" & Tbl.Name & "'", "$") > 0 Then
MsgBox Left(WorksheetFunction.Substitute(Tbl.Name, "$", ""),
Len(Tbl.Name) - 1)

End If
Next Tbl

Les noms avec des espaces vont se présenter sous cet aspect
'Feuil1 denis' entouré de guillement simple.

Cette section dans ta question :
| 'toto$Impression_des_ (?) et 'toto$zone_d_impressi (?) qui doivent
| correspondre à la définition de la zone d'impression et de la ligne

À quoi fais-tu référence ? Le symbole "$" est prohibé dans la
nomination d'une plage nommée.

De façon générale, Ado considère "Les plages nommées" comme des "Table"
de données. De même en est-il des feuilles de calculs. Dans le cas de ces
dernières, ADO ajoute le suffixe "$" à la fin des noms de feuille comme
pour

indiquer que c'est une table....!


Salutations!


"Antoine76" a écrit dans le message de news:
%

Bonjour michdenis

Merci pour ton aide, et si rapide en plus...

J'ai coché les 2 références VBA et cela fonctionne.
Il m'envoie bien le nom "normal" de toutes les feuilles, sauf pour une
dont

le nom de composé de 2 mots (Juneau Bureau) pour lequel il me met un '
devant et un $ derrière. Il m'envoie aussi pour toutes les feuilles un nom
de type 'toto$Impression_des_ (?) et 'toto$zone_d_impressi (?) qui
doivent

correspondre à la définition de la zone d'impression et de la ligne de
titre

à reporter à chaque page.
Peu importe, car le nom "Sommaire" que je recherche sort "clean" et en
direct.

Petite question annexe : la sélection de ces 2 références est-elle
automatiquement enclenché pour le VBA de tous les fichiers?

Merci à toi, pour le coup de clavier !

Antoine

"michdenis" a écrit dans le message de news:
#
Bonjour Antoine76,

Essaie ceci :

Tu dois charger 2 références à ton projet :
"Microsoft Activex Data Object 2.1 object Librairy"
"Microsoft ADO Ext. 2.7 for DDL and Security".

'--------------------------
Sub test()
'Adapte le chemin et le nom du classeur de ton application.
ReadSheetNames "c:Classeur1.xls"
End Sub
'--------------------------

Sub ReadSheetNames(TheCompleteFilePath As String)
Dim cnn As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim Tbl As ADOX.Table

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & TheCompleteFilePath & ";" & _
"Extended Properties=Excel 8.0;"
Cat.ActiveConnection = cnn
For Each Tbl In Cat.Tables
If InStr(1, Tbl.Name, "$") > 0 Then
MsgBox Left$(Tbl.Name, Len(Tbl.Name) - 1)
End If
Next Tbl
Set Cat = Nothing
cnn.Close
Set cnn = Nothing
End Sub
'--------------------------


Salutations!



"Antoine76" a écrit dans le message de news:


Bonsoir

Dans le cadre de la récupération de valeurs provenant de tous fichiers
fermés, tous classés dans un même dossier, je voudrais mettre, comme
condition au sein d'une boucle avant copie, < si le nom de la feuille 1
du


fichier i est "Salariés" >.
J'ai essayé de voir comment tirer partie du programme de Robert Dezan :
RD-lecture données classeur fermé V1B sur excelabo
(http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme).
Il y a une macro, Extraction_NomsFeuilles_Classeur_Fermé, qui est
intégrée


à
tout un ensemble de macro.
Malheureusement, je n'arrive pas à "isoler" les lignes maîtresse de ce
programme tout en les gardant fonctionnelles afin de pouvoir les
réutiliser.

Peut-être certains d'entre vous ont-ils déjà eu à résoudre ce cas de
figure

et pourraient m'indiquer comment mettre sous variable le nom de la 1ère
feuille du fichier ?

Merci à tous

Antoine