formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chroberto

XLDnaute Nouveau
Bonsoir à toutes et tous,
formule SOMMEPROD( ) dans toutes les cases de ce tableaux.(fichier joint allégé...)

Le problème c'est que dans mon fichier définitif, j'aurais 5 ou 6 autres onglets qui nécéssiteront les mêmes formules matricielles.
Ceci représenterait un nombre trop important de formule lourdes pour le fichier et le PC,

Question:
Quoi mettre en place pour alléger le PC et le fichier, ne pas ralentir de trop le calcul des formules? un code VBA!
Ci oui lequel? (j'avais penser un code VBA pour saisir dans toutes les cases la formule, donc le résultat et ensuite un copier/coller (valeur) pour alléger tout ça) le tout en macro avec un bouton. Est-ce une bonne idée, car je débute seulement en VBA.
Sinon autres proposition,,,

Dans l'onglet "AD": saisie de nvelles lignes suivant l'activitée de l'entreprise... c'est pour cette raison que j'ai mis les matrices en dynamique.
merci par avance de votre aide
 

Pièces jointes

Dernière édition:
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour chroberto,
J'ai pas encore ouvert ton fichier mais déja il est très facile de remplacer les formules par leurs valeurs en procédent ainsi . . .
selectionnne ton tableau et copier ensuite de suite collage spécial et "que les valeurs"
A bientot
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour

J'ai l'impression que tu peux supprimer le *1 dans toutes les formules SOMMEPROD puisque tu as "supprimé" l'affichage des 0, mais, malheureusement, cela ne changera pas grand chose à ton problème.

@ plus
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Re:
Voici ton fichier avec une macro et un bouton
Reviens si besoin de + d'explication
Tu dois activer les macros au lancement du fichier
A+
 

Pièces jointes

Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

bonjour tout le monde, (youky(BJ), JCGL, CISCO) 🙂

premièrement : merci à tous pour avoir jeté un oeil sur mon pb.

deuxièmement : JCGL si tu ne trouve pas les même valeur entre mon tableau de suivi et ton TCD c'est tout simplement car dans l'onglet "AD" il y a des codes clients qui ne se trouve pas dans mon tableau (réduction du fichier oblige!!!) mais ton oeil avertit en vaut deux...bien vu l'aveugle!!!! 😀

troisièmement : youky merci pour ton code VBA, il semble fonctionner parfaitement pour ce fichier d'exemple...maintenant j'aimerai le tester sur mon fichier complet mais pour celà il faudrait que tu m'explique ton code si possible...(merci par avance)
J'ai vu les plages de données que tu délimitais mais je n'ai pas trop compris le nom des feuilles (pkoi "Feuil8" par exemple) et le principe de recherche dans ton code n'a plus rien à voir avec mon SOMMEPROD()?
Enfin est-ce que tu pourrais me faire une ptite explication rapide de ton code.
merci à plus tard...
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour à tout le fil,
J'ai amélioré la macro dans ce fichier pour prendre en compte la vrai dimension du tableau
J'ai mis pas mal d'explications dans les cadres roses à droite
A+
 

Pièces jointes

Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

merci youky(BJ), ton code VB est au pti oignon!!!
je l'ai mis en place sur d'autre feuille de mon fichier et ça fonctionne nickel.
UN GRAND MERCI 🙂
maintenant si je veux devenir de plus en plus autonome à l'avenir... ambition de chaque Exelnaute!!! j'aimerai bien que tu m'explique juste l'intitulé de tes lignes de commande ci-dessous
Code:
 For k = 2 To Feuil4.[A65000].End(3).Row
col = Application.Match(Feuil4.Cells(k, 3), Range("C3", Cells(3, dcol)), 0)
lig = Application.Match(Feuil4.Cells(k, 1), Range("A5:A" & bas), 0)
pourquoi tu nomme ainsi "feuille4" alors que mes feuilles à moi pocède d'autre nom?
(pour ma culture perso VBA)
je te remercie par avance pour cette petite information complèmentaire.
Mais sachez que je suis amplemant satisfait des réponses qui m'ont été apportées.

a + le FORUM
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour,

youky(BJ) étant déconnecté, je me permets de te répondre

"pourquoi tu nomme ainsi "feuille4" alors que mes feuilles à moi pocède d'autre nom?"

Simplement parce que youky(BJ) utilise le code name de la feuille c'est-à-dire son nom avant ton propre changement.

Tu peux le voir sous VBE où tu trouveras "Feuil1" et à côté le nom que tu lui a attribué.

Bon AM.

Jean-Pierre
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonsoir à Jean-pierre
que je remercie pour s'impliquer dans le fil et avoir donné les meilleurs explications.
Je voudrais seulement expliquer le pourquoi de l'utilisation du codename plutot que le name de la feuil. . . .
j'ai réalisé quelques fichiers pour la grande distribution dont je faisais parti, je me suis vite rendu compte que pas mal de gens renomaient à leur guise les onglets et mes macros ont vite plantées. il fallait vite faire un choix, soit tout verrouiller(pas toujours facile) ou contourner le problème.
Le codeName . . . . ho ! ! ! ! miracle est venu à mon secours.
Depuis je me suis rendu compte que personne n'allait bidouiller ce codename en VBA
donc les gens peuvent renommer leurs onglets à leurs guises sans perturber la macro.

Je regrette seulement une chose jean-Pierre c'est que ce codename ne soit pas plus employé.(apparement je suis l'un des seuls à l'employer)
Au plaisir d'un prochain fil . . .
 
Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour le fil,
youky(BJ) ce code que tu m'as réalisé est exactement ce que je recherchais, en plus il est adaptable pour toutes mes autres feuilles qui seraient sur le même principe... à un poil près!
Je m'explique: dans ton code tu paramètres "bas" et "dcol" pr qu'ils recherchent automatiquement la zone qui sera à remplir ensuite mais par contre dans ta ligne d'instruction "effacement des précédentes données" tu as conservé les paramètre de ton code initial (avant modif adapté pr ttes feuilles).
comment puis-je modifier mon : Range("C5😛" & bas) pour qu'il ne s'arrête pas à "P" mais pas non plus à ma dernière ligne 5 (car j'ai 2 colonne de sommes).
en gros ce serait la même colonne que la variable "dcal".

merci de me renseigner sur la modif à apporter...
je suis ouvert à toute aide, pas uniquement à celle de youky(BJ) 🙂

a+ le fil...

Code:
Sub PLAY()
bas = [A65000].End(3).Row
dcol = [IV3].End(xlToLeft).Column
[U][B]Range("[COLOR="Red"][B]C5:P[/B][/COLOR]" & bas).ClearContents[/B][/U]
For k = 2 To Feuil4.[A65000].End(3).Row
col = Application.Match(Feuil4.Cells(k, 3), Range("C3", Cells(3, dcol)), 0)
lig = Application.Match(Feuil4.Cells(k, 1), Range("A5:A" & bas), 0)
On Error Resume Next
Cells(lig + 4, col + 2) = Cells(lig + 4, col + 2) + 1
If Err > 0 Then Err.Clear
Next
End Sub
 

Pièces jointes

Re : formule SOMMEPROD( ) trop lourdes...besoin d'aide pr l'alléger

Bonjour chroberto,
Voici j'ai modifié 2 lignes
Pour trouver la dcol j'utilise la ligne 4 et j'enleve -2
j'ai pas testé mais ça doit le faire
A+
Code:
Sub PLAY()
'crée par christophe ROBERT le 16 décembre 2009
bas = [A65000].End(3).Row
dcol = [[COLOR="red"]IV4[/COLOR]].End(xlToLeft).Column [COLOR="red"]- 2[/COLOR]
Range("C5[COLOR="Red"]", Cells(bas, dcol)).[/COLOR]ClearContents
For k = 2 To Feuil4.[A65000].End(3).Row
col = Application.Match(Feuil4.Cells(k, 3), Range("C3", Cells(3, dcol)), 0)
lig = Application.Match(Feuil4.Cells(k, 1), Range("A5:A" & bas), 0)
On Error Resume Next
Cells(lig + 4, col + 2) = Cells(lig + 4, col + 2) + 1
If Err > 0 Then Err.Clear
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
975
Retour