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

INDEX EQUIV en VBA

5 réponses
Avatar
Jean-Paul V
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value = ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à droite C9
peut être donnée par la fonction suivante si on était dans une feuille :

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère

5 réponses

Avatar
Philippe.R
Bonjour à toi aussi,
L'enregistreur de macros, souffle cette traduction :

ActiveCell.FormulaR1C1 = _
"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

ça peut peut être faire un début de piste, non ?
;o))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le message
de news:
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value
= ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à droite
C9
peut être donnée par la fonction suivante si on était dans une feuille :

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère



Avatar
Jean-Paul V
Merci Philippe, je vais étudier votre réponse.

Mais pourriez vous m'expliquer comment vous avez utilisé l'enregistreur de
macro dans le cas d'une fonction pour obtenir cela?
Moi malheureusement je me suis contenté d'un truc comme :

Application.Goto Reference:="CELBUD3"
Selection.Copy
Sheets(1).Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
où dans CELBUD3 d'une autre feuille je mets ma fonction


Bonjour à toi aussi,
L'enregistreur de macros, souffle cette traduction :

ActiveCell.FormulaR1C1 = _
"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

ça peut peut être faire un début de piste, non ?
;o))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le message
de news:
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value
= ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à droite
C9
peut être donnée par la fonction suivante si on était dans une feuille :

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère







Avatar
Jean-Paul V
Philippe je ne suis pas sûr de tout comprendre.

Notamment pourquoi FormulaR1C1 et pas Formula tout court?
Comme cela dépend de là où je suis, donc surtout de la ligne et de la
colonne, j'ai essayé :
Dim l As Integer
Dim c As Integer
l = ActiveCell.Row
c = ActiveCell.Column
ActiveCell.FormulaR1C1 =
"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

Je me fais jeter sur la fonction, y a-t-il une erreur dans
l'interprétation de votre réponse?

@+ j'espère


Bonjour à toi aussi,
L'enregistreur de macros, souffle cette traduction :

ActiveCell.FormulaR1C1 = _
"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

ça peut peut être faire un début de piste, non ?
;o))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le message
de news:
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value
= ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à droite
C9
peut être donnée par la fonction suivante si on était dans une feuille :

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère







Avatar
Philippe.R
Bonsoir,
Pour obtenir le code, j'ai tout simplement lancé l'enregistreur en ayant
activé la cellule qui contenait une copie de ta formule et en validant.
C'est l'enregistreur qui fourni par défaut les références en R1C1.
Pour adapter, il faudrait que j'arrive à comprendre le fond du problème et
j'avoue que pour l'instant c'est pas donné.
;o)))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le message
de news:
Philippe je ne suis pas sûr de tout comprendre.

Notamment pourquoi FormulaR1C1 et pas Formula tout court?
Comme cela dépend de là où je suis, donc surtout de la ligne et de la
colonne, j'ai essayé :
Dim l As Integer
Dim c As Integer
l = ActiveCell.Row
c = ActiveCell.Column
ActiveCell.FormulaR1C1 > "=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

Je me fais jeter sur la fonction, y a-t-il une erreur dans
l'interprétation de votre réponse?

@+ j'espère


Bonjour à toi aussi,
L'enregistreur de macros, souffle cette traduction :

ActiveCell.FormulaR1C1 = _

"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

ça peut peut être faire un début de piste, non ?
;o))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le
message
de news:
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value
= ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à
droite
C9
peut être donnée par la fonction suivante si on était dans une feuille
:

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère









Avatar
Jean-Paul V
Bonjour Philippe

En me disant comment la macro s'écrit toute seule dans le cas d'une
fonction, j'ai la réponse à ma question, car j'ai essayé la macro sans rien
modifier et là surprise ça marche, donc je vais supprimer tous mes champs
intermédiaires.
Il me restera plus qu'à ajouter la macro de copie de l'ActiveCell et collage
spécial valeur sur elle même, grâce à vous je touche au but !

Merci encore pour votre aide.
Bonne journée


Bonsoir,
Pour obtenir le code, j'ai tout simplement lancé l'enregistreur en ayant
activé la cellule qui contenait une copie de ta formule et en validant.
C'est l'enregistreur qui fourni par défaut les références en R1C1.
Pour adapter, il faudrait que j'arrive à comprendre le fond du problème et
j'avoue que pour l'instant c'est pas donné.
;o)))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le message
de news:
Philippe je ne suis pas sûr de tout comprendre.

Notamment pourquoi FormulaR1C1 et pas Formula tout court?
Comme cela dépend de là où je suis, donc surtout de la ligne et de la
colonne, j'ai essayé :
Dim l As Integer
Dim c As Integer
l = ActiveCell.Row
c = ActiveCell.Column
ActiveCell.FormulaR1C1 > > "=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[l]C[c+1],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

Je me fais jeter sur la fonction, y a-t-il une erreur dans
l'interprétation de votre réponse?

@+ j'espère


Bonjour à toi aussi,
L'enregistreur de macros, souffle cette traduction :

ActiveCell.FormulaR1C1 = _

"=IF(ISNA(INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2))),"""",INDIRECT(""Budgets!""&ADDRESS(MATCH(R[8]C[2],Budgets!C1,0),COLUMN(Budgets!C1)+1,2)))"

ça peut peut être faire un début de piste, non ?
;o))
--
Avec plaisir
Philippe.R
"Jean-Paul V" a écrit dans le
message
de news:
ReBonjour à tous

Comment écrire en VBA un truc donnant la valeur de mon ActiveCell.Value
= ….

Sachant que si ActiveCell est B9 sa valeur dépend de la cellule à
droite
C9
peut être donnée par la fonction suivante si on était dans une feuille
:

=SI(ESTNA(INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)));"";INDIRECT("Budgets!"&ADRESSE(EQUIV(C9;Budgets!$A:$A;0);COLONNE(Budgets!$A:$A)+1;2)))


@+ j’espère