Aide SVP

LaurentMetz
Messages postés
2
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
7 novembre 2006
- 6 nov. 2006 à 15:41
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Derniè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.

Bonne journée / soirée.

6 réponses

Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
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

Molenn
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
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

@+: Ju£i?n
Pensez: Réponse acceptée
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
0
LaurentMetz
Messages postés
2
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Derniè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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
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  

    LaDate = MonthView1.Value

    Unload Me

End Sub


En espérant que ça puisse t'aider

MPi
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
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

@+: Ju£i?n
Pensez: Réponse acceptée
0