Recalcul conditionnel par zone (titre peu explicite desolé)

kuma_buzz

XLDnaute Nouveau
Bonjour,


Pour commencer désolé pour le titre mais comme vous allez le comprendre j'avais du mal à resumer mon probleme . Je suis débutant en excel et j'aurai besoin de votre aide pour optimiser le calcul sur l'un de mes classeurs.

Pour commencer, le classeur en question est de type Lien supprimé que j'ai récupéré sur un autre post de ce forum et dans une message de Jocelyn que je remercie au passage.

C'est un classeur avec 2 feuilles dont une "base de donnée" et une feuille "liste déroulante imbriqué" qui permet d'aller rechercher les données dans la "base de donnée".

Mon problème :

Si le classeur mis en lien ci dessus est relativement court et que le calcul s'y fait vite, j'ai du pour mon cas l'adapter, rajouter une liste déroulante ainsi que de multiples lignes dans la feuille "Recherche" (30 pour tout vous dire) .

Au final je me retrouve avec une base de donnée d'environ 60 colonnes sur 650 lignes, et d'une feuille de 30 lignes contennant chacune 4 listes imbriquées (et donc 30 fois 4 colonnes de formules matricielles).
Là ou mon pc commence à poser problème, c'est qu'à chaque changement de l'un des éléments de l'une des liste il me recalcule toute les listes (et donc toues les formules matricielles associées) et ça prend bien 20 seconde à chaque fois.

Mon classeur étant prévu pour créer des menus alimentaires, cette lenteur est vraiment handicapante.

Je ne peux malheureusement pas vous donner le fichier original car la base de donnée est confidentielle mais si jamais il vous est indispensable je prendrai le temps de modifier les données pour pouvoir vous le communiquer.


Ce que je recherche :

Une manière de ne calculer que les formules matricielles associées à la liste que je viens de changer de manière à ce que le calcul soit plus rapide.


Je vous remercie d'avance pour votre aide, en espérant que ce message soit suffisament clair pour trouver une réponse.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Bonjour kuma buzz et Bienvenue, re le forum,

Pour Excel, le calcul, c'est tout ou rien...

Ce que tu peux faire, néanmoins, c'est pendant ton temps de travail sur la ou les feuille(s), c'est désactivier l'option de calcul automatique et ne le lancer qu'à fin.

Outils/Options/Calcul et tu coches Calcul sur ordre.... et quand besoin tu fais F9.

Mais, ce n'est peut-être pas ce que tu souhaites ?

A te lire.

Bon après-midi

Jean-Pierre
 

kuma_buzz

XLDnaute Nouveau
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Bonjour, et merci pour ta réponse.


Pour tout te dire c'est une manip que j'ai déjà éffectué pour me faciliter la vie durant la création du classeur, mais pour ce qui est de l'utilisation ça risque de ne pas convenir.


L'utilisation voulu de ce classeur est une création de menu journalier pour une personne.

Cela se fera donc en entretien du type :

-Q : Que mangez vous le matin ?
-R : du café sans sucre et des tartines beurrées

On devra donc choisir en ligne 1 : Liste 1 = Petit déjeuner => liste 2 = boisson => liste 3 = non sucré => liste 4 = café non sucré

et ligne 2 : liste 1 = Petit déjeuner => liste 2 = aliment => liste 3 = tartines => liste 4 = tartines beurrées

Etc ... pour tout le repas.

Donc il est nécessaire que dès qu'une liste est modifiée la liste suivante sur la même ligne soit mise à jour pour continuer.


J'ajoute que je viens de supprimer els calculs matricielles pour la liste 1 étant donné que quoi qu'il arrive elle comprend toujours la totalité des possibilités et apparament ça va déjà un peu plus vite.


J'espère que l'on pourra trouver une autre solution puisque celle que je demande semble ne pas exister :(
 

kuma_buzz

XLDnaute Nouveau
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Je me permet de reposter à la suite pour apporter une question complémentaire :

Etant débutant, j'avoue avoir un peu "bidouillé" avec les formules pour arriver à mon résultat, et au final je pense que mes calculs ne sont pas optimisés du tout.


En rapport au fichier que j'ai fourni plus haut, quelle est la méthode la moins couteuse en "calcul" pour rajouter des lignes de liste (sur la feuille recherche il n'y a qu'une ligne de 3 listes, il m'en faut 30 de 4 listes) ?

Personnellement j'ai rajouté 4 colonnes de calcul matrcielle (similaires au colonnes sur la feuille "liste" pour chacune des lignes de listes, et j'ai aussi créé les plages correspondantes.

J'imagine qu'il y a peut être des solutions moins lourdes.

Merci d'avance.
 

SergiO

XLDnaute Accro
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Bonjour kuma_buzz, jeanpierre,

Sur la base de l'exemple, j'ai rajouté une macro événementielle qui calcule chaque liste au coup par coup.
Mais je ne sais pas si tu pourras l'adapter à ton fichier.

Une solution "Tout VBA" serait je pense moins gourmande en ressources que des formules matricielles.

Regarde et dis nous.

@+
 

Pièces jointes

  • natacha-1.zip
    12.2 KB · Affichages: 23

kuma_buzz

XLDnaute Nouveau
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Bonjour Sergio et merci de te pencher sur mon cas.


Je n'ai jamais utilisé de macro évenementielle et je ne sais pas comment essayer ta macro sur mon fichier, pourrais tu m'expliquer ?

J'ai bien essayé la fonction exporter / importer mis ça n'a pas l'air de marcher.


Je vais essayer de transférer toutes mes données dans la feuille que tu m'as fourni et voir ce que ça dis, je vous tiens au courant !

a+
 

SergiO

XLDnaute Accro
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Re,

Pour aller dans VBA, Alt F11

Dans la feuille recherche, il y a un code que tu peux copier coller dans ton fichier mais pour que ça fonctionne il faut qu'il ait exactement la même structure (Décalage de 7 colonnes entre les champs de la feuille Liste et Recherche) sinon, il faudra l'adapter.

Difficile de t'aider davantage sans ton fichier...
 

kuma_buzz

XLDnaute Nouveau
Re : Recalcul conditionnel par zone (titre peu explicite desolé)

Comme je m'en doutais ... je n'ai pas réussi :D


Alors voici le fichier modifié pour que vous puissiez y jetter un oeil, en m'excusant pour la simplicité des données de remplacement.

Ce lien n'existe plus


Sinon j'ai aussi pensé à gérer ça autrement qu'avec des calculs matriciels, mais je n'arrive pas à établir la formule.

Existe il une fonction permettant de vérifier toutes les cellules précédents dans une colonne ?

Le but c'est de faire une fontion avec des si imbriqués qui vérifiera si ma valeur n'est pas présente dans les lignes précédentes comme par exemple :

=SI(ET(B567=Feuil1!B$25:"B567 n'est pas présent dans C1:C567");"=B567";"=0")


Je continue de chercher ,merci et à plus tard.
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 041
Membres
101 879
dernier inscrit
Arthur M