Un chose m'échappe sur le fonctionnement des objets Formula. Dans une boucle, je souhaite tester le contenu des cellules d'un 'range' que j'ai appelé "Table" stocké dans l'objet xlRan :
Code:
' Ouverture de l'application
Set xlApp = CreateObject("Excel.Application")
' Ouverture d'un fichier Excel
Set xlWbk = ActivePresentation.Slides("Glossaire").Shapes("Glossaire").OLEFormat
' Main mise sur la feuille 1
Set xlWsh = xlWbk.Object.Worksheets(1)
' Main mise sur l'adressage de la feuille
Set xlRan = xlWsh.Range("Table")
TableSize = xlRan.Count / 3
Quand je teste de la manière suivante, je n'ai pas d'erreur :
Code:
toto = xlRan.Formula
For I = 1 To TableSize
If toto(I, 1) = "titi" Then
Seek = toto(I, 2)
Exit Function
End If
Next I
Quand je teste de la manière suivante, j'ai "erreur d'exécution '451': La procédure property Let n'est pas définie et la procédure Property Get n'a pas renvoyé d'objet."
Code:
For I = 1 To TableSize
If xlRan.FormulaR1C1.Formula(I).FormulaR1C1(I, 1) = "titi" Then
Seek = xlRan.FormulaR1C1.Formula(I).FormulaR1C1(I, 2)
Exit Function
End If
Next I
Sub test()
tablo = Range("A1:D10").FormulaR1C1
For n = LBound(tablo, 1) To UBound(tablo, 1)
For m = LBound(tablo, 2) To UBound(tablo, 2)
MsgBox (tablo(n, m))
Next m
Next n
End Sub
Le script fonctionne mais je ne comprends pas pourquoi il faut passer par une variable intermédiaire 'tablo' au lieu de taper directement sur le Range("A1 : D10").FormulaR1C1 ?
J'ai donc adopté la solution toto = xlRan.Formula mais bute sur un autre problème sur ce même script. Quand je lance une première fois le script, j'ai le message d'erreur suivant sur le deuxième Set "La méthode 'Object' de l'objet 'OLEFormat' a échoué" :
Set xl.Wbk = ActivePresentation.Slides("Toto").Shapes("Toto").OLEFormat
Set xl.Wsh = xl.Wbk.Object.Worksheets(1)
Une fois le script arrêté, il fonctionne aux tentatives suivantes ... Je précise qu'il s'agit d'un classeur insérer dans une présentation Powerpoint et que je n'ai en fait pas besoin du Set xlApp = CreateObject("Excel.Application")
Aurais-tu la moindre idée de comment résoudre ce problème ?