Bonjour à tous,
Cela fait quelques jours que je coince donc autant demander conseil : c'est pourquoi je viens de m'inscrire sur votre site...
Avec un collègue, nous sommes en train de créer de toute pièce un fichier de pointage utilisable par une petite centaine d'employé sur notre réseau interne.
S'agissant d'un fichier à usage professionnel, je préfère d'abord tenter de vous expliquer sans envoyer de fichier joint.
Si cela est vraiment nécessaire, nous aviserons par la suite.
Dans ce tableau, nous avons inséré des Combo Box en cascade en colonne B, C et D. Ensuite, à partir de la Colonne H démarre une trentaine de colonnes qui forment un calendrier mensuel où chaque collaborateur ira encoder le nombre d'heures prestées.
En Colonne B, la Combo Box n°1 comprend les noms de services de notre entreprise (de construction pour info). Le choix du service donne accès, en colonne C, à certains noms de Chantiers dans la Combo Box 2. Enfin, le choix de ce chantier, donne l'accès, en Colonne D, à certaines tâches effectuées sur les-dits chantiers (Combo Box 3).
Cependant, certains chantiers n'ont aucune tâches spécifiques et donc il arrive que la Combo Box 3 soit vide.
Par contre, tant que les 3 Combo Box ne sont pas vides, nous aimerions imposer la sélection d'une donnée dans chacune d'elles avant que l'employé puisse insérer un nombre d'heures dans les colonnes du calendrier.
J'ai déjà trouvé une partie du code VBA à appliquer. Il bloque actuellement l'encodage tant que les cellules des colonnes B, C et D sont vides. Il me reste à insérer le critère qui dit que : si les combo box sont vides, il autorise l'encodage dans la case où il se trouve. Mais là, je bloque totalement !
J'ai déjà essayé avec If Combobox.listcount <> 0 then" ... mais cela ne marche pas. Pire ! Cela désactive même parfois les Combobox dans le tableau et je ne vois pas trop pourquoi d'ailleurs...
Bref, Voici le code que j'ai appliqué et que j'aimerais compléter suivant vos conseils :
Merci d'avance à tous pour votre aide.
Cela fait quelques jours que je coince donc autant demander conseil : c'est pourquoi je viens de m'inscrire sur votre site...
Avec un collègue, nous sommes en train de créer de toute pièce un fichier de pointage utilisable par une petite centaine d'employé sur notre réseau interne.
S'agissant d'un fichier à usage professionnel, je préfère d'abord tenter de vous expliquer sans envoyer de fichier joint.
Si cela est vraiment nécessaire, nous aviserons par la suite.
Dans ce tableau, nous avons inséré des Combo Box en cascade en colonne B, C et D. Ensuite, à partir de la Colonne H démarre une trentaine de colonnes qui forment un calendrier mensuel où chaque collaborateur ira encoder le nombre d'heures prestées.
En Colonne B, la Combo Box n°1 comprend les noms de services de notre entreprise (de construction pour info). Le choix du service donne accès, en colonne C, à certains noms de Chantiers dans la Combo Box 2. Enfin, le choix de ce chantier, donne l'accès, en Colonne D, à certaines tâches effectuées sur les-dits chantiers (Combo Box 3).
Cependant, certains chantiers n'ont aucune tâches spécifiques et donc il arrive que la Combo Box 3 soit vide.
Par contre, tant que les 3 Combo Box ne sont pas vides, nous aimerions imposer la sélection d'une donnée dans chacune d'elles avant que l'employé puisse insérer un nombre d'heures dans les colonnes du calendrier.
J'ai déjà trouvé une partie du code VBA à appliquer. Il bloque actuellement l'encodage tant que les cellules des colonnes B, C et D sont vides. Il me reste à insérer le critère qui dit que : si les combo box sont vides, il autorise l'encodage dans la case où il se trouve. Mais là, je bloque totalement !
J'ai déjà essayé avec If Combobox.listcount <> 0 then" ... mais cela ne marche pas. Pire ! Cela désactive même parfois les Combobox dans le tableau et je ne vois pas trop pourquoi d'ailleurs...
Bref, Voici le code que j'ai appliqué et que j'aimerais compléter suivant vos conseils :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
Application.EnableEvents = False
If Target.Offset(0, -6) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -6).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -5) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -5).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -4) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -4).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 9 Then
Application.EnableEvents = False
If Target.Offset(0, -7) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -7).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -6) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -6).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -5) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -5).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 10 Then
Application.EnableEvents = False
If Target.Offset(0, -8) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -8).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -7) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -7).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -6) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -6).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 11 Then
Application.EnableEvents = False
If Target.Offset(0, -9) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -9).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -8) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -8).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -7) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -7).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 12 Then
Application.EnableEvents = False
If Target.Offset(0, -10) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -10).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -9) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -9).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -8) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -8).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 13 Then
Application.EnableEvents = False
If Target.Offset(0, -11) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -11).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -10) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -10).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -9) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -9).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 14 Then
Application.EnableEvents = False
If Target.Offset(0, -12) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -12).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -11) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -11).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -10) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -10).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 15 Then
Application.EnableEvents = False
If Target.Offset(0, -13) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -13).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -12) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -12).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -11) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -11).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 16 Then
Application.EnableEvents = False
If Target.Offset(0, -14) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -14).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -13) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -13).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -12) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -12).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 17 Then
Application.EnableEvents = False
If Target.Offset(0, -15) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -15).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -14) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -14).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -13) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -13).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 18 Then
Application.EnableEvents = False
If Target.Offset(0, -16) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -16).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -15) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -15).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -14) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -14).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 19 Then
Application.EnableEvents = False
If Target.Offset(0, -17) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -17).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -16) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -16).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -15) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -15).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 20 Then
Application.EnableEvents = False
If Target.Offset(0, -18) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -18).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -17) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -17).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -16) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -16).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 21 Then
Application.EnableEvents = False
If Target.Offset(0, -19) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -19).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -18) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -18).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -17) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -17).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 22 Then
Application.EnableEvents = False
If Target.Offset(0, -20) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -20).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -19) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -19).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -18) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -18).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 23 Then
Application.EnableEvents = False
If Target.Offset(0, -21) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -21).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -20) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -20).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -19) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -19).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 24 Then
Application.EnableEvents = False
If Target.Offset(0, -22) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -22).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -21) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -21).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -20) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -20).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 25 Then
Application.EnableEvents = False
If Target.Offset(0, -23) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -23).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -22) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -22).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -21) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -21).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 26 Then
Application.EnableEvents = False
If Target.Offset(0, -24) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -24).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -23) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -23).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -22) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -22).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 27 Then
Application.EnableEvents = False
If Target.Offset(0, -25) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -25).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -24) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -24).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -23) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -23).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 28 Then
Application.EnableEvents = False
If Target.Offset(0, -26) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -26).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -25) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -25).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -24) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -24).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 29 Then
Application.EnableEvents = False
If Target.Offset(0, -27) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -27).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -26) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -26).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -25) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -25).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 30 Then
Application.EnableEvents = False
If Target.Offset(0, -28) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -28).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -27) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -27).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -26) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -26).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 31 Then
Application.EnableEvents = False
If Target.Offset(0, -29) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -29).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -28) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -28).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -27) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -27).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 32 Then
Application.EnableEvents = False
If Target.Offset(0, -30) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -30).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -29) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -29).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -28) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -28).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 33 Then
Application.EnableEvents = False
If Target.Offset(0, -31) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -31).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -30) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -30).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -29) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -29).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 34 Then
Application.EnableEvents = False
If Target.Offset(0, -32) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -32).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -31) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -31).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -30) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -30).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 35 Then
Application.EnableEvents = False
If Target.Offset(0, -33) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -33).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -32) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -32).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -31) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -31).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 36 Then
Application.EnableEvents = False
If Target.Offset(0, -34) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -34).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -33) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -33).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -32) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -32).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
If Target.Column = 37 Then
Application.EnableEvents = False
If Target.Offset(0, -35) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -35).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -34) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -34).Address & " en premier"
Target = ""
ElseIf Target.Offset(0, -33) = "" Then
MsgBox "Vous devez remplir la cellule " & Target.Offset(0, -33).Address & " en premier"
Target = ""
End If
Application.EnableEvents = True
End If
End Sub
Merci d'avance à tous pour votre aide.