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

Aide sur formule

3 réponses
Avatar
Michel MTO
Bonjour à toutes et à tous,

J'ai cette formule qui me ramène un chiffre, en l'espèce un numéro de mois
( de 1 à 12 !!) :
CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2))

j'ai une autre formule dans la même feuille qui est celle çi :
=-(30-'[TABLEAU CP DROIT 09 10 .xls]12'!$AJ$11)

La 2ème formule fait référence à un classeur externe dans lequel j'ai une
feuille par mois.
je voudrais utiliser la 1ère formule qui me ramène la référence au mois dans
la 2ème.

ce que j'essaie de taper c'est ceci, mais ça ne fonctionne pas :

=-(30-'[TABLEAU CP DROIT 09 10
.xls]&CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2
))'!$AJ$11)

j'ai remplacer 12, dans la 2ème formule par
CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2))

quelqu'un aurait-il une solution ??

merci par avance

3 réponses

Avatar
FdeCourt
Salut,

Si le classeur est ouvert, la fonction indirecte fonctionne.

Par contre, si classeur est fermé (celui dans lequel tu recherches une
valeurs), alors il faut passer par une macro :

Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As Variant) As Variant

Application.Volatile

Dim Source As Object, Rst As Object, ADOCommand As Object
Dim Cible As String

Feuille = Feuille & "$"
Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
Cellule.Address(0, 0, xlA1, 0)

Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "" & Fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"

Set ADOCommand = CreateObject("ADODB.Command")
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
End With

Set Rst = CreateObject("ADODB.Recordset")
'1 = adOpenKeyset, 3 = adLockOptimistic
Rst.Open ADOCommand, , 1, 3
Set Rst = Source.Execute("[" & Feuille & Cible & "]")

LireCellule_ClasseurFerme = Rst(0).Value

Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Function

(merci à SilkyRoad)

Cordialement,

F.
Avatar
Daniel.C
Bonjour.
Valable uniquement si le fichier TABLEAU CP DROIT 09 10.xls est ouvert
:
=-(30-(INDIRECT("'[TABLEAU CP DROIT 09
10.xls]"&CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2))&"'!$AJ$11")))
Daniel

Bonjour à toutes et à tous,

J'ai cette formule qui me ramène un chiffre, en l'espèce un numéro de mois
( de 1 à 12 !!) :
CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2))

j'ai une autre formule dans la même feuille qui est celle çi :
=-(30-'[TABLEAU CP DROIT 09 10 .xls]12'!$AJ$11)

La 2ème formule fait référence à un classeur externe dans lequel j'ai une
feuille par mois.
je voudrais utiliser la 1ère formule qui me ramène la référence au mois dans
la 2ème.

ce que j'essaie de taper c'est ceci, mais ça ne fonctionne pas :

=-(30-'[TABLEAU CP DROIT 09 10
.xls]&CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2
))'!$AJ$11)

j'ai remplacer 12, dans la 2ème formule par
CNUM(STXT(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-4;2))

quelqu'un aurait-il une solution ??

merci par avance


Avatar
Michel MTO
çà marche très bien avec Indirect.
Merci encore pour le temps que tu as consacré à répondre à ma question

Cordialement
Michel

"FdeCourt" a écrit dans le message de
news:
Salut,

Si le classeur est ouvert, la fonction indirecte fonctionne.

Par contre, si classeur est fermé (celui dans lequel tu recherches une
valeurs), alors il faut passer par une macro :

Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As Variant) As Variant

Application.Volatile

Dim Source As Object, Rst As Object, ADOCommand As Object
Dim Cible As String

Feuille = Feuille & "$"
Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
Cellule.Address(0, 0, xlA1, 0)

Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "" & Fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"

Set ADOCommand = CreateObject("ADODB.Command")
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
End With

Set Rst = CreateObject("ADODB.Recordset")
'1 = adOpenKeyset, 3 = adLockOptimistic
Rst.Open ADOCommand, , 1, 3
Set Rst = Source.Execute("[" & Feuille & Cible & "]")

LireCellule_ClasseurFerme = Rst(0).Value

Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Function

(merci à SilkyRoad)

Cordialement,

F.