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

décalage de formules matricielles après actualisation

8 réponses
Avatar
finnley
bonjour =E0 tous

j'ai un probl=E8me de formule matricielle apr=E8s=20
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les donn=E9es a traiter (importer=20
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules=20
matricielles pour exploiter les donnees (pr=E8s de 20.000=20
cellules...) du style=20
=3DSOMME((donnees!$A$2:$A$500=3D$A$82)*(donnees!
$D$2:$D$500=3D$A88)*(donnees!AJ$2:AJ$500=3D1))

le probl=E8me :

a chaque fois que j'actualise, le 500 dans la premiere et=20
la seconde partie de la formule se modifie et bousille=20
tout... je pense qu'excel augmente la taille de la matrice=20
du nombre de lignes ajout=E9s par l'actualisation mais je ne=20
sais pas comment bloquer ce processus

d'avance merci

finnley

8 réponses

Avatar
isabelle
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage (Insertion, Nom, Définir)
à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en absolu.

isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de 20.000
cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la premiere et
la seconde partie de la formule se modifie et bousille
tout... je pense qu'excel augmente la taille de la matrice
du nombre de lignes ajoutés par l'actualisation mais je ne
sais pas comment bloquer ce processus

d'avance merci

finnley


Avatar
merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...


-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage (Insertion,
Nom, Définir)

à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en absolu.

isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de 20.000
cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la premiere
et


la seconde partie de la formule se modifie et bousille
tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais je
ne


sais pas comment bloquer ce processus

d'avance merci

finnley
.





Avatar
isabelle
fait le avec une macro, je te concontote un exemple si tu veux.

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage (Insertion,
Nom, Définir)

à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en absolu.

isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de 20.000
cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la premiere
et


la seconde partie de la formule se modifie et bousille
tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais je
ne


sais pas comment bloquer ce processus

d'avance merci

finnley
.







Avatar
isabelle
voilà,

Sub Macro1()
For i = 1 To 10
ActiveWorkbook.Names.Add Name:Îlls(1, i), _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA(Feuil1!C" & i & "))"
Next
End Sub

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage (Insertion,
Nom, Définir)

à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en absolu.

isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de 20.000
cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la premiere
et


la seconde partie de la formule se modifie et bousille
tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais je
ne


sais pas comment bloquer ce processus

d'avance merci

finnley
.







Avatar
finnley
merci !!!

tu as devancer mon pb

je viens juste de poster cette question :/
j'avais pas vu tes posts

finnley

-----Message d'origine-----
voilà,

Sub Macro1()
For i = 1 To 10
ActiveWorkbook.Names.Add Name:Îlls(1, i), _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA
(Feuil1!C" & i & "))"

Next
End Sub

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage
(Insertion,



Nom, Définir)
à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!
$A:$A))



et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en
absolu.




isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de
20.000




cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la
premiere




et
la seconde partie de la formule se modifie et
bousille




tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais
je




ne
sais pas comment bloquer ce processus

d'avance merci

finnley
.


.








Avatar
Encore merci

mais dans mes cellules a nommer j'ai une date au format j/m
qui n'est pas valide

j'ai essayé
ActiveWorkbook.Names.Add Name:=S" & Cells(1, i).value &",

mais ca colle pas :(

comment est ce que je peux convertir temporairement mes
entetes de colonnes pour qu'elles puissent être nommmer ?

merci
-----Message d'origine-----
voilà,

Sub Macro1()
For i = 1 To 10
ActiveWorkbook.Names.Add Name:Îlls(1, i), _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA
(Feuil1!C" & i & "))"

Next
End Sub

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage
(Insertion,



Nom, Définir)
à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!
$A:$A))



et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en
absolu.




isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de
20.000




cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la
premiere




et
la seconde partie de la formule se modifie et
bousille




tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais
je




ne
sais pas comment bloquer ce processus

d'avance merci

finnley
.


.








Avatar
isabelle
bonjour finnley,

il faudrait remplacer le caractère «/» par autre chose car excel ne
l'accepte pas dans les noms, et le nom ne doit pas commencé par un
chiffre.

Sub Macro1()
For i = 1 To 10
x = Evaluate("=FIND(""/""," & Cells(1, 2).Address & ")")
If IsError(x) Then
nom = Cells(1, i).Value
Else
nom = "_" & Evaluate("=SUBSTITUTE(" & Cells(1, i).Address &
",""/"",""_"")")
End If
nom = "_" & Evaluate("=SUBSTITUTE(" & Cells(1, i).Address &
",""/"",""_"")")
ActiveWorkbook.Names.Add Name:=nom, _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA(Feuil1!C" & i & "))"
Next
End Sub

isabelle


Encore merci

mais dans mes cellules a nommer j'ai une date au format j/m
qui n'est pas valide

j'ai essayé
ActiveWorkbook.Names.Add Name:=S" & Cells(1, i).value &",

mais ca colle pas :(

comment est ce que je peux convertir temporairement mes
entetes de colonnes pour qu'elles puissent être nommmer ?

merci
-----Message d'origine-----
voilà,

Sub Macro1()
For i = 1 To 10
ActiveWorkbook.Names.Add Name:Îlls(1, i), _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA
(Feuil1!C" & i & "))"

Next
End Sub

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage
(Insertion,



Nom, Définir)
à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!
$A:$A))



et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en
absolu.




isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de
20.000




cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la
premiere




et
la seconde partie de la formule se modifie et
bousille




tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais
je




ne
sais pas comment bloquer ce processus

d'avance merci

finnley
.


.










Avatar
isabelle
correction, il faut remplacer la ligne,
x = Evaluate("=FIND(""/""," & Cells(1, 2).Address & ")")
par
x = Evaluate("=FIND(""/""," & Cells(1, i).Address & ")")

isabelle




bonjour finnley,

il faudrait remplacer le caractère «/» par autre chose car excel ne
l'accepte pas dans les noms, et le nom ne doit pas commencé par un
chiffre.

Sub Macro1()
For i = 1 To 10
x = Evaluate("=FIND(""/""," & Cells(1, 2).Address & ")")
If IsError(x) Then
nom = Cells(1, i).Value
Else
nom = "_" & Evaluate("=SUBSTITUTE(" & Cells(1, i).Address &
",""/"",""_"")")
End If
nom = "_" & Evaluate("=SUBSTITUTE(" & Cells(1, i).Address &
",""/"",""_"")")
ActiveWorkbook.Names.Add Name:=nom, _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA(Feuil1!C" & i & "))"
Next
End Sub

isabelle


Encore merci

mais dans mes cellules a nommer j'ai une date au format j/m
qui n'est pas valide

j'ai essayé
ActiveWorkbook.Names.Add Name:=S" & Cells(1, i).value &",

mais ca colle pas :(

comment est ce que je peux convertir temporairement mes
entetes de colonnes pour qu'elles puissent être nommmer ?

merci
-----Message d'origine-----
voilà,

Sub Macro1()
For i = 1 To 10
ActiveWorkbook.Names.Add Name:Îlls(1, i), _
RefersToR1C1:="=OFFSET(Feuil1!R2C" & i & ",,,COUNTA
(Feuil1!C" & i & "))"

Next
End Sub

isabelle


merci bcp isabelle

j me doutais que ca ressemblerait a ca :(
dommage... 400 colonnes a changer...

-----Message d'origine-----
bonjour finnley,

pour rendre dynamique la longueur des plages,
il faudrait nommer chaque colonne de la plage
(Insertion,



Nom, Définir)
à référence : ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!
$A:$A))



et utilisé les noms de plage définie dans les formules

il est important que toutes les références soit en
absolu.




isabelle


bonjour à tous

j'ai un problème de formule matricielle après
actualisation des donnees depuis une base access

por faire plus precis :

sur une feuille, j'ai les données a traiter (importer
depuis une table Access
sur une autre feuille, j'ai un ensemble de formules
matricielles pour exploiter les donnees (près de
20.000




cellules...) du style
=SOMME((donnees!$A$2:$A$500=$A$82)*(donnees!
$D$2:$D$500=$A88)*(donnees!AJ$2:AJ$500=1))

le problème :

a chaque fois que j'actualise, le 500 dans la
premiere




et
la seconde partie de la formule se modifie et
bousille




tout... je pense qu'excel augmente la taille de la
matrice


du nombre de lignes ajoutés par l'actualisation mais
je




ne
sais pas comment bloquer ce processus

d'avance merci

finnley
.


.