formateur informatique

Liste des tâches et rendez-vous en VBA Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Liste des tâches et rendez-vous en VBA Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Tâches à faire - ToDoList

Dans ce nouveau volet, nous allons découvrir comment construire un petit gestionnaire capable de rendre compte de l'état d'avancement global des tâches à accomplir.

Liste des tâches et actions, todolist en vba Excel

Sur l'exemple illustré par la capture, lorsque l'utilisateur double clique dans la colonne status en regard d'une tâche à accomplir, une petite coche apparaît pour marquer la ligne comme accomplie. Dans le même temps, cette même ligne se pare automatiquement d'une couleur bleue de confirmation. De plus, une petite barre de progression évolue pour rendre compte en pourcentage de l'état d'avancement global des projets ou actions.



Classeur Excel à télécharger
Pour la mise en place de la solution, nous suggérons d'appuyer l'étude sur un classeur Excel offrant déjà le tableau des tâches avec des calculs de synthèse et cette barre de progression. Nous découvrons ainsi le tableau des tâches à réaliser. Certaines sont d'ailleurs déjà cochées, donc accomplies. Sur la droite, vous notez la présence de deux petits tableaux.

Tableaux Excel de synthèses sur les tâches accomplies

Le premier fixe les règles tandis que le second réalise les calculs de synthèse pour rendre compte de l'état d'avancement global, au fil des doubles clics de l'utilisateur dans la colonne status. D'ailleurs, la barre de progression se nourrit du résultat final pour rendre compte visuellement cette fois. Cette barre de progression n'est autre qu'un graphique en barres horizontales. C'est sa présentation qui a été travaillée. Le symbole de la coche est inscrit grâce à la lettre ü dans la police Wingdings.

Bien sûr à ce stade, si vous double cliquez dans l'une des cases de la colonne status, rien ne se produit encore. Vous pouvez bien sûr inscrire manuellement la coche, mais ce n'est pas très ergonomique.

Gérer l'événement du double clic
Pour débuter et nous allons le découvrir, un certain nombre de gestionnaires d'événements sont disponibles avec une feuille d'un classeur. Cela signifie qu'il est tout à fait possible d'intercepter en temps réel les actions de l'utilisateur, par le code VBA.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Feuil1 (Taches),
Ainsi, nous affichons la feuille de code VBA qui lui est associée, au centre de l'écran. Naturellement, elle est vierge à ce stade.
  • Déployer la première liste déroulante en haut de l'éditeur,
  • Dans la liste, choisir l'objet Worksheet,
Cette action a pour effet de créer la procédure événementielle Worksheet_SelectionChange. Ce n'est pas celle qui nous intéresse. En effet, nous ne souhaitons pas engager des actions au changement de sélection.
  • Déployer la seconde liste déroulante sur la droite,
  • Dans la liste, choisir l'événement BeforeDoubleClick,
Ainsi, nous créons la procédure événementielle Worksheet_BeforeDoubleClick.

Exécuter des actions Excel en VBA au double clic sur une cellule de la feuille

De fait la précédente procédure n'étant pas utile, il apparaît opportun de l'effacer. Vous l'avez compris, le code de cette nouvelle procédure s'exécutera au double clic sur n'importe quelle cellule de la feuille nommée Taches. Mais seuls les doubles clics dans la colonne status nous intéressent.



Vérifier la cellule double cliquée
Une plage nommée désigne les cellules de la colonne status. Il s'agit du nom status. Vous pouvez le vérifier en déployant la zone Nom en haut à gauche de la feuille Excel. VBA offre une fonction tout à fait intéressante pour savoir si une cellule désignée appartient bien à une plage de cellules. Cette fonction se nomme Intersect. Et la cellule double cliquée est représentée par la variable Target passée en argument de la procédure événementielle Worksheet_BeforeDoubleClick.
  • Dans les bornes de la procédure, ajouter les lignes de code VBA suivantes :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = False
If Not Intersect([Status], Target) Is Nothing Then
MsgBox Target.Address

End If

End Sub


Nous testons le croisement entre la plage de la colonne status ([Status]) et la cellule double cliquée (Target). Grâce à la double négation (Not Is Nothing), nous réalisons le test consistant à savoir si cette cellule est bien située dans les bornes de la plage. Et pour réaliser une vérification, nous affichons les coordonnées de cette cellule dans une boîte de message, grâce à la fonction VBA MsgBox.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • Réaliser tout d'abord un double clic sur une cellule située en dehors de la colonne status,
Comme vous le constatez, il ne se produit rien. Pourtant l'événement est bien intercepté. Mais comme la cellule n'appartient pas à la plage souhaitée, l'action est ignorée.
  • Réaliser maintenant un double clic sur l'une des cellules de la colonne status,
Afficher les coordonnées de la cellule cliquée en VBA Excel

Cette fois et comme vous pouvez l'apprécier, l'action est considérée. Pour preuve, les coordonnées de la cellule double cliquée sont restituées dans une petite boîte de dialogue.



Empêcher la saisie au double clic
Par contre et vous l'avez remarqué, la saisie s'active dans la cellule double cliquée puisque le point d'insertion clignote. Il existe un subterfuge en VBA Excel pour abandonner le mode modification au double clic. Il consiste à exploiter la seconde variable passée en paramètre de la procédure. Elle se nomme Cancel. Et nous l'avons d'ailleurs initialisée à False.
  • Passer la ligne du MsgBox en commentaire en la préfixant d'une apostrophe,
  • A la suite du code, basculer l'état de la variable comme suit :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = False
If Not Intersect([Status], Target) Is Nothing Then
'MsgBox Target.Address
Cancel = True
End If
End Sub
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • Double cliquer de nouveau sur une cellule de la colonne status,
Comme vous pouvez l'apprécier, cette fois le mode saisi n'est pas activé, il est abandonné (Cancel = True). Et dans le même temps, la cellule est bien activée.

Cocher ou décocher
Désormais au double clic, si la coche n'est pas présente, nous devons l'inscrire. Si elle existe, nous devons l'enlever. En effet, il n'est pas interdit qu'une action ou un projet jugé terminé en première instance soit révisé. Il suffit donc de tester le contenu de la cellule double cliquée pour basculer son état. Et pour cela, une instruction conditionnelle est nécessaire.
  • A la suite du code, créer la nouvelle instruction conditionnelle suivante :
Private Sub Worksheet_BeforeDoubleClick(ByValTarget As Range, Cancel As Boolean)
Cancel = False
If Not Intersect([Status], Target) Is Nothing Then
'MsgBox Target.Address
Cancel = True
If Target.Value <> [G5].Value Then
Target.Value = [G5].Value
Else
Target.Value = ""
End If

End If
End Sub


La cellule G5 porte la coche dans le tableau des règles. Si la cellule double cliquée ne porte pas la même valeur, nous lui affectons (Target.Value = [G5].Value). En d'autres termes, nous inscrivons le symbole de la coche. Dans le cas contraire (else), nous le supprimons (Target.Value = "").
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (Alt + Tab),
  • Double cliquer dans la colonne status sur une tâche non accomplie,
Cocher une tâche terminée par double clic dans la cellule Excel

Comme vous pouvez le voir, en même temps que la coche s'inscrit dans la case, la barre de progression évolue et la ligne de l'action terminée change de couleur.

C'est une règle de mise en forme conditionnelle préconçue qui scrute notamment la présence de la coche et qui permet d'influer sur l'apparence de la ligne ainsi modifiée au double clic.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn