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

recherchev autre classeur avec meme feuil

27 réponses
Avatar
Manu
Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32) mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu

10 réponses

1 2 3
Avatar
Manu
J'ai installé, puis cocher Microsoft Data Access component, mais rien de
changer, j'ai tjrs FAUX.

Merci pour tout ces efforts Mich

Manu

"MichD" a écrit dans le message de news:
inckcb$r29$
Tu peux télécharger MDAC 2.8 de plusieurs sites internet en faisant une
recherche sur Google : voici une des adresses. Il ne reste plus qu'à
l'installer.
MDAC = "Microsoft Data Access component"

http://www.zdnet.fr/telecharger/logiciel/microsoft-data-access-components-mdac-39072327s.htm



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d2bb$0$7714$

Ca ne fonctionne tjrs pas, il me met tjrs faux, est ce parce que je n'ai
pas
ceci :'"Microsoft ADO Ext. 2.1 for DDL and Security " j'ai donc cocher
cela
: '"Microsoft ADO Ext. 2.8 for DDL and Security "

Manu

"MichD" a écrit dans le message de news:
inci0c$kui$
OK, j'avais testé pour un classeur .xls (antérieure aux versions 2007 et
2010)

Utilise cette fonction et coches les 2 références énumérées au début de
la
fonction.

Fonctionne indépendamment de la version du fichier Excel.

'--------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.1 Library"
'"Microsoft ADO Ext. 2.1 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist1 = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'--------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99c560$0$7683$

Bonjour Mich,

Apres divers tests ca ne fonctionne pas, mais ca doit etre de ma faute
car
je n'ai pas precisé que je suis sur 2007 et donc.xlsx ce que j'ai changé
dans la formule mais je suppose qu'ici il faut modifier...
OpenDatabase(Fichier, False, True, "Excel 8.0;")
Merci

Manu

"MichD" a écrit dans le message de news:
inca2f$1nj$
Bonjour,

Tu peux utiliser une fonction personnalisée.

Dans un module standard, tu copies ceci :
Cette fonction requiert la bibliothèque (référence) suivante :
Microsoft DAO 3.6 objects library . Pour ajouter cette référence
dans la fenêtre de l'éditeur de code, barre des menus / outils /
références / et tu coches la référence indiquée.

Dans une cellule, pour appeler la fonction, tu insères la formule
suivante
:
=IsFeuilleExist("Feuil1";"c:Classeur1.xls")
La fonction retourne Vrai si la feuille existe et Faux si la feuille est
absente

Feuil1 => est le nom de l'onglet de la feuille dont tu veux vérifier la
présence
dans le classeur1.xls

c:Classeur1.xls => est le chemin et le nom du fichier Excel.

'--------------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'Microsoft DAO 3.6 objects library
Dim xlWB As DAO.Database
Dim Tbl As DAO.TableDef
Dim Nom
IsFeuilleExist = False
Set xlWB = OpenDatabase(Fichier, False, True, "Excel 8.0;")

For Each Tbl In xlWB.TableDefs
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
xlWB.Close
End Function
'--------------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d998d1d$0$7693$

Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu







Avatar
MichD
J'avais modifié le nom de la fonction pour la tester pour
la différencier de l'autre avec DAO. et j'avais oublié de
modifier cette ligne de code : IsFeuilleExist = True

Attention au nom des références à cocher, la fonction était
ancienne et il y a des versions plus récentes. J'ai mis à jour
leur appellation, celle qui devrait être cochée.

'-------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion : 4d99d8f9$0$7688$

J'ai installé, puis cocher Microsoft Data Access component, mais rien de
changer, j'ai tjrs FAUX.

Merci pour tout ces efforts Mich

Manu

"MichD" a écrit dans le message de news:
inckcb$r29$
Tu peux télécharger MDAC 2.8 de plusieurs sites internet en faisant une
recherche sur Google : voici une des adresses. Il ne reste plus qu'à
l'installer.
MDAC = "Microsoft Data Access component"

http://www.zdnet.fr/telecharger/logiciel/microsoft-data-access-components-mdac-39072327s.htm



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d2bb$0$7714$

Ca ne fonctionne tjrs pas, il me met tjrs faux, est ce parce que je n'ai
pas
ceci :'"Microsoft ADO Ext. 2.1 for DDL and Security " j'ai donc cocher
cela
: '"Microsoft ADO Ext. 2.8 for DDL and Security "

Manu

"MichD" a écrit dans le message de news:
inci0c$kui$
OK, j'avais testé pour un classeur .xls (antérieure aux versions 2007 et
2010)

Utilise cette fonction et coches les 2 références énumérées au début de
la
fonction.

Fonctionne indépendamment de la version du fichier Excel.

'--------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.1 Library"
'"Microsoft ADO Ext. 2.1 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist1 = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'--------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99c560$0$7683$

Bonjour Mich,

Apres divers tests ca ne fonctionne pas, mais ca doit etre de ma faute
car
je n'ai pas precisé que je suis sur 2007 et donc.xlsx ce que j'ai changé
dans la formule mais je suppose qu'ici il faut modifier...
OpenDatabase(Fichier, False, True, "Excel 8.0;")
Merci

Manu

"MichD" a écrit dans le message de news:
inca2f$1nj$
Bonjour,

Tu peux utiliser une fonction personnalisée.

Dans un module standard, tu copies ceci :
Cette fonction requiert la bibliothèque (référence) suivante :
Microsoft DAO 3.6 objects library . Pour ajouter cette référence
dans la fenêtre de l'éditeur de code, barre des menus / outils /
références / et tu coches la référence indiquée.

Dans une cellule, pour appeler la fonction, tu insères la formule
suivante
:
=IsFeuilleExist("Feuil1";"c:Classeur1.xls")
La fonction retourne Vrai si la feuille existe et Faux si la feuille est
absente

Feuil1 => est le nom de l'onglet de la feuille dont tu veux vérifier la
présence
dans le classeur1.xls

c:Classeur1.xls => est le chemin et le nom du fichier Excel.

'--------------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'Microsoft DAO 3.6 objects library
Dim xlWB As DAO.Database
Dim Tbl As DAO.TableDef
Dim Nom
IsFeuilleExist = False
Set xlWB = OpenDatabase(Fichier, False, True, "Excel 8.0;")

For Each Tbl In xlWB.TableDefs
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
xlWB.Close
End Function
'--------------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d998d1d$0$7693$

Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu







Avatar
isabelle
dans le cas ou le fichier est fermer, tu pourrais utiliser INDIRECT.EXT
de morefunc
http://xcell05.free.fr/morefunc/french/

isabelle
------------------------------------------------------------------

Le 2011-04-04 10:33, Manu a écrit :
Effectivement, ca fonctionne nickel à condition que les 2 fichiers soient
ouverts, j'ai tenté dans la formule d'y ajouter le chemin et de fermer le
fichier source, mais ca ne colle pas ! dommage et pourtant ca devrais
fonctionner tel qu'une recherchev
Avatar
Manu
Alors, maintenant ca fonctionne mais à condition que le nom de feuil ne
possede pas d'espace, etonnant
Manu

"MichD" a écrit dans le message de news:
incm5c$vku$
J'avais modifié le nom de la fonction pour la tester pour
la différencier de l'autre avec DAO. et j'avais oublié de
modifier cette ligne de code : IsFeuilleExist = True

Attention au nom des références à cocher, la fonction était
ancienne et il y a des versions plus récentes. J'ai mis à jour
leur appellation, celle qui devrait être cochée.

'-------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d8f9$0$7688$

J'ai installé, puis cocher Microsoft Data Access component, mais rien de
changer, j'ai tjrs FAUX.

Merci pour tout ces efforts Mich

Manu

"MichD" a écrit dans le message de news:
inckcb$r29$
Tu peux télécharger MDAC 2.8 de plusieurs sites internet en faisant une
recherche sur Google : voici une des adresses. Il ne reste plus qu'à
l'installer.
MDAC = "Microsoft Data Access component"

http://www.zdnet.fr/telecharger/logiciel/microsoft-data-access-components-mdac-39072327s.htm



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d2bb$0$7714$

Ca ne fonctionne tjrs pas, il me met tjrs faux, est ce parce que je n'ai
pas
ceci :'"Microsoft ADO Ext. 2.1 for DDL and Security " j'ai donc cocher
cela
: '"Microsoft ADO Ext. 2.8 for DDL and Security "

Manu

"MichD" a écrit dans le message de news:
inci0c$kui$
OK, j'avais testé pour un classeur .xls (antérieure aux versions 2007 et
2010)

Utilise cette fonction et coches les 2 références énumérées au début de
la
fonction.

Fonctionne indépendamment de la version du fichier Excel.

'--------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.1 Library"
'"Microsoft ADO Ext. 2.1 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist1 = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'--------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99c560$0$7683$

Bonjour Mich,

Apres divers tests ca ne fonctionne pas, mais ca doit etre de ma faute
car
je n'ai pas precisé que je suis sur 2007 et donc.xlsx ce que j'ai changé
dans la formule mais je suppose qu'ici il faut modifier...
OpenDatabase(Fichier, False, True, "Excel 8.0;")
Merci

Manu

"MichD" a écrit dans le message de news:
inca2f$1nj$
Bonjour,

Tu peux utiliser une fonction personnalisée.

Dans un module standard, tu copies ceci :
Cette fonction requiert la bibliothèque (référence) suivante :
Microsoft DAO 3.6 objects library . Pour ajouter cette référence
dans la fenêtre de l'éditeur de code, barre des menus / outils /
références / et tu coches la référence indiquée.

Dans une cellule, pour appeler la fonction, tu insères la formule
suivante
:
=IsFeuilleExist("Feuil1";"c:Classeur1.xls")
La fonction retourne Vrai si la feuille existe et Faux si la feuille
est
absente

Feuil1 => est le nom de l'onglet de la feuille dont tu veux vérifier la
présence
dans le classeur1.xls

c:Classeur1.xls => est le chemin et le nom du fichier Excel.

'--------------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'Microsoft DAO 3.6 objects library
Dim xlWB As DAO.Database
Dim Tbl As DAO.TableDef
Dim Nom
IsFeuilleExist = False
Set xlWB = OpenDatabase(Fichier, False, True, "Excel 8.0;")

For Each Tbl In xlWB.TableDefs
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
xlWB.Close
End Function
'--------------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d998d1d$0$7693$

Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je
suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je
devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu










Avatar
Manu
Ce serait nickel, mais impossible de le telecharger

J'ai ceci comme message :
Warning: main(./common/init.php) [function.main]: failed to open stream: No
such file or directory in /mnt/169/sda/2/4/xcell05/fclicksql/fclick.php on
line 16
Fatal error: main() [function.require]: Failed opening required
'./common/init.php'
(include_path='/mnt/169/sda/2/4/xcell05/include:.:/usr/php4/lib/php') in
/mnt/169/sda/2/4/xcell05/fclicksql/fclick.php on line 16

Manu


"isabelle" a écrit dans le message de news:
incm8p$a7$
dans le cas ou le fichier est fermer, tu pourrais utiliser INDIRECT.EXT
de morefunc
http://xcell05.free.fr/morefunc/french/

isabelle
------------------------------------------------------------------

Le 2011-04-04 10:33, Manu a écrit :
Effectivement, ca fonctionne nickel à condition que les 2 fichiers soient
ouverts, j'ai tenté dans la formule d'y ajouter le chemin et de fermer le
fichier source, mais ca ne colle pas ! dommage et pourtant ca devrais
fonctionner tel qu'une recherchev
Avatar
isabelle
celui-ci fonctionne toujours,
http://www.toocharger.com/fiches/windows/morefunc/11602.htm

isabelle
------------------------------------------------------------------

Le 2011-04-04 11:48, Manu a écrit :
Ce serait nickel, mais impossible de le telecharger

Avatar
isabelle
ou ici,
http://www.commentcamarche.net/download/telecharger-34056283-morefunc-macro-complementaire-excel

isabelle
------------------------------------------------------------------
Avatar
MichD
Quand le nom de la feuille possède un espace dans le nom de l'onglet
on lui ajoute des " ' " autour de son nom pour le délimiter. Il faut
adapter la procédure pour cette syntaxe :


Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Trim(Tbl.Name)
If InStr(1, Trim(Tbl.Name), " ", vbTextCompare) > 0 Then
Nom = UCase(Replace(Replace(Nom, "'", "", 1), "$", "", 1))
Else
Nom = UCase(Left(Nom, Len(Nom) - 1))
End If
If Nom = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function





MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion : 4d99e75b$0$32460$

Alors, maintenant ca fonctionne mais à condition que le nom de feuil ne
possede pas d'espace, etonnant
Manu

"MichD" a écrit dans le message de news:
incm5c$vku$
J'avais modifié le nom de la fonction pour la tester pour
la différencier de l'autre avec DAO. et j'avais oublié de
modifier cette ligne de code : IsFeuilleExist = True

Attention au nom des références à cocher, la fonction était
ancienne et il y a des versions plus récentes. J'ai mis à jour
leur appellation, celle qui devrait être cochée.

'-------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d8f9$0$7688$

J'ai installé, puis cocher Microsoft Data Access component, mais rien de
changer, j'ai tjrs FAUX.

Merci pour tout ces efforts Mich

Manu

"MichD" a écrit dans le message de news:
inckcb$r29$
Tu peux télécharger MDAC 2.8 de plusieurs sites internet en faisant une
recherche sur Google : voici une des adresses. Il ne reste plus qu'à
l'installer.
MDAC = "Microsoft Data Access component"

http://www.zdnet.fr/telecharger/logiciel/microsoft-data-access-components-mdac-39072327s.htm



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d2bb$0$7714$

Ca ne fonctionne tjrs pas, il me met tjrs faux, est ce parce que je n'ai
pas
ceci :'"Microsoft ADO Ext. 2.1 for DDL and Security " j'ai donc cocher
cela
: '"Microsoft ADO Ext. 2.8 for DDL and Security "

Manu

"MichD" a écrit dans le message de news:
inci0c$kui$
OK, j'avais testé pour un classeur .xls (antérieure aux versions 2007 et
2010)

Utilise cette fonction et coches les 2 références énumérées au début de
la
fonction.

Fonctionne indépendamment de la version du fichier Excel.

'--------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.1 Library"
'"Microsoft ADO Ext. 2.1 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist1 = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'--------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99c560$0$7683$

Bonjour Mich,

Apres divers tests ca ne fonctionne pas, mais ca doit etre de ma faute
car
je n'ai pas precisé que je suis sur 2007 et donc.xlsx ce que j'ai changé
dans la formule mais je suppose qu'ici il faut modifier...
OpenDatabase(Fichier, False, True, "Excel 8.0;")
Merci

Manu

"MichD" a écrit dans le message de news:
inca2f$1nj$
Bonjour,

Tu peux utiliser une fonction personnalisée.

Dans un module standard, tu copies ceci :
Cette fonction requiert la bibliothèque (référence) suivante :
Microsoft DAO 3.6 objects library . Pour ajouter cette référence
dans la fenêtre de l'éditeur de code, barre des menus / outils /
références / et tu coches la référence indiquée.

Dans une cellule, pour appeler la fonction, tu insères la formule
suivante
:
=IsFeuilleExist("Feuil1";"c:Classeur1.xls")
La fonction retourne Vrai si la feuille existe et Faux si la feuille
est
absente

Feuil1 => est le nom de l'onglet de la feuille dont tu veux vérifier la
présence
dans le classeur1.xls

c:Classeur1.xls => est le chemin et le nom du fichier Excel.

'--------------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'Microsoft DAO 3.6 objects library
Dim xlWB As DAO.Database
Dim Tbl As DAO.TableDef
Dim Nom
IsFeuilleExist = False
Set xlWB = OpenDatabase(Fichier, False, True, "Excel 8.0;")

For Each Tbl In xlWB.TableDefs
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
xlWB.Close
End Function
'--------------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d998d1d$0$7693$

Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je
suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je
devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu










Avatar
Manu
Super nickel Mich,

Merci pour tous ces efforts, mais comment faites vous..............

Manu

"MichD" a écrit dans le message de news:
incqi0$fdf$
Quand le nom de la feuille possède un espace dans le nom de l'onglet
on lui ajoute des " ' " autour de son nom pour le délimiter. Il faut
adapter la procédure pour cette syntaxe :


Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Trim(Tbl.Name)
If InStr(1, Trim(Tbl.Name), " ", vbTextCompare) > 0 Then
Nom = UCase(Replace(Replace(Nom, "'", "", 1), "$", "", 1))
Else
Nom = UCase(Left(Nom, Len(Nom) - 1))
End If
If Nom = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function





MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99e75b$0$32460$

Alors, maintenant ca fonctionne mais à condition que le nom de feuil ne
possede pas d'espace, etonnant
Manu

"MichD" a écrit dans le message de news:
incm5c$vku$
J'avais modifié le nom de la fonction pour la tester pour
la différencier de l'autre avec DAO. et j'avais oublié de
modifier cette ligne de code : IsFeuilleExist = True

Attention au nom des références à cocher, la fonction était
ancienne et il y a des versions plus récentes. J'ai mis à jour
leur appellation, celle qui devrait être cochée.

'-------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.8 Library"
'"Microsoft ADO Ext. 6.0 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d8f9$0$7688$

J'ai installé, puis cocher Microsoft Data Access component, mais rien de
changer, j'ai tjrs FAUX.

Merci pour tout ces efforts Mich

Manu

"MichD" a écrit dans le message de news:
inckcb$r29$
Tu peux télécharger MDAC 2.8 de plusieurs sites internet en faisant une
recherche sur Google : voici une des adresses. Il ne reste plus qu'à
l'installer.
MDAC = "Microsoft Data Access component"

http://www.zdnet.fr/telecharger/logiciel/microsoft-data-access-components-mdac-39072327s.htm



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99d2bb$0$7714$

Ca ne fonctionne tjrs pas, il me met tjrs faux, est ce parce que je n'ai
pas
ceci :'"Microsoft ADO Ext. 2.1 for DDL and Security " j'ai donc cocher
cela
: '"Microsoft ADO Ext. 2.8 for DDL and Security "

Manu

"MichD" a écrit dans le message de news:
inci0c$kui$
OK, j'avais testé pour un classeur .xls (antérieure aux versions 2007
et
2010)

Utilise cette fonction et coches les 2 références énumérées au début de
la
fonction.

Fonctionne indépendamment de la version du fichier Excel.

'--------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'"Microsoft ActiveX Data Objects 2.1 Library"
'"Microsoft ADO Ext. 2.1 for DDL and Security "."

Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim Tbl As ADOX.Table, Nom As String

cnn.Open "Provider=MSDASQL.1;Data Source=" _
& "Excel Files;Initial Catalog=" & Fichier
cat.ActiveConnection = cnn
For Each Tbl In cat.Tables
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist1 = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'--------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d99c560$0$7683$

Bonjour Mich,

Apres divers tests ca ne fonctionne pas, mais ca doit etre de ma faute
car
je n'ai pas precisé que je suis sur 2007 et donc.xlsx ce que j'ai
changé
dans la formule mais je suppose qu'ici il faut modifier...
OpenDatabase(Fichier, False, True, "Excel 8.0;")
Merci

Manu

"MichD" a écrit dans le message de news:
inca2f$1nj$
Bonjour,

Tu peux utiliser une fonction personnalisée.

Dans un module standard, tu copies ceci :
Cette fonction requiert la bibliothèque (référence) suivante :
Microsoft DAO 3.6 objects library . Pour ajouter cette référence
dans la fenêtre de l'éditeur de code, barre des menus / outils /
références / et tu coches la référence indiquée.

Dans une cellule, pour appeler la fonction, tu insères la formule
suivante
:
=IsFeuilleExist("Feuil1";"c:Classeur1.xls")
La fonction retourne Vrai si la feuille existe et Faux si la feuille
est
absente

Feuil1 => est le nom de l'onglet de la feuille dont tu veux vérifier
la
présence
dans le classeur1.xls

c:Classeur1.xls => est le chemin et le nom du fichier Excel.

'--------------------------------------------
Function IsFeuilleExist(NomFeuille As String, _
Fichier As String) As Boolean
'Microsoft DAO 3.6 objects library
Dim xlWB As DAO.Database
Dim Tbl As DAO.TableDef
Dim Nom
IsFeuilleExist = False
Set xlWB = OpenDatabase(Fichier, False, True, "Excel 8.0;")

For Each Tbl In xlWB.TableDefs
Nom = Tbl.Name
If UCase(Left(Nom, Len(Nom) - 1)) = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
xlWB.Close
End Function
'--------------------------------------------



MichD
--------------------------------------------
"Manu" a écrit dans le message de groupe de discussion :
4d998d1d$0$7693$

Bonjour,

Es til possible de faire des recherchev d'un fichier à un autre mais à
condition que les feuil de chaque fichier soit identique, je donne un
exemple

Fichier Toto.xls avec 3 feuil ; aa, bb, cc
Sur Feuil bb, j'ai :
Col A Col B
C1 21
C2 3
C3 12


Fichier Zaza.xls avec 4 feuil ; bb, uu, zz, aa
Je fais la formule dans la feuil bb cellule B1
Col A Col B
C3
C7
C1

Je souhaite qu'il trouve dans le fichier toto.xls si la feuil ou je
suis
(bb) existe et si c'est le cas, qu'il me fasse ma recherchev, je
devrais
donc trouver ici : en B1 : 12

J'essai avec cela,
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
mais
je ne vois pas comment tester le nom de feuil d'un autre fichier

Merci

Manu













Avatar
Manu
Merci Isabelle,
J'ai installé morefunc, et ais mis
=INDEX(INDIRECT.EXT("'[Toto.xlsx]"&feuille&"'!$B:$B");EQUIV(A1;INDIRECT.EXT("'[Toto.xlsx]"&feuille&"'!$A:$A");0))
en mettant le chemin en plus bien-sur.
Mais ca ne fonctionne tjrs pas. est ce que cette fonction demande des
elements en sup....

Manu

"isabelle" a écrit dans le message de news:
incqgu$eru$
ou ici,
http://www.commentcamarche.net/download/telecharger-34056283-morefunc-macro-complementaire-excel

isabelle
------------------------------------------------------------------

1 2 3