OVH Cloud OVH Cloud

subtilité matricielle

10 réponses
Avatar
RaMa
Bonjour
Soit 2 formules apparemment identique
a)
=INDIRECT("a1:a25")
b)
=INDIRECT("a1:a"&LIGNE(A25))

Quand on fait F9 sur la barre de formule
on obtient avec la formule a) ceci (soit le contenu de la plage )
={"'Feuil1'!$B$2:$E$2";"A";"B";"C";"D";0;0;0;0;0;0;0;"e";"a";0;0;0;0;0;0;0;0;0;0;0}
avec la formule b) ceci
={0}

Quelqu'un connaît-il la subtilité ?

Merci
Salutations
RaMa

10 réponses

Avatar
AV
=INDIRECT("a1:a"&LIGNE(A25))


"Normalement" avec cette formule tu devrais obtenir la valeur de la cellule de
la colonne A de la ligne sur laquelle elle est saisie
C'est l'équivalent de
=INDIRECT("A"&LIGNE())
PS : Ne me demande pas pourquoi car je vois pas d'explication réellement logique

AV

Avatar
Pierre CFI [mvp]
tu arrives méme à te surprendre, c'est çà le top :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"AV" a écrit dans le message de news:
=INDIRECT("a1:a"&LIGNE(A25))


"Normalement" avec cette formule tu devrais obtenir la valeur de la cellule de
la colonne A de la ligne sur laquelle elle est saisie
C'est l'équivalent de
=INDIRECT("A"&LIGNE())
PS : Ne me demande pas pourquoi car je vois pas d'explication réellement logique

AV





Avatar
Daniel.M
Bonjour,

C'est un bug!
La touche F9 résoud ta formule en utilisant un interpréteur qui N'est PAS le
même que celui qu'Excel utilise pour interpréter les formules (dans la vraie
vie). Il arrive donc que tu rencontres des différences entre les deux calculs.

Ton exemple est celui où l'interpréteur F9 réussit à REPRODUIRE correctement le
vrai calcul (dans le premier cas) mais échoue lamentablement dans un autre (le
deuxième).

Cela est beaucoup moins grave que des cas où le F9 réussit mais où c'est la
VRAIE calculation qui échoue (le cas avec la fonction DECALER et une matrice en
2e paramètre). :-(

Salutations,

Daniel M.

"RaMa" wrote in message
news:
Bonjour
Soit 2 formules apparemment identique
a)
=INDIRECT("a1:a25")
b)
=INDIRECT("a1:a"&LIGNE(A25))

Quand on fait F9 sur la barre de formule
on obtient avec la formule a) ceci (soit le contenu de la plage )

={"'Feuil1'!$B$2:$E$2";"A";"B";"C";"D";0;0;0;0;0;0;0;"e";"a";0;0;0;0;0;0;0;0;0;0

;0}
avec la formule b) ceci
={0}

Quelqu'un connaît-il la subtilité ?

Merci
Salutations
RaMa




Avatar
RaMa
Merci Alain


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

=INDIRECT("a1:a"&LIGNE(A25))


"Normalement" avec cette formule tu devrais obtenir la valeur de la
cellule de
la colonne A de la ligne sur laquelle elle est saisie
C'est l'équivalent de
=INDIRECT("A"&LIGNE())
PS : Ne me demande pas pourquoi car je vois pas d'explication réellement
logique

AV





Avatar
isabelle
en supplément de la réponse de Daniel,

Cela est beaucoup moins grave que des cas où le F9 réussit mais où c'est la
VRAIE calculation qui échoue (le cas avec la fonction DECALER et une matrice en
2e paramètre). :-(


extrait de l'aide :
Renvoie la référence spécifiée par une chaîne de caractères. Les références sont immédiatement évaluées afin d'afficher
leur contenu.

le 2e paramètre étant en dehors de la chaine de caractère, il n'est pas évalué immédiatement.

isabelle

Avatar
RaMa
Merci pierre et daniel
J'avais envoyé à µS un rapport d'ano
mais couic... réponse prévue à l'ano nunca!!

Salutations
RaMa

"Daniel.M" a écrit dans le message de
news:
Bonjour,

C'est un bug!
La touche F9 résoud ta formule en utilisant un interpréteur qui N'est PAS
le
même que celui qu'Excel utilise pour interpréter les formules (dans la
vraie
vie). Il arrive donc que tu rencontres des différences entre les deux
calculs.

Ton exemple est celui où l'interpréteur F9 réussit à REPRODUIRE
correctement le
vrai calcul (dans le premier cas) mais échoue lamentablement dans un autre
(le
deuxième).

Cela est beaucoup moins grave que des cas où le F9 réussit mais où c'est
la
VRAIE calculation qui échoue (le cas avec la fonction DECALER et une
matrice en
2e paramètre). :-(

Salutations,

Daniel M.

"RaMa" wrote in message
news:
Bonjour
Soit 2 formules apparemment identique
a)
=INDIRECT("a1:a25")
b)
=INDIRECT("a1:a"&LIGNE(A25))

Quand on fait F9 sur la barre de formule
on obtient avec la formule a) ceci (soit le contenu de la plage )

={"'Feuil1'!$B$2:$E$2";"A";"B";"C";"D";0;0;0;0;0;0;0;"e";"a";0;0;0;0;0;0;0;0;0;0

;0}
avec la formule b) ceci
={0}

Quelqu'un connaît-il la subtilité ?

Merci
Salutations
RaMa








Avatar
Daniel.M
Salut Alain,

"Normalement" avec cette formule tu devrais obtenir la valeur de la cellule de
la colonne A de la ligne sur laquelle elle est saisie


Pas si tu saisis en matricielle.

Le problème (que je vois) est qu'INDIRECT "tout nu" ne semble pas vraiment
retourner une matrice (il le devrait) mais que si on SOMME par exemple,
l'ensemble de la matrice (qui n'existe pas! ;-) ) est additionnée et le résultat
est bon.

Ainsi, si 1 en A1 , 2 en A2 , etc.

=SOMME(INDIRECT("A1:A"&LIGNE(A25))) me donne 325.
Mais, si je sélectionne 25 cellules verticales et que, toujours en matricielle,
je saisis INDIRECT("A1:A"&LIGNE(A25)), il me retourne seulement des erreurs
(#VALEUR!).

Salutations,

Daniel M.


"AV" wrote in message
news:
=INDIRECT("a1:a"&LIGNE(A25))


C'est l'équivalent de
=INDIRECT("A"&LIGNE())
PS : Ne me demande pas pourquoi car je vois pas d'explication réellement
logique


AV





Avatar
AV
Ave Daniel,

Ainsi, si 1 en A1 , 2 en A2 , etc.
=SOMME(INDIRECT("A1:A"&LIGNE(A25))) me donne 325.
Mais, si je sélectionne 25 cellules verticales et que, toujours en
matricielle,

je saisis INDIRECT("A1:A"&LIGNE(A25)), il me retourne seulement des erreurs
(#VALEUR!).


Arffff....ben chez moi (XL2000)
Si je sélectionne B1:B25 >> saisie de INDIRECT("A1:A"&LIGNE(A25)) >>
valid.matric.
une plage de 325



Bon ... il y a de toute façon un truc !
AV


Avatar
Daniel.M
Bonsoir,

ce que j'ai dit pour F9 est aussi vrai avec la vraie "vie"


Exact. Même si ce que j'ai dit sur les différences de calculation existe, cela
n'explique pas ton problème particulier.

Ceci étant dit, pour ce qui concerne la grande formule, pourrais-tu nous dire ce
que tu cherches à faire exactement? On pourrait peut-être contribuer à la
raccourcir, qui sait. Car, personnellement, je suis trop paresseux pour
réflechir là-dessus ce soir :-)

Salutations,

Daniel M.


une cellule nommée IDline contient:
="'"&STXT(CELLULE("nomfichier";$A$2);CHERCHE("]";CELLULE("nomfichier";$A$2))+1;2
55)&"'!"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($B$1))&":"&ADRES
SE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($E$1))
et une autre
=SOMMEPROD(INDIRECT(IdLine)*($B$1:$E$1=(STXT($A$13;LIGNE(INDIRECT("1:"&NBCAR($A$
13)));1))))
ce découpage en 2 cellules fonctionne correctement
En revanche celui combinant les 2 formules --> out of order #valeur!

=SOMMEPROD(INDIRECT("'"&STXT(CELLULE("nomfichier";$A$2);CHERCHE("]";CELLULE("nom
fichier";$A$2))+1;255)&"'!"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLON
NE($B$1))&":"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($E$1)))*($B
$1:$E$1=(STXT($A$13;LIGNE(INDIRECT("1:"&NBCAR($A$13)));1))))

on vit bien quand même
RaMa

Avatar
RaMA
Bonjour

le problème posé était celui du post de hervé
resultat d'un calcul en automatique par macro du 8/12 14:13

et comme j'avais déja identifié ce "bug" je me suis pris au jeu....

Salutations

RaMa


--
.
"Daniel.M" a écrit dans le message de
news:
Bonsoir,

ce que j'ai dit pour F9 est aussi vrai avec la vraie "vie"


Exact. Même si ce que j'ai dit sur les différences de calculation existe,
cela
n'explique pas ton problème particulier.

Ceci étant dit, pour ce qui concerne la grande formule, pourrais-tu nous
dire ce
que tu cherches à faire exactement? On pourrait peut-être contribuer à la
raccourcir, qui sait. Car, personnellement, je suis trop paresseux pour
réflechir là-dessus ce soir :-)

Salutations,

Daniel M.


une cellule nommée IDline contient:
="'"&STXT(CELLULE("nomfichier";$A$2);CHERCHE("]";CELLULE("nomfichier";$A$2))+1;2
55)&"'!"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($B$1))&":"&ADRES
SE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($E$1))
et une autre
=SOMMEPROD(INDIRECT(IdLine)*($B$1:$E$1=(STXT($A$13;LIGNE(INDIRECT("1:"&NBCAR($A$
13)));1))))
ce découpage en 2 cellules fonctionne correctement
En revanche celui combinant les 2 formules --> out of order #valeur!

=SOMMEPROD(INDIRECT("'"&STXT(CELLULE("nomfichier";$A$2);CHERCHE("]";CELLULE("nom
fichier";$A$2))+1;255)&"'!"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLON
NE($B$1))&":"&ADRESSE(EQUIV($A$14;$A$2:$A$5;0)+LIGNE($A$2)-1;COLONNE($E$1)))*($B
$1:$E$1=(STXT($A$13;LIGNE(INDIRECT("1:"&NBCAR($A$13)));1))))

on vit bien quand même
RaMa