Traduction Formule en VBA

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #18837451
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"
PA
Le #18837821
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





MichDenis
Le #18837801
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"
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"
isabelle
Le #18837791
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"



PABD
Le #18837761
Merci
"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" 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



MichDenis
Le #18837751
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" 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




MichDenis
Le #18838001
Je te soupçonne d'avoir une version anglaise, sinon
tu aurais dû te retrouver avec des ; au lieu des , dans
la formule.
Jacky
Le #18837991
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" 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






isabelle
Le #18837981
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
isabelle
Le #18837961
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)))"




Publicité
Poster une réponse
Anonyme