Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Renseignements obligatoires sous condition d'une cellule pour changer d'onglet

hemardjean

XLDnaute Occasionnel
Bonjour le forum

Une nouvelle fois j'aurais besoin de vos connaissances.
Dans le cadre de mon travail , actuellement nous partageons un même document sur un réseau privé
.
Ce document n'est pas toujours rempli correctement par les collègues et donc Je cherche à bloquer le passage dans un nouvel onglet si la cellule C3 n'est pas rempli correctement.

Je m'explique, dans l'onglet que j'ai nommé "mis à jour" se trouve en cellule C3 une date que je voudrais que les personnes renseignent avant , et qu'il ne puisse pas cliquez sur les onglets suivant sans que la date ne soit renseigné.

Vous remerciant par avance de votre aide .

Bien cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hemardjean,
Une solution possible en PJ avec la macro :
VB:
Sub Verif()
    If Sheets("mis à jour").[C3] = "" Then
        Sheets("mis à jour").Select
        [C3].Select
        MsgBox "La cellule C3 doit être remplie"
    End If
End Sub
et dans chaque feuille hormis "mis à jour" :
Code:
Sub Worksheet_Activate()
    Verif
End Sub
 

Pièces jointes

  • hemardjean.xlsm
    17.2 KB · Affichages: 7

fanch55

XLDnaute Barbatruc
Bonjour à tous,
autre solution à mettre dans le module ThisWorkBook :
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If ActiveSheet.Name = "mis à jour" Then
        If Not IsDate([C3]) Then
            'bla bla bla
            Cancel = True
        End If
    End If
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Sh.Name = "mis à jour" Then
       If Not IsDate([C3]) Then
            'bla bla bla
            Sh.Activate
            [C3].Activate
        End If
    End If
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
A mettre dans la feuille Mis à jour :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [C3]) Is Nothing Then
        If IsDate([C3]) Then [A1].Select
    End If
Fin:
End Sub
Quand on clique sur C3, alors si C3 possède une date on sélectionne A1 ( ou autre ), donc on ne peut plus changer la date présente en C3.
 

hemardjean

XLDnaute Occasionnel
j'ai mal exprimé ce que je voulais. Je recommence.
exemple: La personne va renseigner la cellule le lundi en y opposant la date , le lendemain lorsqu'elle va faire sa mise à jour elle devra obligatoirement remplir cette nouvelle date avant de renseigner les onglets.
Dans ta première version cela fonctionnait bien il faudrait juste la modifier , est-ce possible.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
@Fanch, exact, mais quand on parle de C3, je suppose que la date n's t pas fusionnée.
Un essai en PJ avec possibilité de remettre la date en automatique avec dans la feuille "mise à jour" en reprenant la macro Worksheet_Deactivate de Fanch, plus simple :
VB:
Sub Worksheet_Deactivate()
    If Sheets("mis à jour").[C3] <> Date Then
        Sheets("mis à jour").Activate
        CouleurCell = [C3].Interior.Color
        CouleurFont = [C3].Font.Color
        [C3].Interior.Color = vbRed
        [C3].Font.Color = vbWhite
        If MsgBox("La date n'a pas été actualisée" & Chr(10) & "Dois je la remettre à jour ?", vbYesNo + 16, "Probleme") = vbYes Then
            [C3] = Date
        End If
        [C3].Interior.Color = CouleurCell
        [C3].Font.Color = CouleurFont
    End If
End Sub
 

Pièces jointes

  • hemardjean2.xlsm
    16.9 KB · Affichages: 10
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…