Aide sur formule

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #20977861
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.
Daniel.C
Le #20979311
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


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

Cordialement
Michel

"FdeCourt" 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.
Publicité
Poster une réponse
Anonyme