• Initiateur de la discussion Initiateur de la discussion laurent67
  • Date de début Date de début

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 !

L

laurent67

Guest
bonjour et bonne année a tous

mon petit probleme est que j'ai un tableau avec 1050 ligne qui sont repeter 10 fois en fonction de dix capteur different donc en tout 10500 ligne ce que je voudrais c'est faire une moyenne tous les 20 ou 25 valeurs

c'est a dire renplacer les 20 ou 25 ligne par 1 valeur mais il faut la suprimer car le but est d'avoir moins de ligne

merci d'avance laurent
 
Bonsoir

Une première approche, très vite fait:

Public Sub vev()
Dim dataheure As New Collection
Dim item
Dim c As Range
Dim i As Integer
Dim cumul As Long
Dim nombre As Long

On Error Resume Next
For Each c In Range("c2:c1055")
dataheure.Add Left(c.Text, 2), Left(c.Text, 2)
Next c

i = 1
For Each item In dataheure
For Each c In Range("c2:c1055")
If Left(c.Text, 2) = item Then
cumul = cumul + c.Offset(0, 2).Value
nombre = nombre + 1
End If
Next c

Range("j" & i).Value = item
Range("k" & i).Value = cumul / nombre
i = i + 1
cumul = 0
nombre = 0
Next item
End Sub

ceci, copie dans la colonne J l'heure et dans la colonne K la moyenne

Tu peut renvoyer ces infos vers une autre feuille.

Est-ceci que tu désirais ?

Salut
Hervé
 
re

oups

remplace :

Dim cumul As Long
Dim nombre As Long

par :

Dim cumul As Single
Dim nombre As Single

Hervé tu copiras 100 fois : Tu dois saisir tes déclarations de variables dans la macro et non dans le post, même si posthit est génial, il corrige pas encore tes bêtises.

Désolé

Salut
Hervé
 
Salut "laurent67"
bonjour à toutes et à tous
avec l'aide de notre maitre en Tableau ,(il n'est pas peintre)j'ai réalisé cette procèdure qui peut sûrement être Modifiée
merci donc Didier (myDearFriend)
A+++
Jean Marie
 

Pièces jointes

Bonjour chti, laurent et didier dans l'ombre

Une autre approche par une double collection dictionary, inutile car je pense que laurent à trouver son bonheur, mais le boulot étant fait...


Public Sub vev2()
Dim valeur As Scripting.Dictionary
Dim nombre As Scripting.Dictionary
Dim i As Byte
Dim j As Integer
Dim n As Integer
Dim c As Range

Set valeur = New Scripting.Dictionary
Set nombre = New Scripting.Dictionary
j = 1
n = 1

For Each c In Range("c2:c1055")
On Error GoTo suite:
valeur.Add Left(c.Text, 2), c.Offset(0, 2).Value
Next c

For Each c In Range("c2:c1055")
On Error GoTo suite2:
nombre.Add Left(c.Text, 2), n
Next c

For i = 0 To valeur.Count - 1
Range("j" & j).Value = valeur.keys(i)
Range("k" & j).Value = valeur.Items(i)
Range("l" & j).Value = nombre.Items(i)
Range("m" & j).Value = valeur.Items(i) / nombre.Items(i)
j = j + 1
Next i



Exit Sub
suite:
valeur.item((Left(c.Text, 2))) = valeur.item((Left(c.Text, 2))) + c.Offset(0, 2).Value
Resume Next

suite2:
nombre.item((Left(c.Text, 2))) = nombre.item((Left(c.Text, 2))) + 1
Resume Next
End Sub


Jean- marie nos résultat différent : pour la plage horaire 5 : tu ne trouves que 2 valeurs pour un total de 45 au lieu de 3 valeurs pour un total de 67.5.

Je n'ai pas cherché a comprendre le pourquoi du comment .

Salut
Hervé
 
SALUT "Hervé"
oui j'ai constaté celà et quand tu clics sur la troisieme cellule elle T'affiche "6"
surement un arrondi car il y à des dixieme 7 je crois, d'ou la prise en compte de cette Troisieme cellule en catégorie 6
je vais copier ton code c'est super d'avoir autant de grain à moudre
Merci à toi et bonne continuation
A+++
Jean Marie
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour