Tableau aleatoire automatique

Bonjour à tous

On me demande un tableau qui doit être établi sur 3 colonnes

date - temp matin - temp soir

ce tableau doit se remplir tout seul chaque jour, la date doit être celle du jour et les deux autres colonnes remplies de façon aléatoire d'un chiffre compris entre 1 et 16.

Au delà de la fonction "alea entre bornes" mon tableau est un peu plus compliqué. disons que temp matin doit s'inscrire vers 9h le matin et temp soir 18h. si le tableau est ouvert à 11h (par exemple) seule temp matin doit s'afficher.

je suppose qu'il faut ici une macro et là je ne sais pas faire

Est ce que cela est réalisable ? pouvez vous m'aider ?

merci par avance

Bonjour,

Pour le moment, je t'ai pondu ça :

10suivitemps.xlsm (24.92 Ko)

bonjour

je vous remercie de la réponse cela se rapproche bien de mes besoins.

il faudrait que le tableau s'actualise tout seul à l'ouverture du fichier

et surtout que la colonne SOIR se remplisse vers 17 ou 18h

merci beaucoup en tout cas

sasha

Je n'ai certainement pas fait assez de tests, mais ce classeur devrait convenir.

Enjoy!

8suivitemps.xlsm (39.09 Ko)

Salut sasha,

Salut Oxydum,

Questions :

  • un relevé de T° aléatoire ? Sans indiscrétion, utilité de ce truc ? Réponse optionnelle !
  • pour la T° du matin, j'ai volontairement restreint de 1° à 10° : OK ? Réponse obligatoire !
  • la T° du soir est calculée entre la T° du matin +1 et 16 : OK ? Idem...
Private Sub Workbook_Open()
'
Dim iRow%, iOK%
'
With Worksheets("Températures")
    iRow = IIf(.Range("A3").Value = "", 3, .Range("A" & Rows.Count).End(xlUp).Row)
    If CDate(.Range("A" & iRow).Value) < Date Then
        If .Range("A" & iRow).Value <> "" Then iRow = iRow + 1
        .Range("A" & iRow).Value = Date
    End If
    If Hour(Now) > 8 And .Range("B" & iRow).Value = "" Then _
        iOK = 1:
        Randomize:
        .Range("B" & iRow).Value = WorksheetFunction.RandBetween(1, 10)
    If Hour(Now) > 17 And .Range("C" & iRow).Value = "" Then _
        iOK = 2:
        Randomize:
        .Range("C" & iRow).Value = WorksheetFunction.RandBetween(CInt(.Range("B" & iRow).Value) + 1, 16)
    If iOK < 2 Then Application.OnTime EarliestTime:=Now + TimeValue("00:01:00"), procedure:="Clock", schedule:=True
End With
'
End Sub

A+

11tempalea.xlsm (19.31 Ko)

Bonjour

Merci à tous pour vos idées et le travail réalisé.

Je vais tenter de mettre tout cela en pratique

la maîtrise de VBA est pour moi une histoire inachevée

j'ai voulu avancer de mon côté en realisant un tableau et des formules basées sur la date du jour pour remplir les cellules jour après jour, mais c'est très lourd et le résultat peu fiable

merci beaucoup

Bonjour,

Je continue de m'essouffler sur mon tableau avec remplissage automatique de certaines cellules en fonction du jour et de l'heure actuelle. Je n'arrive pas à progresser en VBA donc je suis partie sur des formules, mais je n'arrive pas rendre cet affichage automatique. Je fini par penser que peut être ce n'est pas possible

si quelqu'un peut se pencher un peu sur mon problème se serait très sympa.

merci

sasha

8exemple.xlsm (77.11 Ko)

Salut sasha,

va falloir plus d'explications!

Récapitulons :

  • ton fichier sera-t-il ouvert systématiquement ouvert tous les jours. Vu le contexte, oui, dirais-je...
  • dans le cas contraire, j'imagine qu'il faut compléter le tableau du mois selon la Source. Tu confirmes ??
  • elle est bizarre, ta Source...
* le tableau des T° en [C-D-E-F] ne suffit-il pas ? On connaît déjà les dates de chaque mois!

* [A2] ? Pourquoi pas "janvier" ?

* pourquoi les colonnes [Janvier] ne sont-elles pas accolées au reste de l'année ? Que se passe-t-il en février avec [C-D-E-F] : elles bougent après "février" ?

- cette Source subit-elle des changements de valeur ou est-elle fixe ?

Bref, explique en détail comment tu travailles actuellement en manuel, étape par étape et pourquoi!

Des explications simples mais complètes permettront de t'aider efficacement.

A+

bonsoir

ok je reprend votre message point par point et je tente de faire une réponse claire à chaque question

je reviens très vite

sasha

bon voilà j'ai essayé de répondre aux questions, si j'ai oublié des précisions faites moi savoir

1 Oui le fichier est ouvert chaque matin (s’il doit rester ouvert en onglet 24/24 cela peut se faire aussi.)

2 la source (je viens d’inverses les colonnes pour faire plus clair)

colonne C = heure mat colonne D temp matin

colonne E = heure soir colonne F temp soir

3 en fait j’ai lancé pour les heures et les temp une série en « aléa » puis j’ai recopié « les valeurs » pour les figer et supprimé les colonnes alea ( car les se recalculent tout le temps) pour faire simple je voulais garder ces bases (heures et temp) pour tous les mois. Bien sur l’idéal serait que chaque mois soit lié à 4 colonnes heures et mois remixées. Mais je galère tellement que j’y avais renoncé.

4 A2 oui je ne sais plus trop j’ai vraiment essayé de bosser seule et j’ai peut-être oublié des tentatives de tests.

5 la colonne janvier est placé en A sans obligation, elle peut effectivement venir se placer avant février – je corrige sur le tableau exemple

Ce tableau doit rester figé au fur et à mesure qu’il se remplit, il est susceptible d’être imprimé.

Ps : n’ayant pas forcément besoin des secondes j’ai également essayé de modifier la macro de l’horloge en mettant un format hh:mm dans les cellules contenant des heures, mais sans résultat.

J’ai aussi tenté de séparer date et heure du jour en ajoutant 2 colonnes et adapté la formule avec condition SI(ET … mais c’est pas bon

encore une fois merci pour l'aide apportée

11exemple.xlsm (77.28 Ko)

bonjour le forum

je continue d'essayer de trouver une solution mais rien n'avance.

Est ce que quelqu'un voudrait bien jeter un œil sur mon problème, à moins que ce que je cherche à faire ne soit pas réalisable...

merci pour votre aide

sasha

Salut Sasha,

je dois t'avouer que je t'avais complètement perdu de vue! Déso...

Je regarde ça pour me remémorer aujourd'hui PM.

A+

pas de souci, il y a tellement de post.....

merci beaucoup

Salut Sasha,

merci pour ta patience! Mieux vaut tard que jamais, dit-on...

Normalement, si tout se passe chez toi comme ici, tu devrais pouvoir te passer de ta feuille 'source'.

Autant rester discret, hmmm ?

En effet, les heures et les T° se calculeront seules sans support de ce tableau!

Si mon projet te convient, tu peux la supprimer sans attendre : plus besoin!

Les dates également s'inscriront seules : tu peux effacer les formules!

Private Sub Workbook_Open()
'
Dim iRow%
'
With Sheets(Choose(Month(Now), "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre"))
    Randomize
    iRow = Day(Date) + 2
    If .Range("B" & iRow).Value = "" Then .Range("B" & iRow).Value = Date
    If Time > TimeValue("08:30:00") And .Range("C" & iRow).Value = "" Then _
        .Range("C" & iRow).Value = Format(TimeValue("08:" & Format(WorksheetFunction.RandBetween(32, 58), "00") & ":00"), "h:mm"): _
        .Range("D" & iRow).Value = WorksheetFunction.RandBetween(1, 7)
    If Time > TimeValue("18:00:00") And .Range("E" & iRow).Value = "" Then _
        .Range("E" & iRow).Value = Format(TimeValue("18:" & Format(WorksheetFunction.RandBetween(2, 28), "00") & ":00"), "h:mm"): _
        .Range("F" & iRow).Value = WorksheetFunction.RandBetween(1, 7)
    If .Range("E" & iRow).Value = "" Then Application.OnTime EarliestTime:=Now + TimeValue("00:30:00"), procedure:="Clock", schedule:=True
End With
'
End Sub

A+

6sashabis.xlsm (77.75 Ko)

hello !!

c'est super ce boulot, sauf que j'ai une petite fenêtre de débogage à l'ouverture et il faudrait que les jours précédents "aujourd'hui", restent enregistrés, est ce que c'est possible ??

merci

sasha

Salut Sasha,

"débogage", "ouverture" ?

J'ai omis de te dire que, si tu supprimes 'source', il faut effectivement d'abord "fixer" les valeurs précédentes en les retapant en "dur" sans quoi, les formulent, sans référence 'source', vont forcément provoquer une erreur...

C'est ça le problème ? Déso...

Heureusement que nous ne sommes qu'en janvier... pas beaucoup à retaper...

A+

eh oui,

j'ai figé tout supprimé "source" et ça roule

merci, merci pour ce travail c'est super

sasha

bonsoir Curulis

encore une question si le fichier n'est pas ouvert durant 2 jours WE par exemple ou autre, est ce que il est normal que les jours ne se remplissent pas ?

pour info pièce jointe

merci

sasha

5frigo.xlsm (50.91 Ko)

Salut sasha,

Ah, ça, tu m'avais bien dit que le programme était ouvert tous les jours, si je ne m'abuse !

Je vais arranger cela !

A+

Salut Sasha,

voilà ton fichier adapté.

A l'ouverture, la macro scanne les jours précédents et complète les jours vides de données.

Attention : il ne pourra remonter que jusqu'au 1er janvier de l'année en cours !

Si tu as des absences dans la charnière du nouvel an, étant donné que ce sont des fichiers différents (vraisemblablement...), tu devras vérifier toi-même... sauf à imaginer un fichier qui fabrique ses feuilles en toute autonomie !

Une autre histoire...

Public Sub TempFrigo()
'
Dim dDate As Date, iRow%
'
For x = 1 To DateDiff("d", DateSerial(Year(Date), 1, 1), Date)
    dDate = DateAdd("d", -x, Date)
    With Sheets(Choose(Month(dDate), "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre"))
        iRow = Day(dDate) + 2
        If .Range("B" & iRow).Value = "" Then
            .Range("B" & iRow).Value = dDate
        Else
            Exit For
        End If
        Randomize
        .Range("C" & iRow).Value = Format(TimeValue("08:" & Format(WorksheetFunction.RandBetween(32, 58), "00") & ":00"), "h:mm")
        .Range("D" & iRow).Value = WorksheetFunction.RandBetween(1, 7)
        .Range("E" & iRow).Value = Format(TimeValue("18:" & Format(WorksheetFunction.RandBetween(2, 28), "00") & ":00"), "h:mm")
        .Range("F" & iRow).Value = WorksheetFunction.RandBetween(1, 7)
    End With
Next
'
End Sub

A+

3frigo.xlsm (53.19 Ko)
Rechercher des sujets similaires à "tableau aleatoire automatique"