Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Filtrage VBA

xvella

XLDnaute Occasionnel
Bonjour Forum,
Bonjour Tous,

Voilà, j'ai un petit souci:

Après filtration d'un tableau de donnée entre 2 date j'obtient un tableau à 2 colonne avec des dates et des valeurs.

Maintenant j'aimerais crée un tableau qui pour chaque date me donnerais l'ecart type des données du tableau.

Merci d'avance.

@+
 

Pièces jointes

  • Auto-Graf.zip
    9.9 KB · Affichages: 32
  • Auto-Graf.zip
    9.9 KB · Affichages: 29
  • Auto-Graf.zip
    9.9 KB · Affichages: 29

pierrejean

XLDnaute Barbatruc
Re : Filtrage VBA

bonjour xvella

Vois si cela te convient
L'ecart type mentionné correspond a ECARTTYPEP de Excel
 

Pièces jointes

  • Auto-Graf.zip
    15.8 KB · Affichages: 29
  • Auto-Graf.zip
    15.8 KB · Affichages: 31
  • Auto-Graf.zip
    15.8 KB · Affichages: 32

pierrejean

XLDnaute Barbatruc
Re : Filtrage VBA

Re

Voici la macro commentée

Code:
Sub Macro1()
'ligne apartir de laquelle on va ecrire
ligne = 3
'declaration de la collection
Dim coll As Collection
Set coll = New Collection
'Mise sous forme de collection de la liste des differentes dates
For n = 3 To Range("B65536").End(xlUp).Row
On Error Resume Next
  If Range("B" & n) <> "" Then coll.Add Range("B" & n), CStr(Range("B" & n))
On Error GoTo 0
Next n
'pour chaque date de la collection
For m = 1 To coll.Count
'pour chaque ligne en colonne B
 For n = 3 To Range("B65536").End(xlUp).Row
 'Si la date correspond a celle de la collection
 'et que la colonne C n'est pas vide
   If Range("B" & n) = coll(m) And Range("C" & n) <> "" Then
'on totalise les valeurs
     totx = totx + Range("C" & n)
'on totalise le carré des valeurs
     totx2 = totx2 + Range("C" & n) ^ 2
'on incremente le nombre de valeurs
     nn = nn + 1
   End If
 Next n
 'S'il y a plus d'une valeur (pour eviter la division par 0
If nn > 1 Then
'on calcule l'ecart type ECARTTYPEP (voir l'aide de cette fonction)
 ec = ((nn * totx2 - totx ^ 2) / (nn ^ 2)) ^ 0.5
 'on ecrit la date en colonne 5 ,l'ecart en colonne 6
 Cells(ligne, 5) = coll(m)
 Cells(ligne, 6) = ec
 'on remet les variables de calcul a 0
 totx = 0
 totx2 = 0
 nn = 0
 'on incremente la ligne d'ecriture
 ligne = ligne + 1
End If
Next m
End Sub

N'hesite pas a revenir si quelque chose t'echappe encore
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…