Re,
beaucoup de formules pourraient être allégées, à commencer par ton calcul de dates.
ne peut pas se résumer à ça :Code:=SI(A3="";"";SI(A3>TEXTE(ANNEE((AUJOURDHUI()-7)-JOURSEM((AUJOURDHUI()-7);2)+4)&""&TEXTE(ENT(MOD(ENT(((AUJOURDHUI()-7)-2)/7)+3/5; 52+5/28))+1;"00");"0");"";(A3+7)))
?Code:=SI(OU(A3+7>AUJOURDHUI();A3+7="");"";A3+7)
La formule (SI(OU(A3+7>AUJOURDHUI();A3="");"";A3+7)) fonctionne sauf quand la date arrive a AUJOURDHUI(), a la place de ne rien affiché j'ai #Valeur qui s'affiche, j'ai essayé plusieurs chose mais rien n'y fait . J'ai fait un enregistrement quand meme afin de voir la place gagné ==> 40Ko max
1) pourquoi un xls ? Compatibilité obligatoire ? Le fait de passer en format xlsm MAGIQUE le fichier ne fait plus que 1500Ko
tu te passes de sierreur() qui permettrait de supprimer un recherchev().
que tu peux sinon remplacer par un nb.si plus court et léger ==> J'ai pas encore essayé cette solution
2) tu remplacerais tes "-" par des 0 directement dans les données tu gagnes encore un autre recherchev()
Macro faire afin de remplacer directement les "-" par des "0" afin d'enlever une rechercheV ==> gain de 1,5 à 2 MO sur le fichier
3) on ne prépare pas des lignes en avance qui ne servent à rien d'autre qu'alourdir encore un peu plus
Du coup il faudrait dans la macro récupérer le nombre de ligne de la base de données afin de répéter les formules sur x lignes seulement. Cependant je ne vois pas comment faire cette macro.
4) et si ça reste encore trop lourd (sans doute que oui) garde tes formules uniquement sur la 1ère ligne.
Copier-collage spécial valeur sur les autres. En cas de mise à jour ou d'ajout de données tu as juste à copier-coller ta ligne de formules. Enfin ça, ça dépend du mode d'utilisation de ton classeur. Maj permanentes ou ponctuelles.
Ce fichier va etre utilisé par plusieurs utilisateurs dont je ne connais pas leur connaissances informatique donc il faudrait que ce fichier soit le plus automatisés possible.
Voilà déjà quelques pistes.
C'est quoi un top 5 pour toi ?Les colonnes de A à I me permettent de créer un Top 5 fixe
Ah ok.
1) donc le top 5 de la ligne Total, et tu veux toutes les lignes de ces colonnes. On est d'accord ?
Oui c'est bien ça
Je veux récupérer l'information par ex : Combien de A1 à la date du 201343 ? Rep : 3
2) du coup, les autres colonnes tu t'en fous et on peut les supprimer pour alléger encore plus ?
Il 'y a que le colonne " B" qui ne sert à rien
3) dans l'hypothèse, improbable mais non nulle, où le 5ème total est présent 2 fois ou plus, on prend le premier qui tombe sous la main ou tu passes à un top 6 voire plus ?
Effectivement j'y est pensé mais comme c'est peu probable je prendrais le 1er qui me vient sous la main
4) les graphiques n'étant pas ma tasse de thé j'aurais aimé que tu répondes à ma question : pour le top 5 inf/sup tu ne peux pas définir la plage des données avec un nom dynamique sur la totalité de la table ?
Si tu souhaite avoir un nom, qui prends de la 1er ligne ( A4 : A & dernierligne ), oui c'est possible de créer un nom de ce genre. Est ce ceci ta demande?
Ou
Tu souhaite avoir un nom qui sélectionne ce qui se trouve entre la borne inf incluse et la borne sup incluse.
Auquel cas je pense que ce nom exite déjà " Graph".
Une 2nde extraction est-elle vraiment nécessaire ?
Je me sers de cette 2nd extraction pour mon top5 dynamique mais si une autre façon existe notamment avec l'aide d'une macro, elle n'a pu d'utilité .
2) tu ne réponds pas à ma question.
L'idée est de travailler sur la feuille AAA, ajouter tes semaines, supprimer le superflu et limiter au maximum la duplication de données.
Si tu peux faire tes graphiques directement avec AAA c'est toujours ça de gagné...
Peut-on supprimer les colonnes hors top 5 sur AAA ?
Non, je voudrais garder les colonnes hors TOP5 (fixe) car le Top5(fixe) peut être different du Top5(dynamique)
Donc sa m'oblige a créer une autre feuille afin de faire les calculs intermédiaire.
4) je ne vais pas te faire le graphique ni le nom dynamique qu'apparemment tu sais faire.
La question est : peux-tu faire un tel graphique avec un nom dynamique sur AAA (plage des données variable grâce au nom, plage de titres fixe) ou non ?
Oui, je peux m'occuper de la gestion des noms et des graphiques et créer un nom dynamique sur la feuille AAA
Depuis 2010 je galère pour imposer des noms pour un graphique, sans doute maîtrises-tu mieux cet aspect.
Sinon on reste sur une 2nde extraction pour la période voulue inf/sup
2) Non, je voudrais garder les colonnes hors TOP5 (fixe) car le Top5(fixe) peut être different du Top5(dynamique)
Ah oui, je n'avais pas vu cet aspect.
D'autant plus que tu as mis les mêmes colonnes pour les 2 dans Feuil1, ça ne pouvait pas sauter aux yeux.
Ce qui sous-entend qu'il faut refaire les totaux pour la sélection...
Il y a d'autres 'détails' oubliés ?
Non je pense que nous avons fait le tour des détails
Une question est restée en suspend :
Est-ce qu'on peut modifier l'ordre des colonnes sur AAA (mettre celles du top 5 en premier et insérer devant ou derrière la colonne Autres)) pour éviter de dupliquer les données ou tu tiens absolument à avoir une copie sur Feuil1 ?
Oui on peut mettre le Top5 en premier sa fera gagner uneétape mais comme le top5 dynamique qui ne sera certainement pas le meme que le fixe, je pense que je n'aurais pas le choix repasser par la feuil1 pour ces étapes de calculs.
Sub Macro4()
'
' Macro4 Macro
Sheets("AAA").Activate
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.NumberFormat = "dd/mm/yyyy"
Range("A4").FormulaR1C1 = "=(DATE(LEFT(RC2,4),1,1))"
Range("A5:A" & [B65536].End(xlUp).Row).FormulaR1C1 = "=IF(R[-1]C="""","""",IF(R[-1]C[1]>TEXT(YEAR((TODAY()-7)-WEEKDAY((TODAY()-7),2)+4)&""""&TEXT(INT(MOD(INT(((TODAY()-7)-2)/7)+3/5, 52+5/28))+1,""00""),""0""),"""",(R[-1]C+7)))"
For i = Range("A65536").End(xlUp).Row To 4 Step -1
If i - (i - 1) <> 7 Then
Rows(i).Insert Shift:=xlUp
Range("A" & i).FormulaR1C1 = "=R[-1]C1-7"
Range("B" & i).FormulaR1C1 = "=CNUM(TEXTE(R[-1]C[2];""000000"")+1)"
End If
Next
End sub