Besoin d'aide pour faire des moyennes!

Besoin d'aide pour faire des moyennes! - VB/VBA/VBS - Programmation

Marsh Posté le 06-02-2012 à 20:52:25    

Bonjour,  
 
Je dois réaliser des moyennes en fonction de plusieurs paramètres :  
 
J'ai des données dans un grand tableau excel qui sont classées en fonction  
1)du lieu  
2)de la date  
3)du point d'observation (de 1 à 5 points de 5 min chacun)  
 
Pour chaque point d'observation, un certain nombres d'espèces ont été recensées.  
Je dois m'arranger pour effectuer la moyenne des espèces rencontrées en un point d'observation de 5 minutes. -> à la main c'est relativement facile  
Ensuite, je dois effectuer la moyenne des espèces différentes rencontrées en 2 points d'observation de 5 minutes (donc la moyenne de 1+2, 1+3, 1+4, 1+5, 2+3, 2+4, 2+5, 3+4, 3+5 et 4+5)  
Puis la moyenne des espèces différentesrencontrées en 3 points d'observation de 5 minutes  
Puis pour 4 points d'observation de 5 minutes puis pour 5 points d'observation de 5 minutes.  
Je dois réaliser ces 5 moyennes pour chaque lieu et date, donc une centaines de fois 5 moyennes à la main ça risque de faire long...  
 
Y a-t-il un moyen d'automatiser tout ça?
 
Avec une macro excel ce serait top (j'ai aussi entendu parler du logiciel R mais je ne l'ai jamais utilisé!)  
 
Merci d'avance à tous!
 
 
 
 
http://cjoint.com/?BBgrixkjARV  
 
voila le classeur avec lequel je travaille. (y a bcp de choses inutiles dessus, mais ce qui intéresse dans le cas présnet c'est la feuille de données (feuille 1) et la feuille 6 qui reprend les mêmes explications que dans mon premier message!  
 
Les points d'observation doivente être choisis soit au hasard, soit de façon systématique (ce que je préfèrerais!) -> pour deux points parmis les 5, prendre en compte toutes les combinaisons possibles.  
 
Ce qu'il est vraiment important, c'est d'éviter les doublons d'espèces!

Reply

Marsh Posté le 06-02-2012 à 20:52:25   

Reply

Marsh Posté le 06-02-2012 à 21:45:13    

bonjour,
 
je te propose de créer un fichierfeuille récap dans lequel tu mets toutes les combinaisons possibles
 
l'idée est de récupérer les nombres pour chaque combinaisons à l'aide d'une macro
 
ci dessous celle correspondant à la combinaison 1 et 2
 

Code :
  1. Sub Macro1()
  2. on fait une copie de ta base de donnée
  3.     Range(cells(1,1),cells(range("A65000" ).end(xlup).rows,12)).Select
  4.     Selection.Copy
  5.     Sheets("Feuil1" ).Select
  6.     Sheets.Add After:=Sheets(Sheets.Count)
  7.     ActiveSheet.Paste
  8.    
  9.     For i = 5000 To 2 Step -1
  10.     'dans le cas de 2 opservations: 1 et 2 on supprimer les observations 3,4 et 5
  11.     If Cells(i, 7) <> 1 And Cells(i, 7) <> 2 Then
  12.     Rows(i).Delete
  13.     Next i
  14. 'ceci fonctionne si tu as déja trié
  15. 'on supprime les espèces identiques
  16.     For i = 5000 To 2 Step -1
  17.     If Cells(i, 8) = Cells(i - 1, 8) Then Rows(i).Delete
  18.     Next i
  19.    
  20.     nbligne = Range("A65000" ).End(xlUp).Row
  21.     somme = nbligne - 1 'correspond au nombre de taxon
  22. 'faudra affecter la bonne cellule en fonction de ta feuille récap
  23.     Sheets("recap" ).Range("B1" ) = somme
  24. End Sub


 
tu reproduits ce code autant de fois que nécessaires
 
il te suffira ensuite de faire les moyennes sur la feuille récap
 
ca va etre long
bon courage


Message édité par 86vomito33 le 07-02-2012 à 08:53:24
Reply

Marsh Posté le 06-02-2012 à 23:31:25    

Déja un grand merci de t'être penché sur mon problème!  Je vais regarder ce que ça donne.  Est-tu sur d'avoir pris en compte toutes les combinaisons possibles dans le cas de deux observations?

Reply

Marsh Posté le 06-02-2012 à 23:37:49    

Alors, je rencontre quelques problèmes!
J'ai déjà rajouté ' début de la ligne 3, mais quand j'exécute, le programme me die qu'il y a un Next sans For...

Reply

Marsh Posté le 07-02-2012 à 08:51:00    

j'ai pris juste le cas 1 et 2 faut duppliquer 1et3 1et4,etc...
 
en ce qui conerne la boucle for...next
 
modifie la deuxieme avec ii au lieu de i


Message édité par 86vomito33 le 07-02-2012 à 08:52:12
Reply

Marsh Posté le 07-02-2012 à 09:12:56    

Du coup j'ai ça :
 

Code :
  1. Sub Macro1()
  2. 'on fait une copie de ta base de donnée
  3.     Range(Cells(1, 1), Cells(Range("A65000" ).End(xlUp).Rows, 12)).Select
  4.     Selection.Copy
  5.     Sheets("Feuil1" ).Select
  6.     Sheets.Add After:=Sheets(Sheets.Count)
  7.     ActiveSheet.Paste
  8.  
  9.     For i = 5000 To 2 Step -1
  10.     'dans le cas de 2 opservations: 1 et 2 on supprimer les observations 3,4 et 5
  11.     If Cells(i, 7) <> 1 And Cells(i, 7) <> 2 Then
  12.     Rows(i).Delete
  13.     Next i
  14.     For i = 5000 To 2 Step -1
  15.     If Cells(i, 8) = Cells(i - 1, 8) Then Rows(i).Delete
  16.     Next ii
  17.  
  18.     nbligne = Range("A65000" ).End(xlUp).Row
  19.     somme = nbligne - 1 'correspond au nombre de taxon
  20. 'faudra affecter la bonne cellule en fonction de ta feuille récap
  21.     Sheets("recap" ).Range("B1" ) = somme
  22. End Sub


 
Mail il me met le même message!  (erreur de compilation! Next sans For)

Reply

Marsh Posté le 07-02-2012 à 10:40:54    


 
        For i = 5000 To 2 Step -1
        'dans le cas de 2 opservations: 1 et 2 on supprimer les observations 3,4 et 5
        If Cells(i, 7) <> 1 And Cells(i, 7) <> 2 Then Rows(i).Delete
        Next i
 
        For ii = 5000 To 2 Step -1
        If Cells(ii, 8) = Cells(ii - 1, 8) Then Rows(ii).Delete
        Next ii

Reply

Marsh Posté le 07-02-2012 à 10:42:32    

pour tn info
for ... to ... step ...
....
next
 
if ... then
...
else
...
end if
 
ou if ... then ...

Reply

Marsh Posté le 07-02-2012 à 15:57:06    

Alors soit je suis un vrai manche en la matière (ce qui est fort possible), soit y a un bug!
 
J'ai ajouté le code que tu m'as donné et excel m'affiche maintenant "incompatibilité de type"
 
(et j'ai rien compris au dernier message lol!)

Reply

Marsh Posté le 08-02-2012 à 00:33:50    

En gros, il faut arriver à coder un truc du genre :
 
pour les lignes ayant la même unité et la même date :  
 
nombre de cellules différentes de la colonne "code taxon" pour ("point d'obs=1" + "point d'obs=2" + "point d'obs=3" + "point d'obs=4" + "point d'obs=5" )/5   *
nombre de cellules différentes de la colonne "code taxon" pour ("point d'obs=1 ou 2" + "point d'obs=1 ou 3" + "point d'obs=1 ou 4" + "point d'obs=1 ou 5" + "point d'obs=2 ou 3" +  "point d'obs=2 ou 4" +  "point d'obs=2 ou 5" +  "point d'obs=3 ou 4" +  "point d'obs=3 ou 5" +  "point d'obs=4 ou 5" )/10
nombre de cellules différentes de la colonne "code taxon" pour ("point d'obs=1 ou 2 ou 3" + "point d'obs=1 ou 2 ou 4" + "point d'obs=1 ou 2 ou 5" + "point d'obs=1 ou 3 ou 4" + "point d'obs=1 ou 3 ou 5" +  "point d'obs=1 ou 4 ou 5" +  "point d'obs=2 ou 3 ou 4" +  "point d'obs=2 ou 3 ou 5" +  "point d'obs=2 ou 4 ou 5" +  "point d'obs=3 ou 4 ou 5" )/10
nombre de cellules différentes de la colonne "code taxon" pour ("point d'obs=1 ou 2 ou 3 ou 4" + "point d'obs=1 ou 2 ou 3 ou 5" + "point d'obs=1 ou 2 ou 4 ou 5" + "point d'obs=2 ou 3 ou 4 ou 5" )/4
nombre de cellules différentes de la colonne "code taxon" pour ("point d'obs=1 ou 2 ou 3 ou 4 ou 5" )
 
*   en réalité, nombre de cellules de la colonne "code taxon" ("différentes pour point d'obs=1" + "différentes pour point d'obs=2" + "différentes pour point d'obs=3" + "différentes pour point d'obs=4" + "différentes pour point d'obs=5" )/5

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed