Automatisation moyenne entre 2 cellules

lulu31

XLDnaute Nouveau
Bonjour à tous,

Je suis débutante en Excel je connais que quelque fonction. j'essaye de faire une moyenne entre 2 cellules afin de compléter les cellules vides. mais je cherche a automatiser ca car le nombre de cellule vide n'est pas toujours identique.

Je vous expose le problème:

  • Des dates en A
  • L'heure de début de tranche en C
  • L'heure de fin de tranche en D
  • Un relevé de compteur qui n'est pas renseigné pour toute les tranches horaires en H et qui repart à 0 à lorsqu'il atteint 9999
  • Un trafic correspondant a un nombre de personnes ayant déclenché le compteur

Pour chacune des dates de mon fichier je voudrais compléter la colonne H avec la moyenne entre 2 tranches compléter. (Voir exemple colonne K) Mais rentrer les formules a la main en comptant le nombre de cellules vide pour faire la moyenne c'est très long et surtout que j'aie quelques lignes !!
Donc je voudrais savoir si il y a une méthode pour le faire automatiquement ou presque. J'ai vu en cherchant sur internet qu'il existait VBA mais je ne sais pas du tout programmer.

Je vous joint le fichier afin de mieux comprendre.

Merci pour votre aide :)
 

Pièces jointes

  • Trafic.xlsx
    85.6 KB · Affichages: 49
  • Trafic.xlsx
    85.6 KB · Affichages: 52
  • Trafic.xlsx
    85.6 KB · Affichages: 50

lulu31

XLDnaute Nouveau
Re : Automatisation moyenne entre 2 cellules

Ah non 'est juste un exemple mais ca peux être autre chose, mais effectivement ca induit en erreur car ca fait une moyenne égale de la 1ere tranche a la dernière on peut mettre 699 a la place c'est plus représentatif du résultat que je veux obtenir.
 

Dranreb

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Bonjour.
Je me suis permis de changer un peu la formule pour rendre les écarts entiers mieux répartis. J'espère que ça ne vous ennuie pas.
Mais je n'ai pas fait que cela…:rolleyes:
 

Pièces jointes

  • ValIntermLulu.xls
    261.5 KB · Affichages: 27

CISCO

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Bonjour

Une première possibilité en pièce jointe, avec une formule matricielle à valider avec Ctrl+maj+entrée.

La difficulté n'est pas de trouver le dernier nombre précédent la ligne actuelle (556 dans le fichier exemple), ou sa position, dans la colonne H, mais le suivant (691 dans le fichier exemple).

Cette formule est valable pour un fichier ne comprenant pas plus de 1000 lignes. Si ton fichier en a plus, il faut remplacer les 1000 dans la formules par un nombre plus grand.

@ plus
 

Pièces jointes

  • Trafic.xlsx
    94.2 KB · Affichages: 32
  • Trafic.xlsx
    94.2 KB · Affichages: 38
  • Trafic.xlsx
    94.2 KB · Affichages: 30

lulu31

XLDnaute Nouveau
Re : Automatisation moyenne entre 2 cellules

Merci beaucoup Dranreb !
Je risquais pas de savoir faire le code VBA :/
Peux-tu me dire comment modifier ton code pour rajouter un modulo 10000 car des fois le compteur peut passer de 8442 à 1300 comme pour les lignes 145 à 157 et donc repartir de 0 une fois atteint 9999
Merci vraiment !
Si c'est mieux répartie tant mieux :)
 

Dranreb

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Comme ça:
VB:
If LDéb > 0 And LFin >= LDéb Then Application.Range(Me.Cells(LDéb, "K"), Me.Cells(LFin, "K")).FormulaR1C1 = "=ROUND(R" _
      & LDéb - 1 & "C+ROWS(R" & LDéb & "C:RC)*MOD(R" & LFin + 1 & "C-R" & LDéb - 1 & "C,10000)/" & LFin - LDéb + 2 & ",0)"
 

Dranreb

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Curieux: j'ai fait un édit de mon dernier message, et il s'était retrouvé dupliqué après que vous eussiez envoyé une réponse entre temps.
Ce n'était pas à ajouter devant, c'était une instruction à remplacer. Mais ce n'était pas bon: c'est un petit peu plus compliqué et les différences aussi doivent être modulo 10000. Voici toute la procédure alors, les lignes avec "Application" étant rectifiées de surcroit:
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zon As Range, LDéb As Long, LFin As Long
If Target.Column <> 11 Then Exit Sub
With Application: .EnableEvents = False: .Calculation = xlCalculationManual: .ScreenUpdating = False: End With
On Error Resume Next
For Each Zon In Me.Columns("K").SpecialCells(xlCellTypeConstants, 1)
   LFin = Zon.Row - 1
   If LDéb > 0 And LFin >= LDéb Then Application.Range(Me.Cells(LDéb, "K"), Me.Cells(LFin, "K")).FormulaR1C1 = "=MOD(ROUND(R" _
      & LDéb - 1 & "C+ROWS(R" & LDéb & "C:RC)*MOD(R" & LFin + 1 & "C-R" & LDéb - 1 & "C,10000)/" & LFin - LDéb + 2 & ",0),10000)"
   LDéb = Zon.Row + Zon.Rows.Count: Next Zon
Me.[L3].Resize(LDéb - 3).FormulaR1C1 = "=MOD(RC[-1]-OFFSET(RC[-1],-1,0),10000)"
Application.EnableEvents = True: Application.Calculation = xlCalculationAutomatic
End Sub
 
Dernière édition:

lulu31

XLDnaute Nouveau
Re : Automatisation moyenne entre 2 cellules

La nouvelle macro va dans l'autre sens quand elle passe de 8422 à 1300 c'est a dire elle fait 8422 - 7829 - 7235 - ... - 1300
Alors qu'elle devrais allez jusqu'à 9999 puis repartir a 0 pour ensuite allez jusqu'à 1300
 

Dranreb

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Je n'ai pas eu ce phénomène. sur un exemple de 9 lignes après 8422 j'ai:
8742320
9062320
9381319
9701320
21320
341320
660319
980320
1300320
Si le compteur ne fait pas plusieurs tours de cadrans de 10000 et s'il n'y a pas de valeur imposées erronées entre les deux, re-joignez le classeur (en .xls s.v.p.) que je voie ce qui cloche.
 

Dranreb

XLDnaute Barbatruc
Re : Automatisation moyenne entre 2 cellules

Vous avez simplement mis le dernier code dans un nouveau module ordinaire (rubrique "Modules") nommé "Module1", où il n'a strictement aucun effet, au lieu de remplacer le code du module de feuille "Feui1 (Feuil1)", rubrique "Microsoft Excel Objets" dans l'explorateur de projets.
Vous pouvez aussi dans Excel faire un clic droit sur l'onglet et demander à en modifier le code.
À +
 
Dernière édition:

lulu31

XLDnaute Nouveau
Re : Automatisation moyenne entre 2 cellules

Je ne suis pas douée quand même...

Bon cette fois-ci, ca fonctionne très bien je vous en remercie grandement pour le temps que vous m'avez consacré et la rapidité de vos réponses.

Cordialement,
 

Discussions similaires

Réponses
11
Affichages
432
Réponses
15
Affichages
513

Statistiques des forums

Discussions
312 434
Messages
2 088 380
Membres
103 838
dernier inscrit
noureddine