Decaler et index renvoient erreur

FanExcel

XLDnaute Occasionnel
Bonjour à tout le forum !

Je cherche à modeliser la restitution de données mensuelles.

Deux fichiers:
Source : RFONCT_01
Recevant: PGI_01b

Que j'utilise la fonction Decaler ou Index, j'ai une valeur d'erreur lorsque le fichier source est fermé
( #VALEUR pour DECALER; #REF pour INDEX)

Je joins les fichiers exemple concernés en espérant que quelqu'un saura m'aider

En attendant, je vous souhaite une belle journée :)
 

Pièces jointes

  • PGI_01 b.xls
    25.5 KB · Affichages: 72
  • RFONCT_01.xls
    23.5 KB · Affichages: 72

FanExcel

XLDnaute Occasionnel
Re : Decaler et index renvoient erreur

Bonjour,

Surtout, n'hésitez pas à me faire savoir si la description de mon problème n'est pas suffisamment claire

Je viens de parcourir le forum mais n'ai pas trouvé de post pouvant me dépanner

Encore et d'avance merci pour votre aide :)))
 

FanExcel

XLDnaute Occasionnel
Re : Decaler et index renvoient erreur

Re-bonjour à tous :)

Peut être que ni DECALER ni INDEX ne conviennent pour solutionner mon problème.

Si quelqu'un a une solution avec une autre formule ou un autre moyen... car je suis vraiment bloqué dans mon fichier

Merci beaucoup
 

Misange

XLDnaute Barbatruc
Re : Decaler et index renvoient erreur

Bonjour
Decaler ne fonctionne pas avec un classeur fermé.
Deux solutions : travailler avec les classeurs ouverts ou bien utiliser les vrais tableaux excel pour travailler avec des noms définis sans la fonction decaler
Ce lien n'existe plus
De toutes façons utiliser des vrais tableaux (avec des entêtes de colonne...) est une très bonne habitude de travail (et utiliser des classeurs xlsx et non xls).
 

FanExcel

XLDnaute Occasionnel
Re : Decaler et index renvoient erreur

Bonjour,

Et merci pour le lien vers le site que je ne manquerai pas de consulter. J'ai éssayé mais le lien me "plante"

Network Error (tcp_error)
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.



Toutefois, sans vouloir vous bousculer, auriez vous une idée pour ma formule en attendant que je trouve la solution dans ce site

D'avance, merci beaucoup :)
 

Misange

XLDnaute Barbatruc
Re : Decaler et index renvoient erreur

Bonsoir
Je ne sais pas ce qui c'est passé, le site fonctionne sans problème en tous cas maintenant.
Pour faire un vrai tableau excel, onglet accueil, style, mettre sous forme de tableau.
Tu peux alors faire référence aux colonnes du tableau qui sont automatiquement dynamiques : toute valeur ajoutée sous le tableau s'y intègre et est pris en compte dans la colonne.
 

FanExcel

XLDnaute Occasionnel
Re : Decaler et index renvoient erreur

Bonjour à tous

Je reviens sur ma question car malgré de nombreuses rechercehs dans d'autres forums je n'ai pas trouvé de solution à cette problématique

D'avance merci à tous pour votre aide
 

Olivio41

XLDnaute Nouveau
Re : Decaler et index renvoient erreur

Salut à tous,

je viens d'arriver sur le forum et je rencontre le même problème.

Si quelqu'un aurai la réponse car même en suivant les conseils de Misange, cela ne change rien.

à bientôt et merci d'avance :)
 

FanExcel

XLDnaute Occasionnel
Re : Decaler et index renvoient erreur

Bonjour Olivio41 et bienvenue sur ce formidable forum

J'espère qu'il y aura une réponse, il y a sur ce forum de nombreux spécialistes d'excel et des fonctions.
Certains membres savent si bien les utiliser, voire les combiner, que j'ai confiance et garde espoir d'une solution

À bientôt :))
 

Misange

XLDnaute Barbatruc
Re : Decaler et index renvoient erreur

Bonjour

Oui ben en fait j'ai quand même dit une ânerie ! le fait de passer par un tableau ne résous rien.
Le problème c'est que dès qu'on travaille avec un classeur fermé sur une plage de plusieurs cellules, les valeurs de celles-ci sont transmises au classeur ouvert sous forme d'array
A1=1
A2=2
si je fais référence à A1:A2 du classeur fermé, excel récupère ={1;2)
ce qui ne fait pas du tout l'affaire dans des formules qui s'attendent à récupérer autre chose.
Souvent en utilisant sommeprod on arrive à s'en sortir. Mais au prix d'un ralentissement considérable.
La macro complémentaire gratuite morefunc de laurent longre (téléchargeable sur excelabo.net) contient une fonction indirect.ext qui permet de récupérer des valeurs uniques mais pas des plages.
La fonction "pull" de Harlan Grove permet également de récupérer des façon dynamique dans un classeur fermé

Travailler avec des classeurs fermés a toujours été une limitation importante. Mieux vaut, par macro par exemple ouvrir le classeur en arrière plan et le refermer quand on a fini d'importer les valeurs nécessaires. pas de solution miracle en tous cas et cela depuis de nombreuses années.

pour mémo car elle n'est pas évidente à trouver la fonction Pull de Harlan Grove

Code:
'----- begin VBA -----
Function pull(xref As String) As Variant
'inspired by Bob Phillips and Laurent Longre
'but written by Harlan Grove
'-----------------------------------------------------------------
'Copyright (c) 2003 Harlan Grove.
'
'This code is free software; you can redistribute it and/or modify
'it under the terms of the GNU General Public License as published
'by the Free Software Foundation; either version 2 of the License,
'or (at your option) any later version.
'-----------------------------------------------------------------
'2004-05-30
'still more fixes, this time to address apparent differences between
'XL8/97 and later versions. Specifically, fixed the InStrRev call,
'which is fubar in later versions and was using my own hacked version
'under XL8/97 which was using the wrong argument syntax. Also either
'XL8/97 didn't choke on CStr(pull) called when pull referred to an
'array while later versions do, or I never tested the 2004-03-25 fix
'against multiple cell references.
'-----------------------------------------------------------------
'2004-05-28
'fixed the previous fix - replaced all instances of 'expr' with 'xref'
'also now checking for initial single quote in xref, and if found
'advancing past it to get the full pathname [dumb, really dumb!]
'-----------------------------------------------------------------
'2004-03-25
'revised to check if filename in xref exists - if it does, proceed;
'otherwise, return a #REF! error immediately - this avoids Excel
'displaying dialogs when the referenced file doesn't exist
'-----------------------------------------------------------------
Dim xlapp As Object, xlwb As Workbook
Dim b As String, r As Range, C As Range, n As Long
'** begin 2004-05-30 changes **
'** begin 2004-05-28 changes **
'** begin 2004-03-25 changes **
n = InStrRev(xref, "\")
If n > 0 Then
If Mid(xref, n, 2) = "\[" Then
b = Left(xref, n)
n = InStr(n + 2, xref, "]") - n - 2
If n > 0 Then b = b & Mid(xref, Len(b) + 2, n)
Else
n = InStrRev(Len(xref), xref, "!")
If n > 0 Then b = Left(xref, n - 1)
End If
'** key 2004-05-28 addition **
If Left(b, 1) = "'" Then b = Mid(b, 2)
On Error Resume Next
If n > 0 Then If Dir(b) = "" Then n = 0
Err.Clear
On Error GoTo 0
End If
If n <= 0 Then
pull = CVErr(xlErrRef)
Exit Function
End If
'** end 2004-03-25 changes **
'** end 2004-05-28 changes **
pull = Evaluate(xref)
'** key 2004-05-30 addition **
If IsArray(pull) Then Exit Function
'** end 2004-05-30 changes **
If CStr(pull) = CStr(CVErr(xlErrRef)) Then
On Error GoTo CleanUp 'immediate clean-up at this point
Set xlapp = CreateObject("Excel.Application")
Set xlwb = xlapp.Workbooks.Add 'needed by .ExecuteExcel4Macro
On Error Resume Next 'now clean-up can wait
n = InStr(InStr(1, xref, "]") + 1, xref, "!")
b = Mid(xref, 1, n)
Set r = xlwb.Sheets(1).Range(Mid(xref, n + 1))
If r Is Nothing Then
pull = xlapp.ExecuteExcel4Macro(xref)
Else
For Each C In r
C.Value = xlapp.ExecuteExcel4Macro(b & C.Address(1, 1, xlR1C1))
Next C
pull = r.Value
End If
CleanUp:
If Not xlwb Is Nothing Then xlwb.Close 0
If Not xlapp Is Nothing Then xlapp.Quit
Set xlapp = Nothing
End If
End Function
'----- end VBA -----
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG