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

Macros et VBA Excel Discussion :

Recherche de la valeur MAX au format date avec inputBox pour définir une heure en variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Octobre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 6
    Par défaut Recherche de la valeur MAX au format date avec inputBox pour définir une heure en variable
    Bonjour,

    je viens de m'inscrire sur ce forum et je sollicite votre aide pour améliorer mon script.
    Mon projet est de savoir combien j'ai de personnes dans un bâtiment, on badge en entrant et sortant.
    Dans le script ci dessous, je log dans un fichier la valeur max d'entrée dans le bâtiment pour chaque personne.
    Ce que j'aimerai c est ajouté une inputBox où la je pourrai choisir l'heure à laquelle je souhaite connaître le nombre de personne dans le bâtiment
    au format hh:mm:ss avec masque de saisie pour éviter des anomalies et si la personne entre par exemple

    "10:" pour 10h ca ajoute des 0 pour les minutes et secondes.

    Aujourd'hui mon script est : (çà fonctionne mais pas d'heure max en variable, la recherche se fait sur toute ma liste....)

    Merci d'avance

    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
    36
    37
    Sub Badge_IN()
    'suppression des alertes
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    'declaration des variables
    Dim test1 As String
    Dim Der1 As Long
    Dim der2 As Long
    Dim Derlig As Long
     
    'Nombre de lignes totales des onglets Badge et Vendredi
    Der1 = Worksheets("Badge").Range("A2").End(xlDown).Row
    der2 = Worksheets("vendredi").Range("A2").End(xlDown).Row
     
    For i = 2 To Der1
    'nettoyage fichier Temporaire
    Worksheets("TEMP").Range("A1:C5000").ClearContents
    Worksheets("vendredi").Cells(1, "C").EntireRow.Copy Destination:=Worksheets("TEMP").Range("A1")
    'Recherche pour chaque badge
    test1 = Worksheets("badge").Cells(i, "A").Value
    For j = 2 To der2
    'si le badge est trouver dans la feuille vendredi et la valeur est "IN" alors copie des cellules dans TEMP
    If Worksheets("vendredi").Cells(j, "C").Value = test1 And Worksheets("vendredi").Cells(j, "B").Value = "IN" Then
    Worksheets("TEMP").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = Worksheets("vendredi").Cells(j, "A").Value
    Worksheets("TEMP").Range("B" & Rows.Count).End(xlUp).Offset(1).Value = Worksheets("vendredi").Cells(j, "B").Value
    Worksheets("TEMP").Range("C" & Rows.Count).End(xlUp).Offset(1).Value = Worksheets("vendredi").Cells(j, "C").Value
    End If
    Next j
    Derlig = Worksheets("TEMP").Range("A2").End(xlDown).Row
    'Valeur max pour chaque badge dans colonne K
    Sheets("badge").Range("K" & i).Value = Format(Application.Max(Sheets("TEMP").Range("A2:A" & Derlig)), "hh:mm:ss")
    Next i
     
    'retour des alertes
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub
    Je débute en VBA

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    A mon avis, ce que tu veux faire n'a pas besoin de VBA.
    Je pense qu'il est possible de le faire avec de simples fonctions NB.SI.ENS().
    Le plus visuel serait même de faire un graphe indiquant l'évolution sur la journée du nombre de personnes présentes.

    Mais pour en dire plus, il faudrait que tu présentes une copie d'écran de tes données pour savoir comment elles sont organisées.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Octobre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 6
    Par défaut
    Pas besoin d 'impression d'écran, c'est simple

    J'ai 3 colonnes:

    colonne A: heure de passage du badge au format "dd/mm/yyyy hh:mm:ss"
    colonne B: valeurs IN ou OUT
    colonne C: ID du badge

    Merci d'avance et tu as raison le but dans un second temps est d'avoir un graphique avec vue par mois, semaine, jour du nombre de personnes simultanées dans le bâtiment et le nombre de personnes ayant accéder au moins une fois au bâtiment

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pas besoin d 'impression d'écran, c'est simple
    Si tu le dis

    En supposant qu'au début des relevés le bâtiment était vide.

    Deux solutions :

    Tu mets en D1 la formule : =NB.SI(B$1:B1;"IN")-NB.SI(B$1:B1;"OUT")Tu copies D1 vers le bas autant que nécessaire.
    Ainsi, tu as le nombre de personnes dans le bâtiment à tout instant.
    Pour connaitre ce nombre à une date précise, il te suffit d'utiliser une fonction RECHERCHEV() pour trouver la date dans la liste et renvoyer la valeur de la colonne D correspondante. Un conseil : mets le quatrième paramètre de cette fonction à VRAI.

    Autre solution :
    En supposant que la date choisie est en D1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(A:A;"<"&D1;B:B;"IN")-NB.SI.ENS(A:A;"<"&D1;B:B;"OUT")

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Octobre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 6
    Par défaut
    J'ai mis une copie de mon fichier avec ma macro car la je ne vois pas comment utiliser la formule dans mon cas
    Mais merci pour ton retour Menhir
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ouvre pas les fichiers joints.

Discussions similaires

  1. Problème format Date avec VS2003
    Par vaohdan dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/05/2007, 12h06
  2. [Format] date avec millisecondes
    Par kgb1917 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/03/2007, 15h00
  3. [Dates] Format date avec timestamp
    Par otagun dans le forum Langage
    Réponses: 11
    Dernier message: 27/05/2006, 15h16
  4. Format date avec Mysql
    Par debutantjak dans le forum JDBC
    Réponses: 1
    Dernier message: 10/05/2006, 16h36
  5. [VB6]Aide pour mettre format date avec inputbox
    Par Geliwy77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/01/2006, 20h13

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