IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Calcul des repos utilisateurs (interval)


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Juillet 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Juillet 2003
    Messages : 99
    Points : 70
    Points
    70
    Par défaut Calcul des repos utilisateurs (interval)
    Bonjour
    Avec Php, MySql
    Je souhaite faire une requête pour afficher les repos qui dépassent 30min.

    Ma table est la suivante :

    CREATE TABLE `actions` (
    `id` int(11) UNSIGNED NOT NULL,
    `userId` int(11) DEFAULT NULL,
    `date` int(11) DEFAULT NULL,
    `action` varchar(500) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Je souhaite afficher les résultats par jour :

    Nom : relance.png
Affichages : 119
Taille : 6,4 Ko

    Ma solution était de lister tous les enregistrements et boucler via PHP et comparer ... mais je suis sur et certain qu'on peux le faire via Mysql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from actions order by date, userId
    Voyez-vous de meilleures solutions ?

    Merci d'avance pour vos pistes.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 157
    Points : 8 335
    Points
    8 335
    Billets dans le blog
    17
    Par défaut
    Ce serait bien avec un extrait significatif de ta table et le résultat attendu en fonction.

    Dans tes actions je vois une colonne "date" codée un INT, c'est ça qui contient l'horodatage ? Il faudrait une colonne DATETIME.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 877
    Points
    1 877
    Par défaut
    Une piste: trier les données et utiliser le window functions telles que LAG.
    Puisque j'imagine que dans un premier temps, il faut calculer la différente entre deux datetimes.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 388
    Points : 19 119
    Points
    19 119
    Par défaut
    Salut à tous.

    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    --------------
    START TRANSACTION
    --------------
     
    --------------
    set session collation_connection = "utf8mb4_bin"
    --------------
     
    --------------
    set names "utf8mb4" collate "utf8mb4_bin"
    --------------
     
    --------------
    set names "utf8mb4"
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `utf8mb4`
            DEFAULT COLLATE       `utf8mb4_bin`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`       integer unsigned NOT NULL auto_increment PRIMARY KEY,
      `userid`   varchar(255)     NOT NULL,
      `arret`    datetime         NOT NULL,
      `relance`  datetime         NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8mb4` COLLATE=`utf8mb4_bin`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `test` (`userid`,`arret`,`relance`) VALUES
      ('UserOne','2023-04-05 09:10:00','2023-04-05 09:25:00'),
      ('UserOne','2023-04-05 11:10:00','2023-04-05 12:45:00'),
      ('UserOne','2023-04-05 16:00:00','2023-04-05 16:45:00'),
      ('UserTwo','2023-04-05 10:00:00','2023-04-05 10:15:00'),
      ('UserTwo','2023-04-05 12:30:00','2023-04-05 14:16:00')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+---------------------+---------------------+
    | id | userid  | arret               | relance             |
    +----+---------+---------------------+---------------------+
    |  1 | UserOne | 2023-04-05 09:10:00 | 2023-04-05 09:25:00 |
    |  2 | UserOne | 2023-04-05 11:10:00 | 2023-04-05 12:45:00 |
    |  3 | UserOne | 2023-04-05 16:00:00 | 2023-04-05 16:45:00 |
    |  4 | UserTwo | 2023-04-05 10:00:00 | 2023-04-05 10:15:00 |
    |  5 | UserTwo | 2023-04-05 12:30:00 | 2023-04-05 14:16:00 |
    +----+---------+---------------------+---------------------+
    --------------
    select `id`,`userid`
     from `test`
    where timestampdiff(minute,arret,relance) > 30
    --------------
     
    +----+---------+
    | id | userid  |
    +----+---------+
    |  2 | UserOne |
    |  3 | UserOne |
    |  5 | UserTwo |
    +----+---------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Juillet 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Juillet 2003
    Messages : 99
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    Merci infiniment pour vos réponses.

    la date est int() car c'est un Timestamp time() et pour les afficher j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id, FROM_UNIXTIME(date), userId, action, date FROM `actions`  
    ORDER BY `actions`.`userId`  DESC, `actions`.`date`  DESC
    ma table est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    CREATE TABLE `actions` (
      `id` int(11) UNSIGNED NOT NULL,
      `userId` int(11) DEFAULT NULL,
      `date` int(11) DEFAULT NULL,
      `action` varchar(500) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
     
    INSERT INTO `actions` (`id`, `userId`, `date`, `action`) VALUES
    (1, 45, 1681223015, 'edit'),
    (2, 55, 1681225805, 'edit'),
    (3, 55, 1681223685, 'edit'),
    (4, 55, 1681220885, 'add'),
    (5, 55, 1681215885, 'edit'),
    (6, 55, 1681223185, 'edit'),
    (7, 55, 1681221885, 'edit'),
    (8, 45, 1681225885, 'add'),
    (9, 55, 1681220885, 'delete'),
    (10, 55, 1681225085, 'add'),
    (11, 55, 1681223885, 'add'),
    (12, 55, 1681205885, 'edit'),
    (13, 55, 1681220189, 'edit'),
    (14, 55, 1681221885, 'edit'),
    (15, 55, 1681225885, 'add');
     
     
    ALTER TABLE `actions`
      ADD PRIMARY KEY (`id`);
     
     
    ALTER TABLE `actions`
      MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;COMMIT;
    le but est de trouver les pauses (30min sans action) de l'utilisateur. en vrai le champ action ne sera pas utilisé dans la requête, il faut juste la différence de 2 date successive.


    Nom : mysql.png
Affichages : 83
Taille : 121,6 Ko
    et résulat attendu est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    userId   		arret  					relance
    45				2023-04-11 16:23:35		2023-04-11 17:11:25
    55				2023-04-11 11:38:05		2023-04-11 14:24:45
    55				2023-04-11 14:24:45		2023-04-11 15:36:29
    55				2023-04-11 17:10:05		2023-04-11 17:11:25
    Merci encore.

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 388
    Points : 19 119
    Points
    19 119
    Par défaut
    Salut à tous.

    Il nous faut des explications clairs, un jeu d'essai représentatif de votre problème et le résultat attendu.
    Nous n'aurions pas perdu du temps à comprendre ce que vous cherchiez à faire si vous aviez respecté le fonctionnement du forum.

    Comme l'indique Séb., la colonne de nom "date" doit être du type "datetime", même si elle est au format unix.
    Sans cela, on ne peut pas faire des calculs sur ces dates.

    De plus, votre exemple est erroné !
    Pourquoi votre critère a changé et n'est plus de 30 minutes mais de 20 minutes ?

    Voici l'exemple correspondant à votre demande :
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    --------------
    START TRANSACTION
    --------------
    
    --------------
    set session collation_connection = "latin1_general_ci"
    --------------
    
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
    
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
    
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
    
    --------------
    CREATE TABLE `test`
    (  `id`      integer  unsigned NOT NULL primary key,
       `userid`  smallint unsigned NOT NULL,
       `date`    datetime          NOT NULL,
       `action`  char(06)          NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
    
    --------------
    insert into `test` (`id`,`userId`,`date`,`action`) VALUES
      ( 1,45,from_unixtime(1681223015),'edit'),( 2,55,from_unixtime(1681225805),'edit'),( 3,55,from_unixtime(1681223685),'edit'),
      ( 4,55,from_unixtime(1681220885),'add'), ( 5,55,from_unixtime(1681215885),'edit'),( 6,55,from_unixtime(1681223185),'edit'),
      ( 7,55,from_unixtime(1681221885),'edit'),( 8,45,from_unixtime(1681225885),'add'), ( 9,55,from_unixtime(1681220885),'delete'),
      (10,55,from_unixtime(1681225085),'add'), (11,55,from_unixtime(1681223885),'add'), (12,55,from_unixtime(1681205885),'edit'),
      (13,55,from_unixtime(1681220189),'edit'),(14,55,from_unixtime(1681221885),'edit'),(15,55,from_unixtime(1681225885),'add')
    --------------
    
    --------------
    select * from `test`
    --------------
    
    +----+--------+---------------------+--------+
    | id | userid | date                | action |
    +----+--------+---------------------+--------+
    |  1 |     45 | 2023-04-11 16:23:35 | edit   |
    |  2 |     55 | 2023-04-11 17:10:05 | edit   |
    |  3 |     55 | 2023-04-11 16:34:45 | edit   |
    |  4 |     55 | 2023-04-11 15:48:05 | add    |
    |  5 |     55 | 2023-04-11 14:24:45 | edit   |
    |  6 |     55 | 2023-04-11 16:26:25 | edit   |
    |  7 |     55 | 2023-04-11 16:04:45 | edit   |
    |  8 |     45 | 2023-04-11 17:11:25 | add    |
    |  9 |     55 | 2023-04-11 15:48:05 | delete |
    | 10 |     55 | 2023-04-11 16:58:05 | add    |
    | 11 |     55 | 2023-04-11 16:38:05 | add    |
    | 12 |     55 | 2023-04-11 11:38:05 | edit   |
    | 13 |     55 | 2023-04-11 15:36:29 | edit   |
    | 14 |     55 | 2023-04-11 16:04:45 | edit   |
    | 15 |     55 | 2023-04-11 17:11:25 | add    |
    +----+--------+---------------------+--------+
    --------------
    select   `userid`,
             `date` as arret,
             `val`  as relance,
             `duree`
    
        from (      select `id`,
                           `userid`,
                           `date`,
                           @val:=if(`userid`=@prev, @val, NULL) as val,
                           timestampdiff(minute,`date`,@val) as duree,
                           @val:=`date`,
                           @prev:=`userid`
    
                      from `test`
                cross join ( SELECT @val:=NULL,@prev=NULL) as x
                  order by `userid` desc, `date` desc
             ) as x
    
       where `duree` >= 20
    order by `userid`, `date`
    --------------
    
    +--------+---------------------+---------------------+-------+
    | userid | arret               | relance             | duree |
    +--------+---------------------+---------------------+-------+
    |     45 | 2023-04-11 16:23:35 | 2023-04-11 17:11:25 |    47 |
    |     55 | 2023-04-11 11:38:05 | 2023-04-11 14:24:45 |   166 |
    |     55 | 2023-04-11 14:24:45 | 2023-04-11 15:36:29 |    71 |
    |     55 | 2023-04-11 16:04:45 | 2023-04-11 16:26:25 |    21 |
    |     55 | 2023-04-11 16:38:05 | 2023-04-11 16:58:05 |    20 |
    +--------+---------------------+---------------------+-------+
    --------------
    COMMIT
    --------------
    
    Appuyez sur une touche pour continuer...

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 157
    Points : 8 335
    Points
    8 335
    Billets dans le blog
    17
    Par défaut
    Plus bas ma solution avec CTE + Fonction d'analyse LAG() (MySQL 8)

    DDL + Data (je ne travaille ni avec des données temporelles codées en INT, et ni des colonnes nommées "date") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    set @@sql_mode = 'ANSI,TRADITIONAL';
     
    drop temporary table if exists actions;
     
    create temporary table actions (
      id int primary key,
      userId int,
      actionAt datetime,
      action tinytext
    );
     
    insert into actions (id, userId, actionAt, action)
    values
    (1, 45, from_unixtime(1681223015), 'edit'),
    (2, 55, from_unixtime(1681225805), 'edit'),
    (3, 55, from_unixtime(1681223685), 'edit'),
    (4, 55, from_unixtime(1681220885), 'add'),
    (5, 55, from_unixtime(1681215885), 'edit'),
    (6, 55, from_unixtime(1681223185), 'edit'),
    (7, 55, from_unixtime(1681221885), 'edit'),
    (8, 45, from_unixtime(1681225885), 'add'),
    (9, 55, from_unixtime(1681220885), 'delete'),
    (10, 55, from_unixtime(1681225085), 'add'),
    (11, 55, from_unixtime(1681223885), 'add'),
    (12, 55, from_unixtime(1681205885), 'edit'),
    (13, 55, from_unixtime(1681220189), 'edit'),
    (14, 55, from_unixtime(1681221885), 'edit'),
    (15, 55, from_unixtime(1681225885), 'add');
    Requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with dataset as (
    	select all 
    		userId as "ID utilisateur", 
    		lag(actionAt) over (partition by userId order by actionAt asc) as "Arrêt",
    		actionAt as "Relance",
    		timediff(actionAt, lag(actionAt) over (partition by userId order by actionAt asc)) as "Temps d'arrêt"
    	from actions
    )
    select all *
    from dataset 
    where "Temps d'arrêt" >= time'00:30:00';
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ID utilisateur  Arrêt                   Relance                 Temps d'arrêt
    45              2023-04-11 16:23:35     2023-04-11 17:11:25     00:47:50
    55              2023-04-11 11:38:05     2023-04-11 14:24:45     02:46:40
    55              2023-04-11 14:24:45     2023-04-11 15:36:29     01:11:44
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Juillet 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Juillet 2003
    Messages : 99
    Points : 70
    Points
    70
    Par défaut
    Merci infiniment Séb.

    Malheureusement je suis encore avec une ancienne version 5.0.12

    un équivalent de ta requête stp.

    Merci encore

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 388
    Points : 19 119
    Points
    19 119
    Par défaut
    Salut à tous.

    Autre solution :
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    --------------
    select     t1.`userid`,
               t1.`date`  as arret,
               t2.`date`  as relance,
               timestampdiff(minute,t1.`date`,t2.`date`) as duree
     
          from `test` as t1
    inner join `test` as t2
            on t2.`userid` = t1.`userid`
           and t2.`date` = ( select min(`date`)
                               from `test`
                              where `userid` = t1.`userid`
                                and `date`   > t1.`date`
                           )
        having duree > 30
      order by t1.`userid`, t1.`date`
    --------------
     
    +--------+---------------------+---------------------+-------+
    | userid | arret               | relance             | duree |
    +--------+---------------------+---------------------+-------+
    |     45 | 2023-04-11 16:23:35 | 2023-04-11 17:11:25 |    47 |
    |     55 | 2023-04-11 11:38:05 | 2023-04-11 14:24:45 |   166 |
    |     55 | 2023-04-11 14:24:45 | 2023-04-11 15:36:29 |    71 |
    +--------+---------------------+---------------------+-------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    Celle-ci est moins performante que ma précédente solution.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 157
    Points : 8 335
    Points
    8 335
    Billets dans le blog
    17
    Par défaut
    MySQL 5.0.12 date de 2005 et des exploits sont reportés, ce sera sans moi.

    Tu peux essayer la solution d'Artemus24.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  11. #11
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Juillet 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Juillet 2003
    Messages : 99
    Points : 70
    Points
    70
    Par défaut
    Merci infiniment Séb. pour les nouveaux projets je vais me mettre en version 8, il faut suivre
    Merci infiniment Artemus24. J'ai lancé la requête chez moi avec les mêmes données mais ça donne rien même avec durée > 2, je vais analyser le pourquoi.
    Merci encore à vous tous.


    Après analyse, c'est parce que mon champs est un entier et ta requête se base sur datetime.
    vous êtes les meilleurs.
    Merci encore et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2021, 08h33
  2. [XL-2010] Calcul des heures de repos entre deux horaires
    Par hboisteau dans le forum Excel
    Réponses: 6
    Dernier message: 01/11/2016, 18h25
  3. [XL-2003] Calcul des jours de repos
    Par guerrod dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/12/2012, 14h15
  4. calculer des variables données par l'utilisateur
    Par ditch935f dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2010, 13h31
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo