Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Croquignol
Salut Jerry,
Voici un "workaround" :
- Dans un module standard :
Public XL As Object Dim TempCell As Object
Function INDIRECT2(CellRef As String) ' Croquignol, MPFE 2003 Application.Volatile If XL Is Nothing Then Set XL = CreateObject("Excel.Application") Set TempCell = XL.Workbooks.Add.Sheets(1).Range("A1") End If TempCell.Formula = "=" & CellRef INDIRECT2 = TempCell End Function
- Dans le module ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean) XL.Quit End Sub
Exemple d'utilisation : =INDIRECT2("'C:[Test.xls]Feuil1'!$A$1")
N'essaie pas de remplacer CreateObject par New même si ça semble tentant, la fonction ne marcherait plus (elle serait bloquée par le mécanisme d'Excel qui empêche tout appel de méthode à partir d'une fonction perso de feuille de calcul).
On peut imaginer plusieurs variantes à partir de cette technique: passer par XL.ExecuteExcel4Macro au lieu d'une cellule temporaire, refermer XL après chaque appel de la fonction pour libérer les ressources, etc.
NB : c'est l'auteur de la fonction INDIRECT.EXT (merci à lui) qui m'a indiqué cette technique, je l'ai juste appliquée ici en VBA.
Amicalement,
Croquignol
X-No-archive: yes
Bonjour,
Donc INDIRECT ne fonctionne que si les fichiers liés sont ouverts, et son clone INDIRECT.EXT ne peut être installé partout (!).
Avec une macro, comment simuler cette fonction?
Merci d'avance Cordialement
^o^ --
Jerry Khann
Adresse invalide: retirer le bouchon _O_ et .invalid
Salut Jerry,
Voici un "workaround" :
- Dans un module standard :
Public XL As Object
Dim TempCell As Object
Function INDIRECT2(CellRef As String)
' Croquignol, MPFE 2003
Application.Volatile
If XL Is Nothing Then
Set XL = CreateObject("Excel.Application")
Set TempCell = XL.Workbooks.Add.Sheets(1).Range("A1")
End If
TempCell.Formula = "=" & CellRef
INDIRECT2 = TempCell
End Function
- Dans le module ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
XL.Quit
End Sub
Exemple d'utilisation : =INDIRECT2("'C:[Test.xls]Feuil1'!$A$1")
N'essaie pas de remplacer CreateObject par New même si ça semble tentant, la
fonction ne marcherait plus (elle serait bloquée par le mécanisme d'Excel
qui empêche tout appel de méthode à partir d'une fonction perso de feuille
de calcul).
On peut imaginer plusieurs variantes à partir de cette technique: passer par
XL.ExecuteExcel4Macro au lieu d'une cellule temporaire, refermer XL après
chaque appel de la fonction pour libérer les ressources, etc.
NB : c'est l'auteur de la fonction INDIRECT.EXT (merci à lui) qui m'a
indiqué cette technique, je l'ai juste appliquée ici en VBA.
Amicalement,
Croquignol
X-No-archive: yes
Bonjour,
Donc INDIRECT ne fonctionne que si les fichiers liés sont
ouverts, et son clone INDIRECT.EXT ne peut être installé
partout (!).
Avec une macro, comment simuler cette fonction?
Merci d'avance
Cordialement
^o^
--
Jerry Khann
Adresse invalide: retirer le bouchon _O_ et .invalid
Function INDIRECT2(CellRef As String) ' Croquignol, MPFE 2003 Application.Volatile If XL Is Nothing Then Set XL = CreateObject("Excel.Application") Set TempCell = XL.Workbooks.Add.Sheets(1).Range("A1") End If TempCell.Formula = "=" & CellRef INDIRECT2 = TempCell End Function
- Dans le module ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean) XL.Quit End Sub
Exemple d'utilisation : =INDIRECT2("'C:[Test.xls]Feuil1'!$A$1")
N'essaie pas de remplacer CreateObject par New même si ça semble tentant, la fonction ne marcherait plus (elle serait bloquée par le mécanisme d'Excel qui empêche tout appel de méthode à partir d'une fonction perso de feuille de calcul).
On peut imaginer plusieurs variantes à partir de cette technique: passer par XL.ExecuteExcel4Macro au lieu d'une cellule temporaire, refermer XL après chaque appel de la fonction pour libérer les ressources, etc.
NB : c'est l'auteur de la fonction INDIRECT.EXT (merci à lui) qui m'a indiqué cette technique, je l'ai juste appliquée ici en VBA.
Amicalement,
Croquignol
X-No-archive: yes
Bonjour,
Donc INDIRECT ne fonctionne que si les fichiers liés sont ouverts, et son clone INDIRECT.EXT ne peut être installé partout (!).
Avec une macro, comment simuler cette fonction?
Merci d'avance Cordialement
^o^ --
Jerry Khann
Adresse invalide: retirer le bouchon _O_ et .invalid