Plage longueur variable [VBA]
Jul
-
Jul -
Jul -
Bonjour à tous !
Je passe beaucoup de temps si un problème pas si compliqué ...
J'ai un fichier .txt que j'importe vers Excel.
La première colonne fait référence au numéro de polygone, dans lequel il y a plusieurs valeurs.
La deuxième colonne - les valeurs.
Ex.
Poly Valeur
1 ___ 4,5
1 ___ 5,0
1 ___ 6,2
2 ___ 3,4
2 ___ 5,6
2 ___ 6,4
2 ___ 8,2
... ...
Donc... Je veux trouver la moyenne pour le polygone 1, la moyenne pour le polygone 2 , ect...
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.
Comment je peux programmer ça en VBA ???
Je passe beaucoup de temps si un problème pas si compliqué ...
J'ai un fichier .txt que j'importe vers Excel.
La première colonne fait référence au numéro de polygone, dans lequel il y a plusieurs valeurs.
La deuxième colonne - les valeurs.
Ex.
Poly Valeur
1 ___ 4,5
1 ___ 5,0
1 ___ 6,2
2 ___ 3,4
2 ___ 5,6
2 ___ 6,4
2 ___ 8,2
... ...
Donc... Je veux trouver la moyenne pour le polygone 1, la moyenne pour le polygone 2 , ect...
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.
Comment je peux programmer ça en VBA ???
A voir également:
- Plage longueur variable [VBA]
- Vba range avec variable ✓ - Forum VB / VBA
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
- Image manchot plage pix - Forum Graphisme
- Image plage pix ✓ - Forum Google Chrome
- Incompatibilité de type vba ✓ - Forum Programmation
4 réponses
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
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
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 !
Une variante en formule : Moy_Poly.xls
Mytå
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
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å
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å