problème avec le FormulaR1C1(x,y)

jinchen

XLDnaute Nouveau
Amis du Forum, bonjour,

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

Pourtant, quand j'observe les variables locales, j'ai bien l'objet arborescent suivant :
FormulaR1C1
|_ FormulaR1C1(1)
| |_ FormulaR1C1(1,1)
| |_ FormulaR1C1(1,2)
| |_ FormulaR1C1(1,3)
|_ FormulaR1C1(2)
| |_ FormulaR1C1(2,1)
| |_ FormulaR1C1(2,2)
...

Quelqu'un a-t'il une explication ?

D'avance merci !
 

jinchen

XLDnaute Nouveau
Re : problème avec le FormulaR1C1(x,y)

Merci PierreJean :)

Code:
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 ?
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2