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

7 réponses

1 2 3
Avatar
isabelle
non,

=INDIRECT.EXT(Référence ;Volatile;Style;Mode)
les arguments (Volatile, Style et Mode) sont facultatif
en mode édition de la formulle, mets le curseur sur INDIRECT.EXT et clic
sur fx, puis sélectionne "Aide sur cette fonction"

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

Le 2011-04-04 13:30, Manu a écrit :
est ce que cette fonction demande des elements en sup....

Avatar
MichD
Une dernière correction : Je n'avais pas prévu le cas où il y a des "apostrophes"
dans le nom de la feuille. L'apostrophe en SQL devient DOUBLE.
Exemple L'auto -> devient L''auto et cela cause problème...

Cette fonction tient compte aussi de cette possibilité dans le nom de l'onglet des feuilles :
'---------------------------------------
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

NomFeuille = Replace(NomFeuille, "'", "", 1)
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(Replace(Replace(Nom, "''", "", 1), "$", "", 1))
End If
Debug.Print Nom & " , " & UCase(NomFeuille)
If Nom = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'---------------------------------------

Je pense que c'est complet jusqu'à la prochaine oubli!
;-)


MichD
--------------------------------------------
Avatar
MichD
Et une dernière après ce serait de l'acharnement !!!

Si le nom de l'onglet a une virgule dans son nom, c'est l'équivalent
d'avoir un espace dans le nom de l'onglet...

Si le nom de l'onglet a un point d'exclamation, il est transformé en "_"

Cette dernière intègre ces cas particuliers... et j'arrête de chercher des puces...

'-------------------------------------
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

NomFeuille = Replace(Replace(NomFeuille, "'", "", 1), "!", "_")
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(Replace(Replace(Replace(Nom, "''", "", 1), _
"$", "", 1), "'", "", 1))
End If
Debug.Print Nom & " , " & UCase(NomFeuille)
If Nom = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------


MichD
--------------------------------------------
Avatar
MANU
désolé pour le retard, panne internet
Bonsoir,
J'y suis allé dans l'aide, mais je n'ai rien vu qui puissais m'aider. En
tout cas, merci bcp

Manu

"isabelle" a écrit dans le message de news:
ind13r$7d0$
non,

=INDIRECT.EXT(Référence ;Volatile;Style;Mode)
les arguments (Volatile, Style et Mode) sont facultatif
en mode édition de la formulle, mets le curseur sur INDIRECT.EXT et clic
sur fx, puis sélectionne "Aide sur cette fonction"

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

Le 2011-04-04 13:30, Manu a écrit :
est ce que cette fonction demande des elements en sup....

Avatar
MANU
Bonsoir,
désolé pour le retard, panne internet. Cest ce que l'on appelle etre
perfectionniste !
Merci encore Mich
Manu

"MichD" a écrit dans le message de news:
ind88j$qcd$
Et une dernière après ce serait de l'acharnement !!!

Si le nom de l'onglet a une virgule dans son nom, c'est l'équivalent
d'avoir un espace dans le nom de l'onglet...

Si le nom de l'onglet a un point d'exclamation, il est transformé en "_"

Cette dernière intègre ces cas particuliers... et j'arrête de chercher des
puces...

'-------------------------------------
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

NomFeuille = Replace(Replace(NomFeuille, "'", "", 1), "!", "_")
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(Replace(Replace(Replace(Nom, "''", "", 1), _
"$", "", 1), "'", "", 1))
End If
Debug.Print Nom & " , " & UCase(NomFeuille)
If Nom = UCase(NomFeuille) Then
IsFeuilleExist = True
Exit For
End If
Next
Set cat = Nothing
cnn.Close
Set cnn = Nothing
End Function
'-------------------------------------


MichD
--------------------------------------------

Avatar
isabelle
bonjour Manu,

as-tu mis le chemin complet,
syntaxe à utiliser est :
"'Lecteur:Répertoire[NomClasseur.xls]NomFeuille'!C15".
Ne pas oublier les apostrophes au début de l'adresse et à la fin du nom
de la feuille.

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

Le 2011-04-05 17:54, MANU a écrit :
désolé pour le retard, panne internet
Bonsoir,
J'y suis allé dans l'aide, mais je n'ai rien vu qui puissais m'aider. En
tout cas, merci bcp

Manu

"isabelle" a écrit dans le message de news:
ind13r$7d0$

non,

=INDIRECT.EXT(Référence ;Volatile;Style;Mode)
les arguments (Volatile, Style et Mode) sont facultatif
en mode édition de la formulle, mets le curseur sur INDIRECT.EXT et clic
sur fx, puis sélectionne "Aide sur cette fonction"

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

Le 2011-04-04 13:30, Manu a écrit :

est ce que cette fonction demande des elements en sup....








Avatar
MANU
Je verifie Isabelle, et te tiens au courant, mais je ne pense pas avoir fais
d'erreur, j'ai verifié à fond, mais sait on jamais....

Merci encore pour ta disponibilité Isabelle

Ce qui est epatant, ce sont les connaissances que vous avez pu acquerir sur
ce logiciel, toi, Mich et tous les autres qui contribues aux reponses
d'autruis ! Vous prenez plaisir à rendre service, et je dis BRAVO !!!

Manu

"isabelle" a écrit dans le message de news:
ing57g$jk0$
bonjour Manu,

as-tu mis le chemin complet,
syntaxe à utiliser est :
"'Lecteur:Répertoire[NomClasseur.xls]NomFeuille'!C15".
Ne pas oublier les apostrophes au début de l'adresse et à la fin du nom de
la feuille.

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

Le 2011-04-05 17:54, MANU a écrit :
désolé pour le retard, panne internet
Bonsoir,
J'y suis allé dans l'aide, mais je n'ai rien vu qui puissais m'aider. En
tout cas, merci bcp

Manu

"isabelle" a écrit dans le message de news:
ind13r$7d0$

non,

=INDIRECT.EXT(Référence ;Volatile;Style;Mode)
les arguments (Volatile, Style et Mode) sont facultatif
en mode édition de la formulle, mets le curseur sur INDIRECT.EXT et clic
sur fx, puis sélectionne "Aide sur cette fonction"

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

Le 2011-04-04 13:30, Manu a écrit :

est ce que cette fonction demande des elements en sup....








1 2 3