Blindation Systems Inc.
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Blindation Systems Inc.

Blindation Systems Inc. is a company which is opened on computing and world culture
 
HomeHome  PortalPortal  GalleryGallery  SearchSearch  Latest imagesLatest images  RegisterRegister  Log in  
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

 

 Chapitre 4

Go down 
AuthorMessage
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 4 Empty
PostSubject: Chapitre 4   Chapitre 4 Icon_minitimeTue Jul 10, 2007 5:23 am

Chapitre 4 : Cellules et plages de cellules



Nous allons construire un planning genere automatiquement par VB. Le tableau contiendra deux colonnes, l'une pour les dates et l'autre pour saisir les evenements du jour. Pour bien distinguer les semaines, le fond de la premiere colonne doit alterner entre le gris et le blanc au debut de chaque semaine.
Pour faire le planning de fevrier, il suffit d'effacer le contenu de la colonne B, de taper 1/2/99 en A3 et de recopier son contenu vers le bas.
Pour les grises, les choses se compliquent quand le 1er du mois ne otmbe pas un lundi. Il faut donc changer manuellement la couleur des motifs de la colonne A. Si votre but est d'etablir le planning de toute l'annee 1999, les modifications vous prendront beaucoup de temps. Surtout en pensant qu'il faudra recommencer en l'an 2000...


Creer la macro de base

Comme les grises changent chaque mois, il est impossible d'enregistrer une macro pour les modifier. Par contre, la mise en forme generale reste la meme.
-Cliquez Nouveau dans la barre d'outils
-Cliquez le menu Outils Macro Nouvelle macro
-Tapez Planning dans le nom de la macro
-Tapez Genere des feuilles de planning dans Description
-Cliquez sur OK pour fermer la boite Enregistrer une macro
-Cliquez le menu Insertion Feuille
-Selectionnez la plage A3:B33
-Cliquez le menu Format Cellule
-Cliquez l'onglet Bordure
-Cliquez le trait simple gras dans la liste Style
-Cliquez Contour
-Cliquez le trait simple maigre dans la liste Style
-Cliquez le bouton ― puis le bouton |
-Cliquez OK pour fermer la boite Format de cellule
-Cliquez la cellule A1 puis le menu Format Cellule
-Cliquez l'onglet Nombre
-Cliquez Personnalise dans la liste Categories
-Double-cliquez dans Type puis tapez mmmm aaaa ↵
-Selectionnez la plage A3:A33 puis cliquez le menu Format Cellule
-Cliquez Personnalise dans la liste Categories
-Double-cliquez dans Type puis tapez jjjj j ↵
-Selectionnez la colonne A en cliquant l'en-tete A
-Cliquez sur le menu Format Colonne Largeur
-Tapez 20 ↵ dans Largeur de colonne
-Selectionnez la colonne B en cliquant l'en-tete B
-Cliquez sur le menu Format Colonne Largeur
-Tapez 60 ↵ dans Largeur de colonne
-Selectionnez la plage A1:B1 puis cliquez Fusionner et centrer
-Selectionnez 20 dans la liste Taille de la police
-Double-cliquez l'onglet Feuil2 puis tapez janvier 1999 ↵
-Cliquez Arreter l'enregistrement
-Cliquez Enregistrer puis tapez Planning ↵ dans Nom de fichier
Back to top Go down
https://blindsysinc.1fr1.net
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 4 Empty
PostSubject: Re: Chapitre 4   Chapitre 4 Icon_minitimeTue Jul 10, 2007 5:23 am

Modifier une mcro enregistree

-Cliquez Visual Basic Editor dans la barre d'outils Visual Basic
-Dans la fenetre Projet, cliquez + devant Modules puis double-cliquez Module1
Nous desirons ajouter des feuilles de planning pour des dates precises. Demandons a l'utilisateur de preciser la date.
-Tapez Ctrl Fin pour voir la fin de la procedure
-Supprimez la ligne Sheets("Feuil2").Select
-Avant la ligne Sheets("Feuil2").Name..., tapez DateChoisie = inputbox("Tapez la date de la nouvelle feuille (00/00/00)") ↵
La derniere ligne de la procedure change le nom de la nouvelle feuille (Feuil2). Si l'on execute plusieurs fois la macro, Excel ajoutera les feuilles Feuil3, Feuil4, etc. Changeons cette ligne pour qu'elle fasse reference a la feuille active, et tienne compte de la date saisie.
-Remplacez la derniere ligne par ActiveSheet.Name = Format(DateChoisie, "mmmm yyyy")
La fonction Format retourne la valeur du premier argument (ici le contenu de la variable date) avec le format du second argument (argument identique au format des cellules d'une feuille de calcul mais en notation anglaise).
La cellule A1 doit contenir le mois et l'annee du planning.
-Placez le curseur au debut de la ligne End Sub et tapez Range("A1") = DateChoisie ↵
La fonction InputBox retourne une valeur de type String. Comme nous avons besoin d'effectuer des calculs avec la variable DateChoisie, utilisons la fonction DateValue qui convertit les donnees de type chaine en donnees de type DateHeure.
-Tapez DateChoisie = DateValue(DateChoisie) ↵
Tous les mois n'ont pas le meme nombre de jours. Pour verifier la fin du mois en remplissant la plage A3:A33, conservons dans la variable MoisEnCours la numero du mois en cours. La fonction Month retourne 1 pour le mois de janvier, 2 pour le mois de fevrier, etc.
-Tapez MoisEnCours = Month(DateChoisie) ↵
La variable Fond va definir la couleur de fond. Pour commencer avec un fond gris, placons la valeur 15 dans cette variable.
-Tapez Fond = 15 ↵
Les cellules a modifier sont situees dans la plage A3:A33. Pour les remplir, nous utilisons une boucle de 3 a 33. La variable JourEnCours est utilisee comme compteur.


Modifier le contenu et la mise en forme

-Tapez For JourEnCours = 3 To 33 ↵
La methode Cells (cellules) de l'objet Sheet (feuille) retourne un objet Range (plage). Le premier argument donne le numero de la ligne et le second le numero de la colonne. Placons la date dans la cellule designee par la variable JourEnCours (notre compteur) et dans la colonne 1.
-Tapez Cells(JourEnCours, 1) = DateChoisie ↵
Il faut maintenant modifier la couleur de fond de cette cellule.
-Tapez Cells(JourEnCours, 1).Interior.ColorIndex = Fond ↵
La fonction WeekDay retourne 1 si le jour de la semaine est un dimanche, 2 pour un lundi, etc. Si on est en debut de semaine, il faut modifier la couleur de fond.
-Tapez If WeekDay(DateChoisie) = 1 Then ↵
Si le fond doit changer, verifions s'il est en gris (valeur 15).
-Tapez If Fond = 15 Then ↵
Si le fond est gris, il faut le mettre en blanc.
-Tapez Fond = 0 ↵
Dans le cas contraire...
-Tapez Else ↵
...Il faut le mettre en gris.
-Tapez Fond = 15 ↵
Fermons nos deux instructions de condition If
-Tapez End if ↵ End if ↵
Il faut maintenant augmenter la date.
-Tapez DateChoisie = DateChoisie + 1 ↵
Si apres l'augmentation de la date le mois a change, il faut sortir de la boucle For...Next.
-Tapez If Month(DateChoisie) > MoisEnCours Then Exit For ↵
Il ne reste plus qu'a clore la boucle For...Next.
-Tapez Next JourEnCours ↵
Si, apres la creation de la nouvelle feuille, l'utilisateur desire saisir des valeurs, il faut placer la selection sur la cellule B3.
-Tapez Range("B3").Select ↵
-Cliquez Affichage Microsoft Excel dans la barre d'outils
-Supprimez la feuille janvier 1999.
Ajoutons un raccourci pour lancer notre macro Planning.
-Cliquez le menu Outils Macro Macros
-La macro Planning etant selectionnee, cliquez le bouton Options
-Tapez P (en majuscule) dans Touche de raccourci
-Cliquez OK puis Annuler
-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez 1/1/99 ↵ pour la date de la nouvelle feuille
Excel cree une feuille de calcul janvier 1999.
-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez 1/2/99 ↵ pour la date de la nouvelle feuille
Excel cree une feuille de calcul fevrier 1999.
Back to top Go down
https://blindsysinc.1fr1.net
Blind Dragon
Perl encoder
Perl encoder
Blind Dragon


Female
Number of posts : 341
Age : 32
Localisation : Here, as usual
Emploi : Admin.
Registration date : 2007-05-13

Chapitre 4 Empty
PostSubject: Re: Chapitre 4   Chapitre 4 Icon_minitimeTue Jul 10, 2007 5:24 am

Gestion des erreurs d'execution

-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez 1/2/99 ↵ pour la date de la nouvelle feuille
L'erreur 1004 indique qu'une feuille fevrier 1999 existe deja.
-Cliquez le bouton Debogage
Dans la procedure, la ligne en cause est surlignee.
-Cliquez Reinitialiser
Il existe deux methodes pour remedier au probleme.

1re methode :
Elle consiste a demander la date avat meme d'inserer une nouvelle feuille de calcul. On peut ainsi verifier dans la collection de Sheets si elle existe deja.
Si l'hypothese est exacte, un message avertit l'utilisateur de la presence d'une feuille pour cette date.
Cette methode nous obligerait a modifier la structure de notre procedure.

2nd methode :
Elle consiste a ajouter une routine de gestion d'erreurs dans la procedure pour demander a l'utilisateur si l'ancienne feuille doit etre supprimee. Cette routine nous permettra aussi de gerer les autres erreurs.
-Placez-vous au debut de la procedure Planning
Pour gerer les erreurs, il faut donner a l'instruction On Error Goto le point d'entree de la routine sous forme d'etiquette. Cette instruction doit toujours se trouver en debut de procedure.
-Sur la premiere ligne de la procedure (avant Sheets.Add), tapez On Error Goto ErreurPlanning ↵
-Placez-vous a la fin de la procedure Planning (avant End Sub)
La routine principale ne doit pas se prolonger dans la routine de gestion des erreurs.
-Tapez Exit Sub ↵
La routine de gestion des erreurs doit commencer par une etiquette. Ce sont les deux points qui indiquent a VB la presence d'une etiquette.
-Tapez ErreurPlanning: ↵
C'est l'erreur 1004 qui apparait quand on nomme une feuille avec un nom deja utilise. La fonction Err retourne le numero de l'erreur. Testons cette eventualite.
-Tapez If Err = 1004 Then ↵
Si c'est l'erreur 1004, il faut avertir l'utilisateur de l'erreur et lui demander si l'ancienne feuille doit etre supprimee.
-Tapez Reponse = msgbox("La feuille " & Format(DateChoisie, "mmmm yyyy") & " existe deja !" & Chr(10) & "Supprimer l'ancienne feuille?", vbYesNo + vbCritical) ↵
Ici, MsgBox est une fonction qui retourne le bouton choisi par l'utilisateur. La constante vbYesNo precise que la boite de dialogue contient un bouton Oui et un bouton Non. La constante vbCritical ajoute le pictogramme x dans la boite.
Verifions le choix de l'utilisateur.
-Tapez If Reponse = vbYes Then ↵
Nous devons supprimer l'ancienne feuille avant de renommer la nouvelle. Mais Excel intercepte la suppression des feuilles et demande une confirmation.
Pour que la procedure ne soit pas arretee par cette boite de dialogue, il faut repondre a la place de l'utilisateur avec l'instruction SendKeys. L'argument {ENTER} simule l'appui sur la touche ↵ . C'est donc le bouton OK qui est pris par defaut. L'argument False indique a VB de ne pas attendre et de continuer la procedure. Comme les boites de dialogue stoppent toutes actions, l'instruction SendKeys est placee avant la suppression de la feuille.
-Tapez SendKeys String:="{ENTER}" , Wait:=False ↵
Supprimons l'ancienne feuille.
-Tapez Sheets(Format(DateChoisie, "mmmm yyyy")).Delete ↵
Comme la feuille est supprimee, nous pouvons executer de nouveau la ligne de code qui a genere l'erreur.
-Tapez Resume ↵
Quand l'utilisateur ne veut pas supprimer l'ancienne feuille, il faut supprimer la nouvelle et sortir de la procedure.
-Tapez Else ↵
-Tapez SendKeys String:="{ENTER}" , Wait:=False ↵
-Tapez ActiveSheet.Delete ↵
-Tapez Exit Sub ↵
-Tapez End if ↵ End if ↵
Si l'utilisateur ne tape pas une date mais un chiffre ou une chaine de caracteres, VB affichera le message d'erreur 13.
Ajoutons une instruction de decision pour ce cas.
-Tapez IF Err = 13 Then ↵
Affichons un message pour informer l'utilisateur de son erreur de saisie.
-Tapez msgbox "Vous devez taper une date pour creer une nouvelle feuille. " & DateChoisie & " n'est pas une date." , vbExclamation ↵
Comme pour l'erreur 1004, il faut supprimer la nouvelle feuille et sortir de la procedure.
-Tapez SendKeys String:="{ENTER}" , Wait:=False ↵
-Tapez ActiveSheet.Delete ↵
-Tapez Exit sub ↵
-Tapez End if ↵
Nous avons teste les erreurs 1004 et 13, mais il est possible que la procedure rencontre d'autres types d'erreurs. Ajoutons un message pour toutes les autres erreurs.
-Tapez msgbox "Erreur No : " & Err & Chr(10) & "Erreur : " & Error(Err) ↵
Ces erreurs n'etant pas gerees par notre routine, il faut arreter la procedure.
-Tapez Stop ↵
[Sans l'instruction Stop, la procedure s'arrete avec l'instruction End Sub. Sans l'instruction MsgBox vous ne serez pas averti d'une eventuelle erreur. Ajoutez ces deux lignes dans vos programmes pendant la phase de debogage.]
Verifiez la procedure et ajoutez des caracteres de continuite.
-Cliquez Affichage Microsoft Excel dans la barre d'outils
-Cliquez l'onglet fevrier 1999
-Tapez Payer 1er tiers dans la cellule B17
-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez 1/2/99 ↵ dans la boite de saisie.
-Cliquez Non pour conserver l'ancienne feuille
L'ancienne feuille est conservee avec ses commentaires.
-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez 1/2/99 ↵ dans la boite de saisie
-Cliquez Oui pour supprimer l'ancienne feuille.
Une nouvelle feuille remplace l'ancienne. Les commentaires sont perdus.
-Tapez Ctrl Shift P pour lancer la macro Planning
-Tapez Bonjour ↵ dans la boite de saisie
La procedure affiche un message d'erreur.
-Cliquez sur OK pour fermer la boite de dialogue
-Supprimez les feuilles autres que janvier 1999 et fevrier 1999
-Cliquez Enregistrer
-Cliquez Fermer la fenetre x pour fermer le classeur Planning.xls.
Back to top Go down
https://blindsysinc.1fr1.net
Sponsored content





Chapitre 4 Empty
PostSubject: Re: Chapitre 4   Chapitre 4 Icon_minitime

Back to top Go down
 
Chapitre 4
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
Blindation Systems Inc. :: Francophones :: Classe de Visual Basic-
Jump to: