inputbox de récupération de date et affichage

  • Initiateur de la discussion Initiateur de la discussion jopont
  • 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 !

jopont

XLDnaute Impliqué
Bonjour,

dans le fichier ci-joint, j'aimerais que l'utilisateur puisse entrer un date et une période jour ou nuit via un inputbox.
Suite à la saisie j'aimerais afficher le noms des personnes qui travaillent de jour et de nuit.

merci
 

Pièces jointes

Re : inputbox de récupération de date et affichage

Bonjour,

Un Essai :

Code:
Option Explicit
Private Sub Workbook_Open()
Dim Colonne As Long, k As Long
Dim Dte As String, JJ As String, Nom As String
Dte = InputBox("Entrer une date: (jj/mm/aaaa ou jj/mm/aa)", "Choix Date")
If IsDate(Dte) Then
  JJ = InputBox("Entrer une période de travail: (jour ou nuit)", "Choix Période")
    If UCase(JJ) <> "" Then
      Select Case UCase(JJ)
        Case Is = "JOUR"
          Colonne = Day(Dte) * 2 + 1
        Case Is = "NUIT"
          Colonne = Day(Dte) * 2 + 2
      End Select
        If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" Then
            For k = 3 To 10
              If Cells(k, Colonne) <> "" Then Nom = Nom & Cells(k, 2) & Chr(10)
            Next
        Else
            MsgBox "Personne"
            Exit Sub
        End If
      MsgBox "Le " & Dte & " : " & Chr(10) & Chr(10) & Nom & Chr(10) & "travaille (ent) de " & JJ
    End If
End If
End Sub

A+
 

Pièces jointes

Re : inputbox de récupération de date et affichage

Désolé, j'ai oublié un paramètre.
Il faut dans la boucle de la colonne prendre en compte uniquement le personnel avec des "T" des "TJ" des "TN" des "C" des "CJ" et des "CN"

c'est la que ça se passe à priori :

If Cells(k, Colo) <> "" Then Nom = Nom & Cells(k, 2) & Chr(10)


comment dire If Cells(k, Colo) <> "T" ou "TJ" ou "TN" ............Then Nom = Nom & Cells(k, 2) & Chr(10)
merci
 
Re : inputbox de récupération de date et affichage

Re,

J'ai rajouté un paramètre ; journee

A tester:

Code:
Option Explicit
Private Sub Workbook_Open()
Dim Colonne As Long, k As Long
Dim Dte As String, JJ As String, Nom As String
Dim Tjour As String, Tnuit As String
Dte = InputBox("Entrer une date: (jj/mm/aaaa ou jj/mm/aa)", "Choix Date")
If IsDate(Dte) Then
  JJ = InputBox("Entrer une période de travail: (jour ou nuit ou journee)", "Choix Période")
    If UCase(JJ) <> "" Then
      Select Case UCase(JJ)
        Case Is = "JOUR"
          Colonne = Day(Dte) * 2 + 1
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then Nom = Nom & Cells(k, 2) & Chr(10)
                Next
                MsgBox "Le " & Dte & " : " & Chr(10) & Chr(10) & Nom & "travaille (ent) de " & JJ
                Exit Sub
          Else
                MsgBox "Personne"
                Exit Sub
          End If
        Case Is = "NUIT"
          Colonne = Day(Dte) * 2 + 2
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then Nom = Nom & Cells(k, 2) & Chr(10)
                Next
                MsgBox "Le " & Dte & " : " & Chr(10) & Chr(10) & Nom & "travaille (ent) de " & JJ
                Exit Sub
          Else
                MsgBox "Personne"
                Exit Sub
          End If
        Case Is = "JOURNEE"
          Colonne = Day(Dte) * 2 + 1
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" _
             Or Sheets(MonthName(Month(Date))).Cells(11, Colonne + 1).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then
                    Tjour = Tjour & Cells(k, 2) & ","
                  End If
                  If Cells(k, Colonne + 1) <> "" Then
                    Tnuit = Tnuit & Cells(k, 2) & ","
                  End If
                Next
                    If Tjour <> "" And Tnuit <> "" Then
                        MsgBox "Le " & Dte & " : " & vbCrLf & vbCrLf & Tjour & vbCrLf & "travaille (ent) de jour." & vbCrLf & vbCrLf & Tnuit & vbCrLf & "travaille (ent) de nuit."
                        Exit Sub
                    ElseIf Tjour <> "" And Tnuit = "" Then
                        MsgBox "Le " & Dte & " : " & vbCrLf & vbCrLf & Tjour & vbCrLf & "travaille (ent) de jour."
                        Exit Sub
                    Else
                        MsgBox "Le " & Dte & " : " & vbCrLf & vbCrLf & Tnuit & vbCrLf & "travaille (ent) de nuit."
                        Exit Sub
                    End If
          Else
                MsgBox "Personne"
                Exit Sub
          End If
      End Select
    End If
End If
End Sub

Je viens de voir ton nouveau message, ca va commencer à ce compliquer sérieusement 😕

a+
 
Re : inputbox de récupération de date et affichage

Merci.
Par rapport à mon nouveau message est-il possible de demander à l'utilisateur ce qu'il veut voir afficher.

C'est à dire qu'il choisissent les personnes en T et/ou TJ et/ou TN ....
 
Re : inputbox de récupération de date et affichage

Re,

Pour ta première question fait comme ceci :

Code:
If Cells(k, Colonne) = "T" or Cells(k, Colonne) = "TJ" .... Then Nom = Nom & Cells(k, 2) & Chr(10)

A faire pour chaque cas.

Maintenant pour ta deuxième question, là je pense qu'il faille passer par un Userform.

A+
 
Re : inputbox de récupération de date et affichage

Re,

Avant de partir teste ceci:

Code:
Option Explicit
Private Sub Workbook_Open()
Dim Colonne As Long, k As Long, Cpt As Long
Dim Dte As String, JJ As String, Nom As String
Dim Tjour As String, Tnuit As String
Dte = InputBox("Entrer une date: (jj/mm/aaaa ou jj/mm/aa)", "Choix Date")
If IsDate(Dte) Then
  JJ = InputBox("Entrer une période de travail: (jour ou nuit ou journee)", "Choix Période")
    If UCase(JJ) <> "" Then
      Select Case UCase(JJ)
        Case Is = "JOUR"
          Colonne = Day(Dte) * 2 + 1
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then
                    Nom = Nom & Cells(k, 2) & Chr(10)
                    Cpt = Cpt + 1
                  End If
                Next
                MsgBox "Le " & Dte & " : il y a " & Cpt & " personne(s) qui travaille (ent) de " & JJ & Chr(10) & Nom
                Exit Sub
          Else
                MsgBox "Personne"
                Exit Sub
          End If
        Case Is = "NUIT"
          Colonne = Day(Dte) * 2 + 2
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then
                    Nom = Nom & Cells(k, 2) & Chr(10)
                    Cpt = Cpt + 1
                  End If
                Next
                MsgBox "Le " & Dte & " : il y a " & Cpt & " personne(s) qui travaille (ent) de " & JJ & Chr(10) & Nom
                Exit Sub
          Else
                MsgBox "Personne"
                Exit Sub
          End If
        Case Is = "JOURNEE"
          Colonne = Day(Dte) * 2 + 1
          If Sheets(MonthName(Month(Date))).Cells(11, Colonne).Value <> "0" _
             Or Sheets(MonthName(Month(Date))).Cells(11, Colonne + 1).Value <> "0" Then
                For k = 3 To 10
                  If Cells(k, Colonne) <> "" Then
                    Tjour = Tjour & Cells(k, 2) & ","
                    Cpt = Cpt + 1
                  End If
                  If Cells(k, Colonne + 1) <> "" Then
                    Tnuit = Tnuit & Cells(k, 2) & ","
                    Cpt = Cpt + 1
                  End If
                Next
                    If Tjour <> "" And Tnuit <> "" Then
                        MsgBox "Le " & Dte & " : il y a " & Cpt & " personne(s) qui travaille (ent)" & vbCrLf & _
                        Tnuit & " la nuit" & vbCrLf & Tjour & " le jour"
                        Exit Sub
                    ElseIf Tjour <> "" And Tnuit = "" Then
                        MsgBox "Le " & Dte & " : il y a " & Cpt & " personne(s) qui travaille (ent) de jour." & vbCrLf & Tjour
                        Exit Sub
                    Else
                        MsgBox "Le " & Dte & " : il y a " & Cpt & " personne(s) qui travaille (ent) de nuit" & vbCrLf & Tnuit
                        Exit Sub
                    End If
          Else
                MsgBox "Personne"
                Exit Sub
          End If
      End Select
    End If
End If
End Sub

Bonne soirée
 
Re : inputbox de récupération de date et affichage

Bonjour,

Voici un exemple avec un Userform.

Tu sélectionnes le jour (01,02,03 .....) et la date complète s'affiche, ensuite dans le ComboBox tu choisis l'item que tu veux et cela te met les résultats dans les TextBox si il y en a, sinon un message apparait.

Bonne journée
 

Pièces jointes

Re : inputbox de récupération de date et affichage

Bonsoir,

Pour importer le Userform et le module de classe dans ton fichier procède comme ceci:

-Crée un dossier sur le bureau par exemple
-Ouvre mon fichier et ouvre VBA (Alt + F11)
-Dans le projet VBAProject click droit sur Userform1 puis Exporter un fichier
-Sélectionne le dossier sur le bureau et Enregistre
-Fait la même chose pour le module de classe, (click droit sur LblDate)

Dans le dossier sur le bureau tu as 3 fichiers UserForm1.frm, Userform1.frx et LblDate.cls
Tu peux fermer le fichier.

-Ouvre ton fichier et VBA
-Dans le menu Fichier sélectionne Importer un fichier puis recherche le dossier sur le bureau.
-Pour le Userform1 sélectionne le fichier Usrform1.frm et click sur Ouvrir.
-Recommence la même chose pour le module de classe en sélectionnant le fichier LblDate.cls

Si tout c'est bien passé, tu as le userform1 et le module de classe dans ton fichier.

Il reste encore à Copier/Coller le code du ThisWorkbook dans ton fichier.

Code:
Private Sub Workbook_Open()
  Sheets(MonthName(Month(Date))).Activate
  UserForm1.Show
End Sub
A+
 
- 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

Discussions similaires

Réponses
18
Affichages
731
Réponses
5
Affichages
232
Réponses
6
Affichages
645
Retour