LaurentMetz
Messages postés2Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention 7 novembre 2006
-
6 nov. 2006 à 15:41
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
7 nov. 2006 à 11:41
Bonjour à toutes et à tous,
Je suis nouveau sur ce site et j'espère poster dans le bon forum.
Je développe une application de gestion d'absenc en visual basic (en fait c'est une macro Excel), l'application fonctionne très bien mais n'est pas encore opérationnelle, je bloque sur 3 points:
1) je souhaiterai qu'à l'ouverture du fichier Excel uneboite de dialogue s'ouvre et demande à l'utilisateur de saisir le jour, le mois et l'année voulue (et si en plus je pouvais effectuer un controle de validité de la date ca serait top!!!).
2) chaque personnel aura un classeur Excel dans lequel il saisira ses absences, je souhaiterais qu'une vérification des données saisies s'effectue, l'idée c'est que lorsque le personnel enregistrera le document une maccro teste la validité des données saisies et autorise ou refuse l'enregistrement en fonction de la validité.
3) enfin je voudrais savoir comment faire pour qu'une maccro s'effectue automatiquement à l'ouverture du fichier.
Merci pour toute aide, si je n'ai pas été assez clair merci de me l'indiquer que je donne plus d'info.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 6 nov. 2006 à 16:01
pour la question 1 et 3, c'est la même chose, dans l'éditeur VBA d'Excel, dans ton projet, tu as un objet Workbook auquel tu peux associer l'évènement Open.
Il te suffit de mettre du code dans cet evènement pour que ta macro s'exécute à l'ouverture du fichier EXCEL.
Pour le point 1, si tu veux que ton utlisateur rentre une date, ce n'est pas une message box qu'il te faut, mais une InputBox qui va alimenter une variable déclarée dans un module (parce que je suppose que ta date te servira dans différentes feuilles), un code du style :
Date = Inputbox("Saisir une date :")
Le contrôle de validité, tu peux sans doute jouer avec le format, ou alors gérer 3 inputbox et faire 3 contrôles ( 1<=jour<=31, 1<=mois<=12, ...)
Pour ta question 2, je doute qu'on puisse t'aider à contrôler la validité des données saisies, ça dépend du type de données que tu attends.
Mais l'idée serait de faire une procédure de contrôle en fonction de tes besoins, et que ta procédure te retourne en sortie l'état de ton contrôle dans une variable par ex.
Pour que ton enregistrement soit accepté, il te reste à créer une boucle :
if Contrôle = "ok" then
'code validation enregistrement
else
'Rien du tout ou message pour dire qu'il y a une erreur
end if
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 nov. 2006 à 16:09
Salut,
1) Et 3) Utilise L'événement WorkBook_Open (de l'objet ThisWorkBook) pour pouvoir lancer le Msgbox
Du style (il y a surement des erreurs mais c'est pour l'idée.)
Private Sub Workbook_Open()
Dim LaDate As Date
Dim Reponse As String
Do
Reponse = InputBox("Entrer la date au format jj/mm/aaaa", "Choix de la date")
Loop While IsDate(Reponse) = False
LaDate = CDate(Reponse)
Call LaProcedure()
End Sub
Pour le 2: explique un peu mieux ou est ce que tu coinces
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 nov. 2006 à 17:49
Salut,
je suis d'accord avec Julien et Molenn en majeure partie, je proposerai juste qu'au lieu de l'inputbox, ce serait mieux (et plus coûteux en taille, certe) de faire un tout petit UserForm, avec juste un DateAndTimePicker et 2 boutons (valider / annuler).
Avantage : Aucune erreur de saisie, pas de code de vérif à faire. Pas de format à déterminer à l'utilisateur. J'ai déjà demandé aux utilisateurs de mes qques classeurs : ils préfèrent 100 fois le DTPicker à l'InputBox (plus convivial et intuitif).
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
LaurentMetz
Messages postés2Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention 7 novembre 2006 7 nov. 2006 à 10:24
Bonjour, merci pour votre aide!!!
Concernant le 1), j'ai essayé l'InputBox indiqué par Julien mais il y a une erreur de syntaxe et vu que je ne maitrise pas encore très bien impossible pour moi de savoir quelle est l'erreur. L'UserForm me parait bien mais encore une fois je ne maitrise pas impossible pour moi d'écrire le code.
Concernant le 2), je voudrais qu'à l'enregistrement du fichier utilisateur une macro vérifie notamment que la date de fin d'absence est bien supérieure ou égale à la date de début ou que le type d'absence saisi soit valide.
Merci de vous pencher sur mon cas!!!
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 7 nov. 2006 à 11:25
Pour l'UserForm, tu commences par le créer dans la section de code (Insérer...)
Tu lui ajoutes un contrôle MonthView (Microsoft MonthView Control - que
je préfère - ) que tu trouveras dans la liste des contrôles
supplémentaires, puis un bouton pour valider.
'Pour afficher l'UserForm au démarrage
Private Sub Workbook_Open() ' dans la page "ThisWorkBook"
UserForm1.Show
End Sub
'Pour affecter la date du jour au contrôle MonthView avant son affichage
Private Sub UserForm_Initialize()
MonthView1.Value = Date
End Sub
'Pour valider la date choisie
Private Sub CommandButton1_Click()
'Déclarer la variable LaDate en Public dans un module standard
' pour qu'elle soit reconnue partout dans le programme
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 7 nov. 2006 à 11:41
Salut,
Excuse moi de te dire cela MAIS quand on lit ceci : "il y a une erreur de syntaxe et vu que je ne maitrise pas encore très
bien impossible pour moi de savoir quelle est l'erreur. L'UserForm me
parait bien mais encore une fois je ne maitrise pas impossible pour moi
d'écrire le code."
On a vraiment l'impression que tu souhaites un programme tout près. je te rappelle que ceci n est pas notre fonction....
"impossible pour moi de savoir quelle est l'erreur." : QUELLE EST CETTE ERREUR.
"impossible pour moi
d'écrire le code." => RIEN n'et IMPO