INDEX dans VBA

Bonjour à tous,

Après quelques recherches je n'ai pas trouvé de solutions à mon problème.

J'ai créé un code simplifié pour exposer mon problème.

J'aimerais dire à VBA d'écrire dans les plages Excel une formule. Jusque là pas de problème, mais quand je mets une formule avec INDEX() j'ai une erreur 1004 qui s'affiche. Alors que si j'utilise la même formule avec INDEX() directement dans Excel je n'ai pas de problème.

Sub Macro3()
    Range("C_")(1)(1).FormulaR1C1 = "=INDEX(A_;1;1)+INDEX(B_;1;1)"
End Sub

Sachant que A_ et B_ sont des matrices que j'ai créé dans Excel.

Si je mets n'importe quelle autre formule à la place d'index, le code fonctionne, donc la première partie "Range("C_")(1)(1).FormulaR1C1 =" est ok.

Sachant également que j'ai essayé en commençant de 0 au cas où pour VBA.

Quelqu'un saurait-il m'aider s'il vous plaît ? Me dire où je fais une erreur. Ou y a-t-il une autre manière de demander à VBA de copier une formule avec un élément d'une matrice ?

Merci beaucoup, bonne soirée

ci-joint un code pour illustrer mon problème. A_, B_, C_ sont des matrices colonnes créées.

Ps: J'ai également essayé en mettant WorksheetFunction.Index au cas où mais vu que c'est entre guillemets dans VBA, c'était juste une tentative désespérée.

8classeur1.xlsm (37.04 Ko)

Bonjour,

à tester,

Range("C_").Formula = "=INDEX(A_,1,1)+INDEX(B_,1,1)"

Bonjour,

à tester,

Range("C_").Formula = "=INDEX(A_,1,1)+INDEX(B_,1,1)"

Bonsoir,

En effet ça fonctionne ! Un énorme merci !!

J'étais pourtant persuadée d'avoir essayé tous les "Formula" possibles.

J'essayerai demain à mon travail où c'est une autre version d'Excel afin d'être sûre que le problème est bien réglé !

Encore merci beaucoup de votre réponse !

Rebonsoir,

Je viens de comprendre la différence entre nos lignes. En effet, je n'avais pas essayé de cette façon car je pensais ensuite faire une boucle sur les lignes.

Existerait-il une manière pour que je puisse dans l'idée écrire :

For i = 1 To 7
    Range("D_").Formula = "=INDEX(A_,i,1)-INDEX(B_,i,1)"
Next i

Sachant que je suis consciente que là il va simplement me recopier la formule avec les i, et que j'aimerais qu'il boucle sur tous les éléments.

D'où également un truc de ce type pour qu'il me copie également sur chaque élément

Range("D_")(i)(1)

Merci de votre temps

re,

à tester,

Sub Macro1()
Range("C_").Formula = "=INDEX(A_,ROW()-4,1)-INDEX(B_,ROW()-4,1)"
End Sub

ou bien,

Sub test()
Dim i As Long
For i = 1 To 7
    Range("D_")(i).Formula = "=INDEX(A_," & i & ",1)-INDEX(B_," & i & ",1)"
Next i
End Sub

Bonjour,

Parfait ça fonctionne !

J'ai utilisé la deuxième méthode afin d'étendre également sur le nombre de colonnes pour des matrices à plusieurs dimensions.

Formules de type :

Sub test()
Dim i,j As Long
For j = 1 to 4
    For i = 1 To 7
        Range("D_")(j)(i).Formula = "=INDEX(A_," & i & "," & j & ")-INDEX(B_," & i & ",1)"
    Next i
Next j
End Sub

Merci beaucoup encore

Rechercher des sujets similaires à "index vba"