Microsoft 365 Inputbox et deux conditions

Roseline

XLDnaute Occasionnel
Bonjour,
Depuis plusieurs heures je cherche la solution à mon problème. Je pense que vous allez pouvoir m'aider.
J'ai un fichier avec plusieurs onglet. Dans mon onglet "Feuil2" c'est là qu'on retrouve l'information à mes listes déroulantes dans mes autres onglets.
Ce que je souhaite:
Dans mon onglet "Feuil1", je désire avoir l'option d'ajouter le nom d'un employé de jour ou de soir dans ma liste situé dans ma "Feuil2" sans être obligé d'ouvrir la Feuil2 à chaque fois. Je veux un inputbox qui me demande si cette personne est de jour ou de soir et tout dépend de la réponse qu'elle aille ajouter le nom de la personne sous la liste de jour ou celle de soir dans l'onglet "Feuil2;") sans oublier de mettre le tout par ordre alphabétique avec de revenir à mon onglet Feuil1. En cliquant sur ma cellule B2 par exemple je verrais le nom que je viens d'ajouter de jour et ainsi de suite.
Merci encore de votre aide
Bonne soirée à tous
 

Pièces jointes

  • Aide.xlsm
    24.4 KB · Affichages: 6

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Roseline :), @gbinforme ;),

Une autre manière de faire avec un userform. C'est plus sympa que des inputbox et guère plus compliqué à coder (selon moi).
Le code est dans le module de Userform1.

nota : on vérifie avant d'ajouter le nouvel équipier qu'il ne figure ni dans l'équipe de jour ni dans l'équipe de nuit (ça peut être modifié).

VB:
Private Sub CommandButton1_Click()
Dim n, col&
   ' vérif des saisies
   If Trim(TextBox1) = "" Then
      MsgBox "Il faut saisir le nom d'une personne", vbCritical: Exit Sub
   ElseIf OptionButton1 = False And OptionButton2 = False Then
      MsgBox "Il faut indiquer l'équipe (de jour ou du soir)", vbCritical: Exit Sub
   End If
   With Worksheets("Feuil2")
      ' vérif que le nom n'existe pas
      n = Application.Match(TextBox1, .Columns("a:a"), 0)
      If IsNumeric(n) Then MsgBox TextBox1 & " existe déjà dans l'équipe de jour !", vbCritical: Exit Sub
      n = Application.Match(TextBox1, .Columns("b:b"), 0)
      If IsNumeric(n) Then MsgBox TextBox1 & " existe déjà dans l'équipe de nuit !", vbCritical: Exit Sub
      ' ajout du nom et tri
      col = IIf(OptionButton1, 1, 2)
      n = .Cells(Rows.Count, col).End(xlUp).Row + 1
      .Cells(n, col) = Application.Proper(TextBox1)
      .Range(.Cells(2, col), .Cells(n, col)).Sort key1:=.Cells(2, col), order1:=xlAscending, MatchCase:=False, Header:=xlYes
      MsgBox Application.Proper(TextBox1) & " a été rajouté dans l'équipe de " & IIf(col = 1, "jour.", "soir."), vbInformation
      ' Raz du formulaire
      TextBox1 = "": OptionButton1 = False: OptionButton2 = False
   End With
End Sub

Private Sub CommandButton2_Click()
   Unload Me
End Sub
 

Pièces jointes

  • Roseline- ajout équipier- v1.xlsm
    29.3 KB · Affichages: 7
Dernière édition:

Roseline

XLDnaute Occasionnel
Bonsoir @Roseline :), @gbinforme ;),

Une autre manière de faire avec un userform. C'est plus sympa que des inputbox et guère plus compliqué à coder (selon moi).
Le code est dans le module de Userform1.

nota : on vérifie avant d'ajouter le nouvel équipier qu'il ne figure ni dans l'équipe de jour ni dans l'équipe de nuit (ça peut être modifié).

VB:
Private Sub CommandButton1_Click()
Dim n, col&
   ' vérif des saisies
   If Trim(TextBox1) = "" Then
      MsgBox "Il faut saisir le nom d'une personne", vbCritical: Exit Sub
   ElseIf OptionButton1 = False And OptionButton2 = False Then
      MsgBox "Il faut indiquer l'équipe (de jour ou du soir)", vbCritical: Exit Sub
   End If
   With Worksheets("Feuil2")
      ' vérif que le nom n'existe pas
      n = Application.Match(TextBox1, .Columns("a:a"), 0)
      If IsNumeric(n) Then MsgBox TextBox1 & " existe déjà dans l'équipe de jour !", vbCritical: Exit Sub
      n = Application.Match(TextBox1, .Columns("b:b"), 0)
      If IsNumeric(n) Then MsgBox TextBox1 & " existe déjà dans l'équipe de nuit !", vbCritical: Exit Sub
      ' ajout du nom et tri
      col = IIf(OptionButton1, 1, 2)
      n = .Cells(Rows.Count, col).End(xlUp).Row + 1
      .Cells(n, col) = Application.Proper(TextBox1)
      .Range(.Cells(2, col), .Cells(n, col)).Sort key1:=.Cells(2, col), order1:=xlAscending, MatchCase:=False, Header:=xlYes
      MsgBox Application.Proper(TextBox1) & " a été rajouté dans l'équipe de " & IIf(col = 1, "jour.", "soir."), vbInformation
      ' Raz du formulaire
      TextBox1 = "": OptionButton1 = False: OptionButton2 = False
   End With
End Sub

Private Sub CommandButton2_Click()
   Unload Me
End Sub
Bonjour mapomme,
Merci pour la solution proposée mais je préfèrerais ne pas passer par un Userform mais ta solution fonctionne vraiment bien.
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 175
Membres
112 677
dernier inscrit
Justine11