INDEX EQUIV en VBA

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #4683271
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" 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



Jean-Paul V
Le #4752171
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" 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







Jean-Paul V
Le #4752141
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" 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







Philippe.R
Le #4752101
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" 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" 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









Jean-Paul V
Le #4751731
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" 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" 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













Publicité
Poster une réponse
Anonyme