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

Aller chercher une information dans un autre classeur de manière a

6 réponses
Avatar
Christophe
Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
=ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:\NAFTIS\New_SYMEX\Gestion\[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

=cellule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous

6 réponses

Avatar
michdenis
Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous
Avatar
Christophe
Boujour,

Merci pour les enfo, j'ai testé la fonction INDIRECT.EXT et elle fonctionne
si les deux classeurs sont ouverts mais j'aimerai y arriver quand le classeur
source est fermé parce qu'en fait, il n'y en aura pas qu'en seul mais des
dizaines.
Merci


Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous





Avatar
michdenis
Bonjour Christophe,

La fonction INDIRECT.EXT fut créé par Laurent Longre et le but de cette
fonction c'est de pouvoir compenser la fonction "indirect()" d'excel qui
elle, ne fonctionne pas lorsque le fichier source est fermé. Celle de Laurent
Longre est parfaitement adaptée à cette situation.


Salutations!


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

Boujour,

Merci pour les enfo, j'ai testé la fonction INDIRECT.EXT et elle fonctionne
si les deux classeurs sont ouverts mais j'aimerai y arriver quand le classeur
source est fermé parce qu'en fait, il n'y en aura pas qu'en seul mais des
dizaines.
Merci


Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous





Avatar
Christophe
Bonjour,

Je n'arrive pas à faire fonctionner INDIRECT.EXT si les dossiers sources ne
sont pas ouvert . Par contre j'ai fait marché la macro sans problème mais je
ne sais pas en faire une fonction et ça complique un peu la mise à jour mais
ça devrait marcher.

Merci

Salutation


Bonjour Christophe,

La fonction INDIRECT.EXT fut créé par Laurent Longre et le but de cette
fonction c'est de pouvoir compenser la fonction "indirect()" d'excel qui
elle, ne fonctionne pas lorsque le fichier source est fermé. Celle de Laurent
Longre est parfaitement adaptée à cette situation.


Salutations!


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

Boujour,

Merci pour les enfo, j'ai testé la fonction INDIRECT.EXT et elle fonctionne
si les deux classeurs sont ouverts mais j'aimerai y arriver quand le classeur
source est fermé parce qu'en fait, il n'y en aura pas qu'en seul mais des
dizaines.
Merci


Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous










Avatar
Christophe
Re bounjour,

J'ai eassyé de faire une fonction à partir de la sub
GetValuesFromAClosedWorkbook pour obtenir en résultat de la fonction le
contenu de la cellule distante.

Sub Test()
D5 = ActiveSheet.Range("$D$5")
C13 = ActiveSheet.Range("$C$13")
H5 = ActiveSheet.Range("$H$5")
H6 = ActiveSheet.Range("$H$6")
jcb D5, C13, H5, H6
End Sub

Function jcb(Path, Name, Onglet, Cellule)
With ActiveShett.jcb
.Formula = "='" & Path & "[" & Name & ".xls]" & Onglet & "'!" &
Cellule
.Value = .Value
End With
End Function
Mais je ne sais pas ce qu'il faut mettre dans le with pour obtenir le
résultat.

Merci et A+


Bonjour,

Je n'arrive pas à faire fonctionner INDIRECT.EXT si les dossiers sources ne
sont pas ouvert . Par contre j'ai fait marché la macro sans problème mais je
ne sais pas en faire une fonction et ça complique un peu la mise à jour mais
ça devrait marcher.

Merci

Salutation


Bonjour Christophe,

La fonction INDIRECT.EXT fut créé par Laurent Longre et le but de cette
fonction c'est de pouvoir compenser la fonction "indirect()" d'excel qui
elle, ne fonctionne pas lorsque le fichier source est fermé. Celle de Laurent
Longre est parfaitement adaptée à cette situation.


Salutations!


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

Boujour,

Merci pour les enfo, j'ai testé la fonction INDIRECT.EXT et elle fonctionne
si les deux classeurs sont ouverts mais j'aimerai y arriver quand le classeur
source est fermé parce qu'en fait, il n'y en aura pas qu'en seul mais des
dizaines.
Merci


Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous












Avatar
michdenis
Bonjour Christophe,

Pourquoi tu n'utilises pas ce type de syntaxe si tu
as installé le fichier de Laurent Longre ?

Cette syntaxe suggère qu'en cellule A1, il y a
le nom du fichier source
=INDIRECT.EXT("'C:["&A1&"]Feuil2'!A1")

Ou celle-ci où tu saisis en dur le nom du classeur
=(INDIRECT.EXT("'C:[Classeur1.xls]Feuil2'!A1"))

La procédure proposée "GetValuesFromAClosedWorkbook"
ne peut pas être transformé en fonction pour être appelé
directement de la feuille de calcul... un début d'explication
ici : http://www.excelabo.net/xl/fichiers.php#indirectfermé
elle peut cependant être appelé par une procédure en VBA,
comme ceci :

'--------------------------
Sub test()

a = LireClosedCell("C:", "classeur1.xls", "Feuil2", "a1")

End Sub
'--------------------------
Function LireClosedCell(Dossier As String, Fichier As String, _
Feuille As String, ref As String)

Arg = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(ref) _
.Range("A1").Address(, , xlR1C1)
LireClosedCell1 = ExecuteExcel4Macro(Arg)

End Function
'--------------------------


Salutations!



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

Re bounjour,

J'ai eassyé de faire une fonction à partir de la sub
GetValuesFromAClosedWorkbook pour obtenir en résultat de la fonction le
contenu de la cellule distante.

Sub Test()
D5 = ActiveSheet.Range("$D$5")
C13 = ActiveSheet.Range("$C$13")
H5 = ActiveSheet.Range("$H$5")
H6 = ActiveSheet.Range("$H$6")
jcb D5, C13, H5, H6
End Sub

Function jcb(Path, Name, Onglet, Cellule)
With ActiveShett.jcb
.Formula = "='" & Path & "[" & Name & ".xls]" & Onglet & "'!" &
Cellule
.Value = .Value
End With
End Function
Mais je ne sais pas ce qu'il faut mettre dans le with pour obtenir le
résultat.

Merci et A+


Bonjour,

Je n'arrive pas à faire fonctionner INDIRECT.EXT si les dossiers sources ne
sont pas ouvert . Par contre j'ai fait marché la macro sans problème mais je
ne sais pas en faire une fonction et ça complique un peu la mise à jour mais
ça devrait marcher.

Merci

Salutation


Bonjour Christophe,

La fonction INDIRECT.EXT fut créé par Laurent Longre et le but de cette
fonction c'est de pouvoir compenser la fonction "indirect()" d'excel qui
elle, ne fonctionne pas lorsque le fichier source est fermé. Celle de Laurent
Longre est parfaitement adaptée à cette situation.


Salutations!


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

Boujour,

Merci pour les enfo, j'ai testé la fonction INDIRECT.EXT et elle fonctionne
si les deux classeurs sont ouverts mais j'aimerai y arriver quand le classeur
source est fermé parce qu'en fait, il n'y en aura pas qu'en seul mais des
dizaines.
Merci


Bonjour Christophe,

Il y a ceci :
'-------------------------
Sub test()
GetValuesFromAClosedWorkbook "c:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'-------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
'ou une seule cellule éventuellement :-)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'-------------------------

Et il y a cet exemple que je donnais sur l'utilisation de la fonction "indirect" hier.

Si ton fichier extérieur est ouvert, tu peux utiliser ce type de syntaxe :
A1 = Nom Complet du classeur + extension
=SOMMEPROD((INDIRECT("["&A1&"]Feuil1!A1:A10")="toto")*1)

La fonction indirect n'est pas disponible avec un classeur fermé.

Laurent Longré a créé en outre la fonction Indirect.Ext.
Pour y avoir accès, tu dois télécharger ce fichier : Morefunc.xll 4.01
à cette adresse : http://xcell05.free.fr/

Une exemple de syntaxe suite à l'installation du fichier :

=SOMMEPROD((INDIRECT.EXT("'C:["&A1&"]Feuil1'!A1:A10")="toto")*1)



Salutations!





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

Bonjour,
Voilà mon problème;

Je construis une chaîne de caractères représentant l'adresse de la cellule à
lire dans un autre classeur par la fonction:
­RESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"))
Cette fonctionne me donne bien l'adresse voulu mais sur un format texte.
le résultat dans mon cas est :
'D:NAFTISNew_SYMEXGestion[6012.xls]Récap'!$A$1
Je veux ensuite dans une cellule donnée lire l'information contenue à cette
adresse. J'ai essayé les deux fonctions suivantes:

=INDIRECT(ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap"));VRAI)
qui donne le résultat #REF! ainsi que

Îllule("contenu";ADRESSE(1;1;1;VRAI;CONCATENER($M$29;"[";$C13;".xls]Récap")))
sur lequel j'ai une erreur de formule sûrement à cause de la chaîne de
caractères.

Si quelqu'un a une idée, je suis preneur.

Merci à tous