Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fonction Indirect

  • Initiateur de la discussion Initiateur de la discussion filiph79
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

filiph79

XLDnaute Occasionnel
Bonjour le Forum,

Petite question au sujet de la fonction indirect.
Cf le fichier joint pour illustrer mes explications.

J'utilise cette fonction pour faire des sommes (dans la feuille repportsomme), additionnant des cellules de la feuille matrice.

Mon problème était que ma formule recopiée vers la droite, doit aller chercher des données classées vericalement (cf fichier cela sera peut être + clair!!!).

La fonction indirect me donne un résultat satisfaisant lorsque les données sont dans le même classeur, mais lorsque la matrice est dans un autre classeur et que celui ci est fermé, ma formule se met en erreur (#ref!).

Avez vous un solution pour résoudre ce problème, ou avez vous une autre solution pour le même résultat.
 

Pièces jointes

Re : Fonction Indirect

Bonsoir,

La fonction INDIRECT demande effectivement que le classeur source soit ouvert.

Tu peux peut-être essayer la fonction INDIRECT.EXT qui nécessite l'installation d'une macro complémentaire morefunc à télécharger sur le site de Laurent Longre :

Ce lien n'existe plus

Bonne soirée

@+
 
Re : Fonction Indirect

Hello,

tu peux aussi travailler sur des fichiers fermés grâce à ADO ou DAO.
Attention toutefois au nombre de cellules à mettre à jour.

ici avec DAO (ajouter la référence)
Code:
Option Explicit
 
Public Function XRECHERCHEV(ByVal valRecherchee As Variant, _
                            ByVal TabMatrice As Variant, _
                            ByVal colonneIndex As Integer)
                            
 If TypeName(TabMatrice) = "Range" Then
    XRECHERCHEV = Application.WorksheetFunction.VLookup(valRecherchee, _
                                                        TabMatrice, _
                                                        colonneIndex, _
                                                        True)
Else
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sRange As String
    Dim sSheet As String
    Dim sWbook As String
    Dim sFPath As String
    Dim sSQL   As String
    
    sRange = Replace(Split(TabMatrice, "!")(1), "$", vbNullString)
    sSheet = Split(Split(TabMatrice, "]")(1), "'")(0)
    sWbook = Split(Split(TabMatrice, "[")(1), "]")(0)
    sFPath = Mid(Split(TabMatrice, "[")(0), 2)
        
    valRecherchee = "'" & Replace(valRecherchee, "'", "''") & "'"
    
    sSQL = "SELECT [F" & colonneIndex & "] " & _
           "FROM [" & sSheet & "$" & sRange & "] " & _
           "WHERE [F1] = " & valRecherchee
    
 
    Set db = DAO.OpenDatabase(sFPath & sWbook, False, False, "Excel 8.0;HDR=NO;")
    Set rs = db.OpenRecordset(sSQL, DAO.dbOpenSnapshot)
    
    If rs.EOF And rs.BOF Then
        XRECHERCHEV = "no match"
    Else
        XRECHERCHEV = rs.Fields(0)
    End If
    Set rs = Nothing
    Set db = Nothing
End If
 
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
326
Réponses
1
Affichages
552
Réponses
4
Affichages
949
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…