A voir également:
- Plage longueur variable [VBA]
- Image de manchots sur une image de plage. - Forum Graphisme
- Image de manchots sur une image de plage ✓ - Forum Graphisme
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Msgbox vba variable ✓ - Forum VB / VBA
4 réponses
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
Modifié par michel_m le 2/10/2011 à 11:50
Modifié par michel_m le 2/10/2011 à 11:50
Bonjour à tous,
sans VBA et avec formules matricielles (ordre des numéros indifférent)
https://www.cjoint.com/?3JclWxtLMz3
Michel
sans VBA et avec formules matricielles (ordre des numéros indifférent)
https://www.cjoint.com/?3JclWxtLMz3
Michel
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
30 sept. 2011 à 23:21
30 sept. 2011 à 23:21
Bonsoir,
Comme ils incarnent différentes cardinalités de valeurs, chaque plage doit prendre en comprendre le nombre d'éléments dans la première colonne.
Restons simples, dis-nous ce que tu veux calculer ;-)
eric
Comme ils incarnent différentes cardinalités de valeurs, chaque plage doit prendre en comprendre le nombre d'éléments dans la première colonne.
Restons simples, dis-nous ce que tu veux calculer ;-)
eric
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
953
1 oct. 2011 à 03:58
1 oct. 2011 à 03:58
Salut le forum
Avec une fonction personnalisée
Utilisation : =MoyPolygone($B$4:$B$10;$A$4:$A$10;1)
Mytå
Avec une fonction personnalisée
Function MoyPolygone(champ, champcritere, critere) Dim MonDico As Object Dim I As Byte, Valeur As Double Application.Volatile Set MonDico = CreateObject("Scripting.Dictionary") Valeur = 0 For I = 1 To champ.Count If UCase(champcritere(I).Value) = UCase(critere) Then If Not MonDico.Exists(champ(I).Value) Then _ MonDico.Add champ(I).Value, champ(I).Value Valeur = Valeur + champ(I) End If Next I MoyPolygone = Valeur / MonDico.Count End Function
Utilisation : =MoyPolygone($B$4:$B$10;$A$4:$A$10;1)
Mytå
Oui, vous avez raison !
Je reformule mon truc:
Chaque fois que ça change de chiffre dans la colonne de gauche - j'imprime la moyenne dans la cellule appropriée sur l'autre page Excel, et je recommence une autre moyenne, qui sera à son tour imprimée vers sa cellule appropriée sur l'autre page Excel et ainsi de suite...
Du genre - il lit 1 - 1 - 1 - 1 ... et toute les valeurs associée rentre dans la plage "=MOYENNE(A1;Ax)...." // ensuite -Hop- on arrive à 2 et là il change de cellule sur l'autre page Excel pour recommencer le même processus....
Truc particulier c'est le nombre de valeurs qui sont associées à 1 n'est pas le même que le nombre de valeurs qui sont associées à 2 et ainsi de suite.
Voilà,
Et pour ce qui est du code ci-haut, j'vais commencer à l'étudier mais comme je ne connais pas VBA j'y mettrai un certain temps.
Merci ! Votre aide est appréciée !
Je reformule mon truc:
Chaque fois que ça change de chiffre dans la colonne de gauche - j'imprime la moyenne dans la cellule appropriée sur l'autre page Excel, et je recommence une autre moyenne, qui sera à son tour imprimée vers sa cellule appropriée sur l'autre page Excel et ainsi de suite...
Du genre - il lit 1 - 1 - 1 - 1 ... et toute les valeurs associée rentre dans la plage "=MOYENNE(A1;Ax)...." // ensuite -Hop- on arrive à 2 et là il change de cellule sur l'autre page Excel pour recommencer le même processus....
Truc particulier c'est le nombre de valeurs qui sont associées à 1 n'est pas le même que le nombre de valeurs qui sont associées à 2 et ainsi de suite.
Voilà,
Et pour ce qui est du code ci-haut, j'vais commencer à l'étudier mais comme je ne connais pas VBA j'y mettrai un certain temps.
Merci ! Votre aide est appréciée !
2 oct. 2011 à 15:27
Une variante en formule : Moy_Poly.xls
Mytå
Modifié par Jul le 2/10/2011 à 22:33
Pas bête vos trucs ! (Héhé !)
J'avais complètement oublié qu'on pouvait faire des fonctions de ce type [assez complètes] simplement dans la bar de formule en haut....
Ça devrait simplifier des choses.
J'ai pris une partie du problème à part, histoire de pouvoir mieux comprendre la logique.
J'ai pris quelques heures sur chacune des solutions que vous m'avez suggérées.
J'aime particulièrement ton exemple Michel puisqu'il tient compte que les polygones ne seront probablement pas en ordre dans la liste de gauche.
Ensuite, je ne sais pas pourquoi - je n'arrive pas à glisser vers le bas (!)
Je vais charger mon fichier pour vous montrer ce qui se passe. C'est à la page 3...
Rien ne s'affiche quand je glisse la fonction de D2 vers D3, malgré la notice "Ctrl+Maj+Enter"
Et pour terminer, y'a un truc dont je ne vous avais pas parlé, il y a en faite plusieurs "groupe de polygones " - C'est-à-dire qu'il y a 19 groupes de 12 polygones, ça fait une boucle de plus, probablement basée sur la même logique casse-tête sur laquelle je m'arrache les cheveux - [Quand il y a un changement dans cette colonne -> Passe à la prochaine cellule pour l'écriture]
On comprend mieux le portrait général en consultant les pages 1 et 2 (intitulées respectivement 20100705 et stats) sur lesquelles j'ai écris des commentaires pour m'assurer d'être clair.
Encore une fois, merci mille fois de votre aide, ce forum m'est vraiment très utile !
http://cjoint.com/?AJcwHtCp1XI
Modifié par Mytå le 2/10/2011 à 23:47
Jul, mon fichier tient compte aussi du fait que les polygones ne sont pas en ordre dans la saisie.
Plage nommées sur la feuille 20100705
Formule en B2 de la feuille Stat (A recopier sur ton tableau)
Inconvénient le temps de recalcul va être assez long.
Mytå
Modifié par Mytå le 2/10/2011 à 23:51
Jul, avec les formules il faut aussi ajuster les plages de travail.
Il est fortement recommandé d'utiliser des plage nommées.
Ici de A1 à A100 et ton tableau est beaucoup plus grand.
Mytå
4 oct. 2011 à 14:48