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

Validation suivant conditions

  • Initiateur de la discussion GClaire
  • Date de début
G

GClaire

Guest
Bonjour a toutes et tous.

@Thierry m'as déja bien aidé pour la saisie suivant le mois, et je l'en remercie encore, et avec Dan on en a parlé un peu, mais je préfère passer par un post pour en faire participé tout le monde.

Pour améliorer un fichier, j'essaye de faire l'envoie de mes données directement dans la feuille (Fichier joint, mais avec une seul feuille pour des raisons sup a 50 Ko).


Voici ce que j'essaye de faire :

1) Les plages de cellules a remplire sont suivant le nombres de jours dans le mois de C22 a C52.

2) Pour l'envoie il y a des conditions suivant si mon fils sera gardé ou pas.

a) Garde : Les cellules blanches, donc envoie.
b) Pas de garde : Les celulles Grises, donc passer dans la celulles suivante.
c) Et en ce qui concerne les celulles Mauves, normalement c'est un jour sans garde sauf cas contraire et donc pour ce cas faire une demande.

Pour le moment je n'utilise que le textbox "txtHeuresEffectuees" pour mettre une donnée, mais je suis sur la possibilite de mettre une heure d'arrivée et une heure de départ.

J'ai commencé un bout de code, mais comme a l'accoutumé cela ne fonctionne pas.

Je vous remerci par avance pour toute aide, merci,G'Claire
 
Z

Zon

Guest
Salut,

Regardes un 1 er jet de ce que tu veux à partir de tes 2 listbox. Mais ta nourrice fait elle le même nombre d'heures tous les jours, parti comme cela on dirait ?

Quand tu utilises with sheets("Lenomdelafeuille") n'oublies pas le point devant cells ou range pour faire référence à la bonne feuille. Cela ne fonctionnait pas car tu utilises un format conditionnel, donc .interior.colorindex n'a aucune utilité. Il faut passer par la propriété Text de la colonne A.


Beaucoup de choses à faire encore mais comme tu n'es pas trés explicte dans ce que tu veux faire, j'attends de voir ce que tu me diras.

A+++
 

Pièces jointes

  • PayesNourrisse_XLDZOn.zip
    25.5 KB · Affichages: 22
G

GClaire

Guest
Zon, le forum

Merci, de ton aide

ton principe est trés bien, je n'y avais pas pensé de reprendre le choix de départ a partire de la saisie de l'arrivée, car j'allais procéder par

cbxHeuresArrivee.AddItem "7:00"
cbxHeuresArrivee.AddItem "7:30"

cbxHeuresDépart.AddItem "12:30"
cbxHeuresDépart.AddItem "12:30"

etc....

Es-ce que je peu le faire par demie heures?

Pour la MFC :
Dan m'en avait parlé sur le chat, mais je pensais que l'on pouvait contourner le problème, mais tu as trouvé une trés bonne solution avec les jours.

Ensuite non la nourisse peu avoir des jours avec d'autres heures, mais le minimum est de 5,50 heures.

Par contre si pour des jours ou je ne le fait pas garder (Alors que cela été prévue) je dois lui payer un minimum de 2,75 heures, donc je vais prévoir une case a cocher, pour sélectionner un jours sans garde, pour envoyer dans le textbox ces 2,75 heures.

A priori vue le résultat je pense que mon code éte simple par rapports a ce que j'avais besoin, la saisie des heures est faite par jours ou je peux faire plusieurs saisie dans une journée si j'ai oublier de faire celles de la veille. Et moi j'ai fait des tire groupés jusqu'aux conditions, il me manque encore beaucoup de pratique.



Je te remerci, G'Claire
 
Z

Zon

Guest
Salut,

J'ai rajouté un controle Calendar dans lequel on sélectionne une date, pour la démo on met en janvier car tu n'as qu'une feuille, les dates se rajoutent dans une listbox, un double click sur celle ci supprime l'élément=> RempF est modifiée aussi ainsi que DiffH c'est une vrai différence d'heures (sans tenir compte de jour à cheval) au lieu de mon bidouillage. Voilà à toi de continuer...

A+++
 

Pièces jointes

  • PayesNourrisse_XLDZOnV1.zip
    30.7 KB · Affichages: 19
G

GClaire

Guest
Zon, le forum

Merci, pour le temps que tu passe pour m'aider.

J'ai essayer ton fichier.

Voici se qui se passe, car j'ai une erreur (Projet ou bibliothèque introuvable)dans ce code :

Private Function DiffH(H1, H2) As Date
Dim NbHeures&, NbMinutes&
On Error Resume Next
NbHeures = DateDiff("h", H1, H2)
NbMinutes = DateDiff("n", H1, H2) Mod 60
DiffH = Format(NbHeures, "00") & ":" & Format(NbMinutes, "00")
End Function

A ce niveau :

DiffH = Format(NbHeures, "00") & ":" & Format(NbMinutes, "00")

Cela arrive quand :

Je clique sur la calendrier et que je vais dans la ListBox
Je rentre aprés l'heure d'arrivée l'heure de départ.

J'ai regardé l'aide et a priori il me manquerai un objet

Microsoft Windows Common Controls-2 6.0 (SP4)

Ou puis-je rétrouver cette Bibliothèque?

Merci, G'Claire
 
Z

Zon

Guest
Salut,

excuses moi Gclaire, c'est une controle que j'ai avec VB et qui n'a rien à faire dans le fichier, décoches la référence manquante, fermes le fichier en l'enregistrant, cela devrait rentrer dans l'ordre.

A+++
 
G

GClaire

Guest
Zon, le forum

Dans la gestion d'erreur :

ErrR:
If Err <> 0 Then RempF = "Erreur à la mise en place"

Je voulais mettre comme dans les MsgBox

,VbInformation, "INFORMATION"

Ce qui aurais donné :

ErrR:
If Err <> 0 Then RempF = "Erreur à la mise en place", VbInformation, "INFORMATION"


Idem pour

Msg = IIf(Len(Msg) > 0, Msg, "données ajoutées")

Donc :

Msg = IIf(Len(Msg) > 0, Msg, "données ajoutées")", VbInformation, "INFORMATION"


Mais cela ne fonctionne pas.

Es-ce possible ou non ?

Merci, G'Claire
 
Z

Zon

Guest
Salut,

C'est dans l'évènement Click du bouton Valider que tu peux mettre en forme la msgbox:

Msg = RempF(ListeDate.List, Month(Calendar1))
Msg = IIf(Len(Msg) > 0, Msg, "données ajoutées")
MsgBox Msg, VbInformation, "INFORMATION"
ListeDate.Clear


A+++
 
G

GClaire

Guest
Zon, le forum

Merci de ta réponse.

Pour le cas du Mardi, si je fais Oui cela me met, "Erreur à la mise en place"

Et si je met Non, cela me dit "Données ajoutées", mais cela ecrit 0,00 dans la celulle.

J'ai tenté de voir d'ou cela pouvait provenir, mais ton code m'est bien complique, je ne saisie pas grand chose.

Peux tu m'éclairer s'il te plait, Merci,G'Claire
 
Z

Zon

Guest
Salut,

Une inversion dans le passage des paramètres pour le mardi:

.Cells(L, 3) = CDec(DiffH(Tablo(I, 2), Tablo(I, 1))) * 24

à remplacer par .Cells(L, 3) = CDec(DiffH(Tablo(I, 1), Tablo(I, 2))) * 24

A+++
 
G

GClaire

Guest
Zon, le forum

Merci pour cette modification, mais il est vrai que je ne comprends pas tout sur ce mode de programmation.

J'ai remarqué que si je double click sur la ListBox sans avoir entrée d'heure cela me donne une erreur "Dépassement de capacité".

J'ai voulu la contournée en mettant ce code, et comme de bien entendu cela ne fonctionne pas

Private Sub ListeDate_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListeDate
If .ListIndex = -1 Then Exit Sub
.RemoveItem (.ListIndex)
End With

If J = 0 Then
cbxHeureArrivee.Clear
cbxHeureArrivee.Enabled = False
cbxHeureDepart.Clear
cbxHeureDepart.Enabled = False
txtHeuresEffectuees = ""
Exit Sub
End If

J = J - 1
End Sub


Par quel moyen je pourrais éviter cette erreur ?

Merci de ton aide et de ta patience, bon Week-end? G'Claire
 
Z

Zon

Guest
Salut,

Effectivement j'ai oublié un test dans le double click à savoir si la colonne 2 ou 3 contient une valeur ou pas.

Private Sub ListeDate_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListeDate
If .ListIndex = -1 Then Exit Sub
If IsNull(.List(.ListIndex, 1)) Or IsNull(.List(.ListIndex, 2)) Then Exit Sub
.RemoveItem (.ListIndex)
End With
J = J - 1
LblTotal.Caption = "0" 'il manquait aussi la remise à zéro du label
End Sub


A+++
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…