Microsoft 365 Case à cocher msg box

FCMLE44

XLDnaute Impliqué
Bonjour
Dans le fichier en pièce jointe, en cellule B53, j'ai une cellule qui fonctionne parfaitement

Je souhaiterais que lorsque je vais cliquer sur la case à cocher en E54, s'ouvre une msgbox m'invitant à indiquer quelle est la date du dernier jour travaillé

En fonction de la date indiquée dans cette msgbox, la date d'affichera en cellule E55 sous le format suivant : DJT = jj/mm/aaaa et agira sur le calcul de la formule en B53. A savoir qu'au lieu de tenir compte de la date indiquée en B17 ou B18 le calcul tiendra compte de la date en E55

Ex: En B17 ou B18 j'ai 31/12/2020. Alors j'aurais donc affiché de B53 à B64 de déc-19 à nov-20;
Si la case en E54 est cochée avec un date renseignée au 01/01/2020 alors j'obtiendrais de B53 à B64 de janv-19 à déc-19

Quelqu'un aurait il une idée ?

Merci
 

Pièces jointes

  • Classeur2.xlsx
    35 KB · Affichages: 26

danielco

XLDnaute Accro
Bonjour,

Pour la case à cocher, j'ai indiqué E54 comme cellule liée et j'ai formaté la cellule avec le format personnalisé ";;;".

Dans le module de la feuille, j'ai mis :

VB:
Private Sub Worksheet_Calculate()
  If [E54] = True And Teste = False Then
    MsgBox "du " & [B53].Text & " au " & [B64].Text
  End If
  Teste = [E54]
End Sub

Dans un module standard, j'ai mis :

Code:
Public Teste As Boolean

Dis-moi si tu as besoin de précisions.

Cordialement.

Daniel
 

Pièces jointes

  • Classeur2.xlsm
    39.3 KB · Affichages: 9

FCMLE44

XLDnaute Impliqué
Bonjour et Merci

Je pense que je me suis mal exprimé. J'en suis désolé
Quand je clique sur la case à cocher je dois avoir un message box qui me demande la date du dernier jour Travaille
Lorsqu'on met la réponse, la réponse se copie en cellule E55 sous le format DJT = jj/mm/aaaa
Ensuite si la cellule E55 est non vide alors pour la cellule B53 alors je ne prendrais pas en compte les cellules B17 ou B18 mais bien la date indiquée dans le message box
 

danielco

XLDnaute Accro
Bonjour,

Je ne comprends pas du tout ce qu'il faut faire après avoir saisi la date. Peux-tu le réexpliquer avec deux ou trois exemples. Tu testes E55 après l'avoir rempli ? E55 ne peut pas être vide ?
Peux-être est-ce un problème de compréhension de ma part ? Avec ton dernier classeur, je ne vois pas de différence entre les deux feuilles.
Une autre chose, dans le classeur joint, je ne fais aucun contrôle sur la date. Cette vérification est assez compliquée. Peux-tu dire quelles contrôles doivent être faits ?
Je joins un classeur dans lequel le code ne fait que copier la date en E55.

Daniel
 

Pièces jointes

  • Classeur2.xlsm
    40.4 KB · Affichages: 2

FCMLE44

XLDnaute Impliqué
Bonjour
Merci
Pour la partie Case à cocher avec la saisie de date ca semble OK

Reste une dernière chose en cellule B53, j'ai cellule =SIERREUR(MOIS.DECALER(SI(B$18="";$B$17;$B$18);-12);"")
Ca c'est si la case n'est pas cochée
Si elle est cochée, au lieu de prendre dans la formule B17 ou B18, il faut prendre la cellule E55
 

danielco

XLDnaute Accro
Essaie le classeur joint. Explication : dans le format de contrôle de la case à cocher, j'ai indiqué E54 comme cellule liée. E54 prend donc la valeur VRAI quand la case est cochée et FAUX quand elle ne l'est pas (le format personnalisé ";;;" de la cellule masque cette valeur). J'ai donc seulement remplacé la formule de B53 par :

VB:
=SI(E54=VRAI;CNUM(DROITE(E55;10));SIERREUR(MOIS.DECALER(SI(B$18="";$B$17;$B$18);-12);""))

Daniel
 

Pièces jointes

  • Classeur2.xlsm
    40.5 KB · Affichages: 3

Discussions similaires

Réponses
18
Affichages
651
Réponses
5
Affichages
471

Statistiques des forums

Discussions
315 089
Messages
2 116 099
Membres
112 661
dernier inscrit
ceucri