Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Traduction Formule en VBA

12 réponses
Avatar
PABD
Bonjour,
Comment puis-je traduire cette formule en VBA
=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).

Sachant qu'elle est dynamique et que $A2 est fonction de la ligne
sélectionnée.
Si je sélectionne la ligne =$a2
Si c'est la trois=$a3

et ainsi de suite

Merci
Pascal

10 réponses

1 2
Avatar
MichDenis
Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _
"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenant pour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula = "=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) & ",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0, 1) & ",Produit,0),1)))""PABD" a écrit dans le message de groupe de discussion :,Comment puis-je traduire cette formule en VBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si je sélectionne la ligne =$a2Si c'est la trois=$a3et ainsi de suiteMerciPascal
Avatar
PA
Salut,
Personnelement, j'essaie de ne jamais mettre de formule directement dans mon
code VBA. C'est trop peu flexible (eg: si t'ajoutes une colonne, ça ne marche
plus). Enplus, c'est dur à cause de la traduction et de l'armée de
guillements.

Donc, ce que je te conseille, c'est de donner un nom à ta formule avec
Insertion>Nom>Définir. Tu peux la nommer RecherchePrix et dans ton code vba,
tu n'as qu'à insérer "=RecherchePrix" dans la cellule.

PA

"PABD" wrote:

Bonjour,
Comment puis-je traduire cette formule en VBA
=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).

Sachant qu'elle est dynamique et que $A2 est fonction de la ligne
sélectionnée.
Si je sélectionne la ligne =$a2
Si c'est la trois=$a3

et ainsi de suite

Merci
Pascal





Avatar
MichDenis
En supplément, si tu dois copier la même formule
sur une plage de cellule, tu peux utiliser ceci :

Un petit exemple :
'------------------------------
Sub test()
Dim Rg As Range
Set Rg = Range("B5:B25") 'où la formule sera copiée

Rg.Formula = "=IF(ISERROR(INDEX(Prix,MATCH(" & _
Rg(1).Address(0, 1) & ",Produit,0),1)),"""",(INDEX(Prix,MATCH(" & _
Rg(1).Address(0, 1) & ",Produit,0),1)))"

End Sub
'------------------------------



"MichDenis" a écrit dans le message de groupe de discussion :

Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _
"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenantpour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula ="=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) &",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0, 1) &",Produit,0),1)))""PABD" a écrit dans le message de groupe de discussion:,Comment puis-je traduire cette formule enVBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si jesélectionne la ligne =$a2Si c'est la trois=$a3et ainsi de suiteMerciPascal
Avatar
isabelle
salut Denis,

sais tu pourquoi celle-ci fonctionne
Range("A3").Formula =
"=IF(ISERROR(MATCH($A2,Produit,0)),"""",INDEX(Prix,MATCH($A2,Produit,0)))"
mais pas celle-ci, à moins d'y ajouter un p'tit coup d'édition
Range("A4").Formula =
"=SI(ESTERREUR(EQUIV($A2,Produit,0)),"""",INDEX(Prix,EQUIV($A2,Produit,0)))"
SendKeys "{F2}~", True

isabelle


MichDenis a écrit :
Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _
"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenant pour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula = "=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) & ",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0, 1) & ",Produit,0),1)))""PABD" a écrit dans le message de groupe de discussion :,Comment puis-je traduire cette formule en VBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si je sélectionne la ligne =$a2Si c'est la trois=$a3et ainsi de suiteMerciPascal




Avatar
PABD
Merci
"MichDenis" a écrit dans le message de news:

Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un
copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _
"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenant
pour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula =
"=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) &
",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0, 1)
& ",Produit,0),1)))""PABD" a écrit dans le message de
groupe de discussion
:,Comment puis-je traduire
cette formule en
VBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant
qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si
je sélectionne la ligne =$a2Si c'est la trois=$a3et ainsi de
suiteMerciPascal



Avatar
MichDenis
Bonjour Isabelle,

Tu connais la différence en FormulaLocal et formula ?
Vous avez reçu trop de neige ? Épuisé par la pelle ?
;-)))




"isabelle" a écrit dans le message de groupe de discussion :

salut Denis,

sais tu pourquoi celle-ci fonctionne
Range("A3").Formula "=IF(ISERROR(MATCH($A2,Produit,0)),"""",INDEX(Prix,MATCH($A2,Produit,0)))"
mais pas celle-ci, à moins d'y ajouter un p'tit coup d'édition
Range("A4").Formula "=SI(ESTERREUR(EQUIV($A2,Produit,0)),"""",INDEX(Prix,EQUIV($A2,Produit,0)))"
SendKeys "{F2}~", True

isabelle


MichDenis a écrit :
Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _

"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenant
pour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula =
"=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) &
",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0, 1) &
",Produit,0),1)))""PABD" a écrit dans le message de groupe de
discussion :,Comment puis-je traduire
cette formule en
VBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant
qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si je sélectionne
la ligne =$a2Si c'est la trois=$a3et ainsi de suiteMerciPascal




Avatar
MichDenis
Je te soupçonne d'avoir une version anglaise, sinon
tu aurais dû te retrouver avec des ; au lieu des , dans
la formule.
Avatar
Jacky
Bonjour Isabelle,

Essaie ceci
Range("A4").FormulaLocal =
"=SI(ESTERREUR(EQUIV($A2;Produit;0));"""";INDEX(Prix;EQUIV($A2;Produit;0)))"

--
Salutations
JJ


"isabelle" a écrit dans le message de news:

salut Denis,

sais tu pourquoi celle-ci fonctionne
Range("A3").Formula =
"=IF(ISERROR(MATCH($A2,Produit,0)),"""",INDEX(Prix,MATCH($A2,Produit,0)))"
mais pas celle-ci, à moins d'y ajouter un p'tit coup d'édition
Range("A4").Formula =
"=SI(ESTERREUR(EQUIV($A2,Produit,0)),"""",INDEX(Prix,EQUIV($A2,Produit,0)))"
SendKeys "{F2}~", True

isabelle


MichDenis a écrit :
Un petit truc pour te faciliter la tâche.
Supposons que ta formule est en A1

En vba, dans un petit procédure tu peux écrire ceci :
En cellule A3 tu vas écrire la même formule que A1 mais en anglais
Il te restera à dédoubler les guillements lorsque tu feras un
copier-coller
dans la fenêtre de l'éditeur de code
Range("A3") = "'" & Range("A1").Formula
Range("A10").Formula = _

"=IF(ISERROR(INDEX(Prix,MATCH($A2,Produit,0),1)),"""",(INDEX(Prix,MATCH($A2,Produit,0),1)))"Maintenant
pour A2 , qu'il s'adapte lors de la recopie ...Range("A10").Formula =
"=IF(ISERROR(INDEX(Prix,MATCH(" & _ Range("A2").Address(0, 1) &
",Produit,0),1)),"""",(INDEX(Prix,MATCH(" _ & Range("A2").Address(0,
1) & ",Produit,0),1)))""PABD" a écrit dans le message de
groupe de discussion
:,Comment puis-je traduire
cette formule en
VBA=SI(ESTERREUR(INDEX(Prix;EQUIV($A2;Produit;0);1));"";(INDEX(Prix;EQUIV($A2;Produit;0);1))).Sachant
qu'elle est dynamique et que $A2 est fonction de la lignesélectionnée.Si
je sélectionne la ligne =$a2Si c'est la trois=$a3et ainsi de
suiteMerciPascal






Avatar
isabelle
MichDenis a écrit :
Bonjour Isabelle,

Tu connais la différence en FormulaLocal et formula ?
Vous avez reçu trop de neige ? Épuisé par la pelle ?
;-)))



pas beaucoup de neige, mais de la pluie :-(

FormulaLocal ne passe pas, (Erreur d'exécution '1004')
avec Formula, pas de message d'erreur mais il faut éditer la cellule,

isabelle
Avatar
isabelle
salut Jacky,

vous avez raison tous les deux, Denis et toi, je mélange mais pinceaux
entre mon portable (anglais) et mon pc (français) %-)

isabelle

Jacky a écrit :
Bonjour Isabelle,

Essaie ceci
Range("A4").FormulaLocal =
"=SI(ESTERREUR(EQUIV($A2;Produit;0));"""";INDEX(Prix;EQUIV($A2;Produit;0)))"




1 2