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

variable dans une formule Index

7 réponses
Avatar
untemios
Pour calculer la somme que doit payer un couple de danseurs en
fonction de leur nombre de cours suivis, j'ai d'abord fait un tableau
ou j'ai list=E9 tous les cas possibles. Je l'ai appel=E9 TarifCouples
Chaque adh=E9rent occupant une ligne propre dans la BDD, je r=E9cup=E9re le
nombre de cours suivis de chaque adh=E9rent dans des cellules situ=E9es =E0
14( danses de salon) et 15(claquettes) cellules =E0 droite de leur nom.

Pour faire la SOMME des cours suivis des DEUX membres d'un couple, je
vais chercher les m=EAmes valeurs pour le 2=E8me membre qui se situe x
lignes plus bas . J'ai d=E9clar=E9 des variables LigneAD1( adh=E9rent1),
LigneAD2( adh=E9rent 2) et DifferenceLignes qui est le r=E9sultat de
LigneAD2 -LigneAD1.
Je r=E9cup=E8re donc le nombre de lignes entre les 2 adh=E9rents.

Cette variable je l'int=E8gre dans la formule INDEX ci-dessous

Le probleme, c'est que Excel ne veut pas de DifferenceLignes dans la
formule INDEX. Il ne la calcule pas car il trouve DifferenceLignes
dans la formule et pour lui c'est une zone de Noms...
Pourtant DifferenceLignes a bien la bonne valeur( 1 ou 112 par ex) si
je l'espionne et Activecell.FormulaR1C1est =E9gal =E0 ""...

Je pr=E9cise que la formule fonctionne.Si je remplace DifferenceLignes
par un chiffre( 1 par ex), le calcul se fait tout =E0 fait correctement.

Quelqu'un peut-il me dire comment faire svp?

'declaration des variables
Dim DifferenceLignes As Integer
Dim LigneAD1 As Integer
Dim LigneAD2 As Integer

'calcul du nombre de lignes entre les membres d'un m=EAme couple
Cells(NumeroAD1 + 3, 3).Select '+3 car la BDD commence ligne 3
LigneAD1 =3D ActiveCell.Row - 3
Cells(NumeroAD2 + 3, 3).Select
LigneAD2 =3D ActiveCell.Row - 3
DifferenceLignes =3D Abs(LigneAD2 - LigneAD1)

' calcul du tarif
ActiveCell.Offset(0, 17).Select
ActiveCell.FormulaR1C1 =3D
"=3DINDEX(TarifCouples,RC[14]+R[DifferenceLignes]C[14],RC[15]+R[DifferenceL=
ignes]C[15])"

7 réponses

Avatar
DanielCo
Bonjour,
Je ne comprends pas ce que tu cherches à faire, mais tel que tu l'as
écrit, DifferenceLignes est égal à 0.
Au lieu de poster un code qui ne fonctionne pas, donne un exemple de
tes données et le résultat que tu cherches à calculer.
Cordialement.
Daniel


Pour calculer la somme que doit payer un couple de danseurs en
fonction de leur nombre de cours suivis, j'ai d'abord fait un tableau
ou j'ai listé tous les cas possibles. Je l'ai appelé TarifCouples
Chaque adhérent occupant une ligne propre dans la BDD, je récupére le
nombre de cours suivis de chaque adhérent dans des cellules situées à
14( danses de salon) et 15(claquettes) cellules à droite de leur nom.

Pour faire la SOMME des cours suivis des DEUX membres d'un couple, je
vais chercher les mêmes valeurs pour le 2ème membre qui se situe x
lignes plus bas . J'ai déclaré des variables LigneAD1( adhérent1),
LigneAD2( adhérent 2) et DifferenceLignes qui est le résultat de
LigneAD2 -LigneAD1.
Je récupère donc le nombre de lignes entre les 2 adhérents.

Cette variable je l'intègre dans la formule INDEX ci-dessous

Le probleme, c'est que Excel ne veut pas de DifferenceLignes dans la
formule INDEX. Il ne la calcule pas car il trouve DifferenceLignes
dans la formule et pour lui c'est une zone de Noms...
Pourtant DifferenceLignes a bien la bonne valeur( 1 ou 112 par ex) si
je l'espionne et Activecell.FormulaR1C1est égal à ""...

Je précise que la formule fonctionne.Si je remplace DifferenceLignes
par un chiffre( 1 par ex), le calcul se fait tout à fait correctement.

Quelqu'un peut-il me dire comment faire svp?

'declaration des variables
Dim DifferenceLignes As Integer
Dim LigneAD1 As Integer
Dim LigneAD2 As Integer

'calcul du nombre de lignes entre les membres d'un même couple
Cells(NumeroAD1 + 3, 3).Select '+3 car la BDD commence ligne 3
LigneAD1 = ActiveCell.Row - 3
Cells(NumeroAD2 + 3, 3).Select
LigneAD2 = ActiveCell.Row - 3
DifferenceLignes = Abs(LigneAD2 - LigneAD1)

' calcul du tarif
ActiveCell.Offset(0, 17).Select
ActiveCell.FormulaR1C1 > "=INDEX(TarifCouples,RC[14]+R[DifferenceLignes]C[14],RC[15]+R[DifferenceLignes]C[15])"
Avatar
untemios
On 12 avr, 12:36, DanielCo wrote:
Bonjour,
Je ne comprends pas ce que tu cherches à faire, mais tel que tu l'as
écrit, DifferenceLignes est égal à 0.
Au lieu de poster un code qui ne fonctionne pas, donne un exemple de
tes données et le résultat que tu cherches à calculer.
Cordialement.
Daniel







> Pour calculer la somme que doit payer un couple de danseurs en
> fonction de leur nombre de cours suivis, j'ai d'abord fait un tableau
> ou j'ai listé tous les cas possibles. Je l'ai appelé TarifCouples
> Chaque adhérent occupant une ligne propre dans la BDD, je récupér e le
> nombre de cours suivis de chaque adhérent dans des cellules situées à
> 14( danses de salon) et 15(claquettes)  cellules à droite de leur n om.

> Pour faire la SOMME des cours suivis des DEUX membres d'un couple, je
> vais chercher les mêmes valeurs pour le 2ème membre qui se situe x
> lignes plus bas . J'ai déclaré des variables LigneAD1( adhérent1) ,
> LigneAD2( adhérent 2) et DifferenceLignes qui est le résultat de
> LigneAD2 -LigneAD1.
> Je récupère donc le nombre de lignes entre les 2 adhérents.

> Cette variable je l'intègre dans la formule INDEX ci-dessous

> Le probleme, c'est que Excel ne veut pas de DifferenceLignes dans la
> formule INDEX. Il ne la calcule pas car il trouve DifferenceLignes
> dans la formule et pour lui c'est une zone de Noms...
> Pourtant DifferenceLignes a bien la bonne valeur( 1 ou 112 par ex) si
> je l'espionne et Activecell.FormulaR1C1est égal à ""...

> Je précise que la formule fonctionne.Si je remplace DifferenceLignes
> par un chiffre( 1 par ex), le calcul se fait tout à fait correctement .

> Quelqu'un peut-il me dire comment faire svp?

> 'declaration des variables
> Dim DifferenceLignes As Integer
> Dim LigneAD1 As Integer
> Dim LigneAD2 As Integer

> 'calcul du nombre de lignes entre les membres d'un même couple
> Cells(NumeroAD1 + 3, 3).Select       '+3 car la BDD commence lign e 3
> LigneAD1 = ActiveCell.Row - 3
> Cells(NumeroAD2 + 3, 3).Select
> LigneAD2 = ActiveCell.Row - 3
> DifferenceLignes = Abs(LigneAD2 - LigneAD1)

> ' calcul du tarif
> ActiveCell.Offset(0, 17).Select
> ActiveCell.FormulaR1C1 =
> "=INDEX(TarifCouples,RC[14]+R[DifferenceLignes]C[14],RC[15]+R[Differe nceLignes]C[15])"



Non Daniel, DifferenceLignes prend bien la valeur de ligneAD1 -
LigneAD2 ( par ex 1 pour ma femme et moi et 112 pour un couple non
marié qui s'appelle Bidondo( numero 9) et Tachon(numero 121) et qui
sont séparés par 112 lignes, le club comprenant 133 membres;

Le probleme c'est que je mets le résultat de la cotisation dans une
cellule de la BDD( activecell.offset(0,17)) et rien ne se passe car
Excel ne veut pas de DifferenceLignes qu'il considère certainement
comme une zone de noms.

Si je mets 1 ou 112 ou un autre chiffre à la place de
DifferenceLignes, la formule fonctionne et le résultat s'inscrit
correctement en activecell.offset(0,17);

je vais essayer d'être plus clair dans un prochain post...
cordialement

jean luc
Avatar
DanielCo
Cells(NumeroAD1 + 3, 3).Select '+3 car la BDD commence ligne 3
LigneAD1 = ActiveCell.Row - 3
=> LigneAD1 = 0
Cells(NumeroAD2 + 3, 3).Select
LigneAD2 = ActiveCell.Row - 3
=> LigneAD2 = 0
Daniel




On 12 avr, 12:36, DanielCo wrote:
Bonjour,
Je ne comprends pas ce que tu cherches à faire, mais tel que tu l'as
écrit, DifferenceLignes est égal à 0.
Au lieu de poster un code qui ne fonctionne pas, donne un exemple de
tes données et le résultat que tu cherches à calculer.
Cordialement.
Daniel







Pour calculer la somme que doit payer un couple de danseurs en
fonction de leur nombre de cours suivis, j'ai d'abord fait un tableau
ou j'ai listé tous les cas possibles. Je l'ai appelé TarifCouples
Chaque adhérent occupant une ligne propre dans la BDD, je récupére le
nombre de cours suivis de chaque adhérent dans des cellules situées à
14( danses de salon) et 15(claquettes)  cellules à droite de leur nom.
Pour faire la SOMME des cours suivis des DEUX membres d'un couple, je
vais chercher les mêmes valeurs pour le 2ème membre qui se situe x
lignes plus bas . J'ai déclaré des variables LigneAD1( adhérent1),
LigneAD2( adhérent 2) et DifferenceLignes qui est le résultat de
LigneAD2 -LigneAD1.
Je récupère donc le nombre de lignes entre les 2 adhérents.
Cette variable je l'intègre dans la formule INDEX ci-dessous
Le probleme, c'est que Excel ne veut pas de DifferenceLignes dans la
formule INDEX. Il ne la calcule pas car il trouve DifferenceLignes
dans la formule et pour lui c'est une zone de Noms...
Pourtant DifferenceLignes a bien la bonne valeur( 1 ou 112 par ex) si
je l'espionne et Activecell.FormulaR1C1est égal à ""...
Je précise que la formule fonctionne.Si je remplace DifferenceLignes
par un chiffre( 1 par ex), le calcul se fait tout à fait correctement.
Quelqu'un peut-il me dire comment faire svp?
'declaration des variables
Dim DifferenceLignes As Integer
Dim LigneAD1 As Integer
Dim LigneAD2 As Integer



'calcul du nombre de lignes entre les membres d'un même couple
Cells(NumeroAD1 + 3, 3).Select       '+3 car la BDD commence ligne 3
LigneAD1 = ActiveCell.Row - 3
Cells(NumeroAD2 + 3, 3).Select
LigneAD2 = ActiveCell.Row - 3
DifferenceLignes = Abs(LigneAD2 - LigneAD1)
' calcul du tarif
ActiveCell.Offset(0, 17).Select
ActiveCell.FormulaR1C1 >>> "=INDEX(TarifCouples,RC[14]+R[DifferenceLignes]C[14],RC[15]+R[DifferenceLignes]C[15])"





Non Daniel, DifferenceLignes prend bien la valeur de ligneAD1 -
LigneAD2 ( par ex 1 pour ma femme et moi et 112 pour un couple non
marié qui s'appelle Bidondo( numero 9) et Tachon(numero 121) et qui
sont séparés par 112 lignes, le club comprenant 133 membres;

Le probleme c'est que je mets le résultat de la cotisation dans une
cellule de la BDD( activecell.offset(0,17)) et rien ne se passe car
Excel ne veut pas de DifferenceLignes qu'il considère certainement
comme une zone de noms.

Si je mets 1 ou 112 ou un autre chiffre à la place de
DifferenceLignes, la formule fonctionne et le résultat s'inscrit
correctement en activecell.offset(0,17);

je vais essayer d'être plus clair dans un prochain post...
cordialement

jean luc
Avatar
untemios
On 12 avr, 13:20, DanielCo wrote:
Cells(NumeroAD1 + 3, 3).Select       '+3 car la BDD commence ligne 3
LigneAD1 = ActiveCell.Row - 3
=> LigneAD1 = 0
Cells(NumeroAD2 + 3, 3).Select
LigneAD2 = ActiveCell.Row - 3
=> LigneAD2 = 0
Daniel

Oui parce que NumeroAD1 et numeroAD2 ne veulent rien dire pour toi. Pour moi, ils représentent un nombre( 128 pour mon epouse et 129 pour moi).


Cette variable nous sert tout au long de la BDD pour faire des
recherches et des tris
Alors:
Cells(NumeroAD1 + 3, 3).Select si numeroAD1 vaut 128
LigneAD1 = ActiveCell.Row - 3
=> LigneAD1 = 128
Cells(NumeroAD2 + 3, 3).Select si numeroAD2 vaut 129
LigneAD2 = ActiveCell.Row - 3
=> LigneAD2 = 129



et le reste est bon : DifferenceLignes= 1





> On 12 avr, 12:36, DanielCo wrote:
>> Bonjour,
>> Je ne comprends pas ce que tu cherches faire, mais tel que tu l'as
>> crit, DifferenceLignes est gal 0.
>> Au lieu de poster un code qui ne fonctionne pas, donne un exemple de
>> tes donn es et le r sultat que tu cherches calculer.
>> Cordialement.
>> Daniel

>>> Pour calculer la somme que doit payer un couple de danseurs en
>>> fonction de leur nombre de cours suivis, j'ai d'abord fait un tableau
>>> ou j'ai list tous les cas possibles. Je l'ai appel TarifCouples
>>> Chaque adh rent occupant une ligne propre dans la BDD, je r cup re le
>>> nombre de cours suivis de chaque adh rent dans des cellules situ es
>>> 14( danses de salon) et 15(claquettes) cellules droite de leur nom.
>>> Pour faire la SOMME des cours suivis des DEUX membres d'un couple, je
>>> vais chercher les m mes valeurs pour le 2 me membre qui se situe x
>>> lignes plus bas . J'ai d clar des variables LigneAD1( adh rent1),
>>> LigneAD2( adh rent 2) et DifferenceLignes qui est le r sultat de
>>> LigneAD2 -LigneAD1.
>>> Je r cup re donc le nombre de lignes entre les 2 adh rents.
>>> Cette variable je l'int gre dans la formule INDEX ci-dessous
>>> Le probleme, c'est que Excel ne veut pas de DifferenceLignes dans la
>>> formule INDEX. Il ne la calcule pas car il trouve DifferenceLignes
>>> dans la formule et pour lui c'est une zone de Noms...
>>> Pourtant DifferenceLignes a bien la bonne valeur( 1 ou 112 par ex) si
>>> je l'espionne et Activecell.FormulaR1C1est gal ""...
>>> Je pr cise que la formule fonctionne.Si je remplace DifferenceLignes
>>> par un chiffre( 1 par ex), le calcul se fait tout fait correctement.
>>> Quelqu'un peut-il me dire comment faire svp?
>>> 'declaration des variables
>>> Dim DifferenceLignes As Integer
>>> Dim LigneAD1 As Integer
>>> Dim LigneAD2 As Integer

>>> 'calcul du nombre de lignes entre les membres d'un m me couple
>>> Cells(NumeroAD1 + 3, 3).Select '+3 car la BDD commence ligne 3
>>> LigneAD1 = ActiveCell.Row - 3
>>> Cells(NumeroAD2 + 3, 3).Select
>>> LigneAD2 = ActiveCell.Row - 3
>>> DifferenceLignes = Abs(LigneAD2 - LigneAD1)
>>> ' calcul du tarif
>>> ActiveCell.Offset(0, 17).Select
>>> ActiveCell.FormulaR1C1 =
>>> "=INDEX(TarifCouples,RC[14]+R[DifferenceLignes]C[14],RC[15]+R[Diffe renceLignes]C[15])"

> Non Daniel, DifferenceLignes prend bien la valeur de ligneAD1 -
> LigneAD2 ( par ex 1 pour ma femme et moi et 112 pour un couple non
> mari qui s'appelle Bidondo( numero 9) et  Tachon(numero 121) et qui
> sont s par s par 112 lignes, le club comprenant 133 membres;

> Le probleme c'est que je mets le r sultat de la cotisation dans une
> cellule de la BDD( activecell.offset(0,17)) et rien ne se passe car
> Excel ne veut pas de DifferenceLignes qu'il consid re certainement
> comme une zone de noms.

> Si je mets 1 ou 112 ou un autre chiffre la place de
> DifferenceLignes, la formule fonctionne et le r sultat s'inscrit
> correctement en activecell.offset(0,17);

> je vais essayer d' tre plus clair dans un prochain post...
> cordialement

> jean luc
Avatar
DanielCo
Tel que tu as posté ton code, les variables ne sont pas initialisées.
Le problème vient de ce que tu mats la variable entre guillemets;
utilise :
ActiveCell.FormulaR1C1 = _
"=INDEX(TarifCouples,RC[14]+R[" & DifferenceLignes & "]C[14],RC[15]+R["
& DifferenceLignes & "]C[15])"

Daniel
Avatar
DanielCo
Erratum : lire "entre crochets" au lieu de "entre guillemets".
Daniel


Tel que tu as posté ton code, les variables ne sont pas initialisées.
Le problème vient de ce que tu mats la variable entre guillemets; utilise :
ActiveCell.FormulaR1C1 = _
"=INDEX(TarifCouples,RC[14]+R[" & DifferenceLignes & "]C[14],RC[15]+R[" &
DifferenceLignes & "]C[15])"

Daniel
Avatar
untemios
On 12 avr, 14:26, DanielCo wrote:
Tel que tu as post ton code, les variables ne sont pas initialis es.
Le probl me vient de ce que tu mats la variable entre guillemets;
utilise :
ActiveCell.FormulaR1C1 = _
"=INDEX(TarifCouples,RC[14]+R[" & DifferenceLignes & "]C[14],RC[15]+R["
& DifferenceLignes & "]C[15])"

Daniel



SUPER!!!!!!!!!!!!!!!!!
C'était ça, ça marche!!!!!!!!!!
Mille mercis Daniel, tu sauves mon couple car ma femme se désespérait
de me voir plongé dans ma BDD...
je vais pouvoir avancer maintenant.
Cordialement