modification matrice involontaire avec sommeprod

E

egt

Guest
Bonjour à tous

Je possède un classeur avec plusieur feuillet. Dans l'un d'eux je possede un nbre de ligne important sur lequel j'execute une macro qui supprime les lignes inutiles. Dans un autre feuillet je possede un tableau de synthèse qui à l'aide de la fonction sommprod calcul le nbre de ligne répondant au critere.
Mon pb : après avoir excecutée ma macro de nettoyage, la formule avec sommeprod est modifiée automatiquement et je me retrouve avec une matrice qui n'est plus la bonne.
Avant macro (valeur 3000)
=SOMMEPROD(((ENT(MOD(ENT(('by company-details'!$J$2:$J$30002)/7)+0,6;52+5/28))+1)=1)*('by company-details'!$AF$2:$AF$3000='France'))
Après macro (valeur 113)
=SOMMEPROD(((ENT(MOD(ENT(('by company-details'!$J$2:$J$113-2)/7)+0,6;52+5/28))+1)=1)*('by company-details'!$AF$2:$AF$113='France'))

Que ce passe t-il ? pourquoi et comment l'éviter ?

Merci à tous
 

ERIC S

XLDnaute Barbatruc
Bonjour

Excel ajuste automatiquement les formules en cas d'insertion et suppression de ligne.

On trouve cela bien en insertion......

tu peux faire un remplacer $113 par $3000

sinon peut-être n epas supprimer les lignes mais les décaler à la fin du tableau (tri ?)

A+
 
E

egt

Guest
Merci mais j'avais compris les principes élémentaires d'excel.
Ma liste est amené à comporter plusieurs milliers de lignes surlesquelles il me faut faire un traitement manuel après lecture, c'est pourquoi les supprimer est souhaitable pour épurer les données et alléger les traitements.
merci
 

Jocelyn

XLDnaute Barbatruc
bonjour le Forum,
Bonjour egt, ERIC S,

pour éviter de voir ta plage de la formule sommeprod modifiée de la sorte tu peux peut etre nommée tes plages

'by company-details'!$J$2:$J$30002 et 'by
company-details'!$AF$2:$AF$3000

de facon Dynamique avec une formule decaler,

pour nommer une plage Menu insertion => nom => définir dans la page qui s'auvre donner le nom que tu veux et dans le champs fait référence à pour la plage 'by
company-details'!$AF$2:$AF$3000
=decaler('by
company-details'!$AF$2;;;nbval('by
company-details'!$a:$a)-1)

ou -1 permet de suprimer le titre et nbval('by
company-details'!$A:$A (référence A:A car la colonne A est généralement la plus remplie)
permet de définir le nombre de lignes a décaler pour atteindre la fin de la plage a partir de la cellule 'by
company-details'!$AF$2


Jocelyn



oups bonjour Monique désolé je ne t'avais pas vu pas grave j'en profite pour te saluer bien bas :) :)

Message édité par: Jocelyn, à: 22/02/2006 15:18
 
E

egt

Guest
Merci à tous les 2 mais malgré les modifs en ajoutant les noms selon la formule :
=DECALER('by company-details'!$J$2;;;NBVAL('by company-details'!$J:$J)-1)
la fonction sommeprod n'a plus l'air de comprendre et me retourne #N/A

KESAKO ???

Merci
 

Monique

Nous a quitté
Repose en paix
Re,

Je trouve plus sûr de mettre, pour les 2 plages :
=NB($J:$J)

En colonne J, cette formule compte le nb de valeurs numériques,
si tu as un titre (texte) en J2, il n'est pas pris en compte

L'autre colonne contient du texte,
il faut que les 2 plages aient la même longueur,
cette longueur = NB(J:J)

Je récapitule :
Decaler(1ère cellule de données; 0 ligne donc omis, 0 colonne donc omis; largeur 1 donc omis; hauteur NB(J:J))

Je résume :
=DECALER($J$2;;;NB($J:$J))
=DECALER($AF$2;;;NB($J:$J))

Tu la tapes comme ça,
tu cliques sur 'Ajouter',
Excel se charge de mettre les références de l'onglet

A moins qu'il y ait des cellules vides en colonne J ?
Si oui :
=DECALER($J$2;;;EQUIV('zz';$J:$J)-1)
=DECALER($AF$2;;;EQUIV('zz';$J:$J)-1)

EQUIV('zz';$J:$J) te renvoie le n° de ligne de la dernière cellule non vide
que ce soit du texte ou une valeur numérique
-1 parce que tu démarres en ligne 2, mais il n'est pas indispensable.
 

Statistiques des forums

Discussions
312 836
Messages
2 092 655
Membres
105 479
dernier inscrit
chaussadas.renaud