formateur informatique

Insérer des rendez-vous dans un calendrier en VBA Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Insérer des rendez-vous dans un calendrier 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    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Ajouter des Rendez-vous dans un planning Excel

Dans cette formation VBA Excel, nous proposons de bâtir une application permettant à l'utilisateur de gérer ses rendez-vous et tâches, à travers un planning. Plus spécifiquement ici, il s'agit d'un calendrier annuel dynamique . Les Week-End et jours fériés sont automatiquement repérés, quelle que soit l'année choisie.

Dans cette application de gestion à construire, l'utilisateur choisit le mois et le jour à l'aide de deux listes déroulantes. Il décrit ensuite le Rendez-vous dans la cellule fusionnée prévue à cet effet. Puis, il clique sur le petit bouton + pour procéder à l'insertion. Le jour correspondant est dynamiquement mis en valeur dans le calendrier. De plus, il est accompagné d'un commentaire, reprenant la description proposée.

L'utilisateur peut cliquer sur le petit bouton - pour afficher l'interface de gestion des Rendez-vous. Une liste déroulante permet de désigner la date d'une tâche à récupérer. Son contenu s'inscrit alors dans une zone de saisie pour autoriser des modifications. Il peut les confirmer en cliquant sur le bouton modifier. Il peut aussi supprimer le Rendez-vous du calendrier grâce à l'autre bouton.

Gérer ses rendez-vous et tâches dans un calendrier automatisé Excel

La capture ci-dessus, illustre une partie de l'application finalisée. Nous y retrouvons en effet les deux petits boutons de gestion, en haut à droite de la feuille.

Sources et présentation du concept
Nous décomposerons cette formation en trois étapes, notamment pour simplifier l'énoncé du code mais pas seulement. Une partie, celle de la mise en valeur des rendez-vous dans le calendrier, ne nécessite pas l'intervention du VBA. Il s'agira du dernier de ces modules d'apprentissage.

Dans ce premier volet, nous allons axer les travaux sur l'intégration de nouvelles tâches dans le planning. Dans le suivant, nous développerons l'interface de gestion des rendez-vous, grâce à un UserForm.

Dans un premier temps, il s'agit de récupérer le classeur source, déjà fort évolué, puisqu'il offre le calendrier dynamique notamment. Ce classeur est composé de quatre feuilles. La feuille Calendrier est active par défaut. Au choix de l'année en cellule C3, le calendrier annuel s'auto-construit. Il repère et identifie les jours de Week-End ainsi que les jours fériés. Ces derniers sont recensés dans une feuille annexe, la feuille Jours_feries. En haut de la feuille, en colonne N, vous notez la présence des deux boutons pour la gestion des Rendez-vous. Bien entendu, ils sont inopérants à ce stade.

La feuille source héberge les données ayant permis de construire les listes déroulantes pour le choix du mois et du jour du rendez-vous à créer. Ces listes sont respectivement placées en cellules I3 et J3 de la feuille Calendrier.
  • Cliquer sur l'onglet Liste_rv en bas de la fenêtre Excel pour activer sa feuille,
Feuille Excel pour archiver tous les rendez-vous à inscrire dans le planning

Cette feuille retient toute notre attention. Elle doit accueillir et énumérer chaque tâche ajoutée au clic sur le bouton +. Cette méthodologie permettra d'effectuer un tri croissant des notifications sur la date. Cette organisation permettra ultérieurement de les proposer dans un ordre logique, depuis l'interface de gestion des rendez-vous. En outre, elle simplifiera l'analyse des données par le code VBA pour les repérer dans le calendrier.

Insérer un nouveau Rendez-vous en VBA
Cette insertion doit dans un premier temps s'opérer dans le tableau de la feuille Liste_rv. Les tâches doivent être énumérées les unes en dessous des autres. Nous devons donc commencer par bâtir une fonction capable de détecter l'indice de ligne disponible. En d'autres termes, il s'agit de la première ligne vide détectée à la suite de l'énumération.
  • Basculer dans l'éditeur de code VBA Excel avec le raccourci clavier ALT + F11 par exemple,
  • Dans l'explorateur de projet, déployer l'affichage du dossier Modules,
  • Puis, double cliquer sur le module code_rv existant,
Nous affichons ainsi sa feuille de code au centre de l'écran. Comme vous le constatez, ce classeur, en plus du calendrier annuel dynamique, offre certaines procédures de codes préconstruites. La procédure Trier devra être appelée pour réorganiser les tâches par dates croissantes, sur la feuille Liste_rv. Nous ne revenons pas sur ces notions que nous avions apprises au travers de la formation Visual Basic Excel pour organiser les données.

Procédure de code VBA Excel pour trier les données de tableaux

Pour cette organisation, les dates de rendez-vous devront être reconstruites par le code VBA. C'est la raison de la présence de la fonction num_mois. Grâce à l'instruction de branchement Select Case, elle retourne le numéro correspondant à un mois passé en toutes lettres. Janvier vaut 1 par exemple.

Nous devons créer la fonction réalisant l'analyse du tableau des tâches, pour transmettre l'indice de la première ligne disponible détectée.
  • Au-dessus de la fonction Trier , créer la fonction trouver, comme suit :
Function trouver() As Integer

End Function


Comme vous le savez, en VBA il n'y a pas d'instruction return. Une fonction retourne une valeur qu'elle stocke dans son propre nom (trouver). Cette valeur est un indice de ligne, soit un nombre entier. C'est pourquoi nous typons la fonction en conséquence, comme un Integer donc.

Nous avons besoin de variables permettant de parcourir les cellules du tableau à analyser.
  • Dans les bornes de la fonction, ajouter les déclarations et affectations suivantes :
Dim ligne As Integer: Dim colonne As Integer

ligne = 3: colonne = 2


Une cellule est référencée par le croisement d'une ligne et d'une colonne. Nous déclarons donc ces deux variables. Bien sûr, il s'agit de nombres entiers. Sur la feuille Liste_rv, le tableau pour l'énumération des rendez-vous débute à partir de la ligne 3 et de la colonne B, soit la colonne 2. Nous initialisons donc les deux variables sur ces valeurs.

Pour trouver la première ligne vide dans l'énumération, l'astuce consiste à réaliser une boucle qui met fin au traitement lorsque son critère n'est plus vérifié. Ce critère consiste à savoir si la cellule de la ligne en cours propose un contenu. Dans ce cas, l'analyse doit passer sur la ligne suivante. Dans le cas contraire, le traitement doit être stoppé pour retourner l'indice prélevé. Un traitement récursif vérifiant une condition se réalise grâce à une boucle While.
  • Après les affectations, ajouter les instructions suivantes :
While (Sheets('liste_rv').Cells(ligne, colonne).Value <> '')
ligne = ligne + 1
Wend

trouver = ligne


L'objet VBA Sheets permet de désigner la feuille Liste_rv sur laquelle l'analyse doit être réalisée. L'objet dérivé Cells permet de pointer sur une cellule de cette feuille. Nous désignons une cellule de la ligne en cours, partant de l'indice 3 pour la colonne 2, soit B3. Sa propriété Value permet d'accéder à son contenu. Si celui-ci n'est pas vide (<>''), l'analyse doit se poursuivre sur la ligne suivante (ligne = ligne + 1). Le traitement tourne donc en boucle tant que la première cellule vide n'est pas trouvée. En revanche, si elle est détectée, la boucle met fin à son traitement. De fait la variable ligne n'est plus incrémentée et porte la valeur du premier indice à exploiter. C'est pourquoi nous affectons la fonction de cette donnée à retourner (trouver = ligne).

Pour que cette information puisse être exploitée, la fonction trouver doit être questionnée. Nous choisissons donc de créer la procédure ajouter. Cette dernière doit être déclenchée au clic sur le bouton + de la feuille Calendrier. Elle doit inscrire les informations du nouveau rendez-vous sur la ligne dont l'indice lui a été retourné.
  • Au-dessus de la fonction trouver, créer la procédure ajouter, comme suit :
Sub ajouter()
Dim ligne As Integer
Dim lannee As Integer: Dim le_mois As Byte: Dim le_jour As Byte

ligne = trouver

End Sub


Une procédure (Sub) ne retourne pas de valeur. Elle n'a donc pas besoin d'être typée. La variable ligne sert à réceptionner l'indice retourné par la fonction (ligne = trouver). VBA propose une fonction similaire à la fonction Excel Date. Elle se nomme DateSerial. A l'instar de son homologue, elle permet de reconstruire une date en fonction du numéro de l'année, du numéro du mois et du numéro du jour. C'est pourquoi nous déclarons les trois variables respectives nécessaires.

Mais avant cela, nous pouvons procéder à l'inscription des informations connues, sur la nouvelle ligne de la feuille Liste_rv. Le mois et le jour du nouveau Rendez-vous à créer sont respectivement inscrits en cellules I3 et J3 de la feuille Calendrier. Le contenu quant à lui est situé en cellule K2 de cette même feuille. Il s'agit donc de réaliser la correspondance des valeurs grâce à l'objet Cells.
  • A la suite du code de la procédure, ajouter les trois instructions suivantes :
Sheets('liste_rv').Cells(ligne,2).Value = Sheets('Calendrier').Range('I3').Value
Sheets('liste_rv').Cells(ligne, 3).Value = Sheets('Calendrier').Range('J3').Value
Sheets('liste_rv').Cells(ligne, 5).Value = Sheets('Calendrier').Range('K2').Value


Pour la nouvelle ligne de la feuille Liste_rv, ces informations doivent respectivement être positionnées en colonnes B, C et E. Il s'agit des indices 2, 3 et 5 mentionnés dans notre code. Pour la correspondance avec les cellules de la feuille Calendrier, nous avons préféré employer l'objet Range à la place de l'objet Cells. Les cellules étant connues, l'objet Range permet des les désigner par leurs références.

Il ne nous reste plus qu'à inscrire la date en colonne D (indice 4). Mais avant cela, nous devons la reconstruire. Les numéros pour l'année et pour le jour sont connus. Pour l'année, il suffit de pointer sur la cellule C3 de la feuille Calendrier. Pour le jour, il suffit de récupérer la valeur inscrite précédemment en colonne C de la feuille Liste_rv (Sheets('liste_rv').Cells(ligne,3).Value). Le mois est certes connu, mais sous forme de texte. Nous venons de l'inscrire en colonne B pour la ligne en cours (Sheets('liste_rv').Cells(ligne,2).Value). Nous devons le passer à la fonction num_mois pour récupérer son numéro correspondant. Ainsi, nous pourrons exploiter la fonction VBA DateSerial pour reconstruire la date complète. C'est elle qui permettra le tri chronologique.
  • A la suite du code de la procédure, ajouter les traitements suivants :
lannee =Sheets('Calendrier').Cells(3, 3).Value
le_jour = Sheets('liste_rv').Cells(ligne, 3).Value
le_mois = num_mois(Sheets('liste_rv').Cells(ligne, 2).Value)
Sheets('liste_rv').Cells(ligne, 4).Value = DateSerial(lannee, le_mois, le_jour)


Chaque numéro est stocké dans sa variable respective. Pour le mois, vous constatez le traitement intermédiaire par l'appel de la fonction num_mois, à laquelle nous passons l'information sur le mois en texte à traiter. Puis, en colonne D de la feuille Liste_rv, toujours pour l'indice variable de la ligne en cours, nous écrivons la date recomposée (DateSerial(lannee, le_mois, le_jour)).

Nous n'avons pas tout à fait terminé. A ce stade en effet, nous nous contentons d'inscrire chaque nouvelle tâche les unes en dessous des autres, dans le tableau de la feuille Liste_rv. L'objectif final de ce premier volet consiste à les repérer dans le calendrier annuel. Et chacune doit être associée à son commentaire. Nous pouvons néanmoins réaliser les premiers essais.
  • Enregistrer les modifications (CTRL + S),
  • Revenir sur la feuille Calendrier,
  • Cliquer avec le bouton droit de la souris sur le bouton +,
  • Dans le menu contextuel, choisir Affecter une macro,
  • Dans la boîte de dialogue qui suit, sélectionner la procédure ajouter et cliquer sur Ok,
Le lien entre le bouton et la procédure est désormais établi. Au prochain clic sur le bouton, le code de la procédure ajouter s'exécutera.
  • Choisir un mois et un jour à l'aide des listes déroulantes respectives en I3 et J3,
  • Décrire la tâche en K2, par exemple: 14h : Réunion de chantier,
En apparence rien ne se produit. Tout cela est fort logique en effet. Comme nous l'avons mentionné précédemment, les travaux portent uniquement sur la feuille Liste_rv à ce stade.
  • Cliquer sur l'onglet Liste_rv en bas de la fenêtre Excel pour afficher sa feuille,
Vous notez la présence de la tâche, telle que nous l'avons décrite, parfaitement restituée en première ligne du tableau de la feuille Liste_rv. Nous proposons de poursuivre la simulation pour émettre une remarque importante.
  • Cliquer sur l'onglet Calendrier en bas de la fenêtre Excel pour revenir sur sa feuille,
  • En I3, conserver le mois précédemment sélectionné,
  • En J3, définir un jour antérieur au précédent choix,
  • En K2, modifier la description comme suit : 9h : Entretien téléphonique DG,
  • Puis, cliquer sur le bouton +,
  • Enfin, afficher la feuille Liste_rv,
Stocker et archiver les rendez-vous ajoutés par le code VBA Excel dans les lignes du tableau

Notre code fonctionne parfaitement pour l'instant. Ce nouveau rendez-vous est venu s'inscrire à la suite du tableau. Souvenez-vous, c'est la fonction trouver qui est lancée par la procédure ajouter. Elle analyse le tableau et trouve la première ligne vierge qu'elle retourne. Vous notez la présence de la date, parfaitement reconstruite en colonne D. Cette fois, c'est la fonction num_mois qui a été utilisée.

Cependant, bien que cette seconde tâche soit antérieure à la première, elle est classée après. La chronologie n'est donc pas respectée. A chaque clic, nous devons commander la réorganisation des rendez-vous par appel de la procédure Trier.
  • Basculer dans l'éditeur de code (ALT + F11),
  • A la suite de la procédure ajouter, écrire l'appel comme suit : Trier,
  • Enregistrer les modifications (CTRL + S) et revenir sur le classeur (ALT + F11),
  • Afficher la feuille Calendrier,
  • Créer une nouvelle tâche en définissant le mois, le jour et la description,
  • Puis, cliquer sur le bouton + et afficher la feuille Liste_rv,
Ce nouveau rendez-vous est parfaitement intégré dans le tableau. Cette fois en revanche, vous constatez que la réorganisation a eu lieu.

Insérer les rendez-vous triés croissant dans un tableau Excel par code VBA

Les tâches sont désormais classées chronologiquement. Ce tri est précieux pour les travaux à venir. Ils consisteront à permettre d'accéder à l'un des rendez-vous par sa date, pour le supprimer ou le modifier.

Gestion des commentaires pour marquer les tâches
Chaque tâche doit être repérée dans le calendrier, à l'emplacement de sa date, reconstruite en colonne D de la feuille Liste_rv. L'ajout d'un commentaire dans une cellule consiste en un code trivial. Une macro automatique le fournirait d'ailleurs. Mais cet ajout doit intervenir pour chaque rendez-vous. Il va donc s'agir d'inclure ce code dans des boucles. Ces dernières doivent être imbriquées. En même temps que nous parcourons tous les rendez-vous du tableau, nous devons parcourir chaque cellule du calendrier, à la recherche de la correspondance sur les dates.
  • Revenir dans l'éditeur de code VBA Excel (ALT + F11),
  • Sous la procédure ajouter, créer la procédure ajouter_com, comme suit :
Sub ajouter_com()
Dim ligne_cal As Integer: Dim colonne_cal As Integer
Dim ligne As Integer: Dim colonne As Integer
Dim la_date As String: Dim le_contenu As String
Dim test as Boolean

ligne = 3: colonne = 2
test = False

End Sub


Nous déclarons les variables nécessaires pour respectivement scruter les lignes et colonnes des deux feuilles. Nous choisissons l'extension _cal pour celles de la feuille Calendrier. Nous déclarons la variable la_date pour stocker la date de chaque rendez-vous. Ainsi, à chaque passage dans la boucle, nous pourrons la comparer avec les dates du calendrier, pour définir l'emplacement du commentaire associé. La variable le_contenu doit mémoriser la description de la tâche, à insérer en commentaire. Nous initialisons les variables de la feuille Liste_rv sur la première cellule du tableau énumérant les rendez-vous (ligne = 3: colonne = 2). La variable test est un booléen que nous initialisons à false. Nous l'exploiterons pour mettre fin aux traitements récursifs, lorsque les correspondances seront trouvées.

Nous devons passer en revue tous les rendez-vous de la feuille Liste_rv. Dans un premier temps, il suffit donc de répliquer la même boucle While que celle que nous avons exploitée dans la fonction trouver. Dès qu'une cellule vide est trouvée, son traitement s'arrête. Mais tant qu'un contenu existe, nous pourrons le traiter.
  • A la suite du code de la procédure, ajouter la boucle While comme suit :
While(Sheets('liste_rv').Cells(ligne, colonne).Value <> '')
la_date = Sheets('liste_rv').Cells(ligne, 4).Value
le_contenu = Sheets('liste_rv').Cells(ligne, 5).Value
test = False

ligne = ligne + 1
Wend


Pour chaque nouvelle ligne, donc pour chaque rendez-vous, nous en profitons pour récupérer l'information sur la date (la_date) et sur la description (le_contenu). Il est important de recaler le booléen sur False. Il s'agit d'un indicateur important pour la poursuite du traitement, nous le verrons. Pour chaque tâche, donc à l'intérieur de cette boucle While, nous devons comparer cette date avec toutes celles du calendrier. Une fois la correspondance trouvée, nous pourrons ajouter le commentaire. Il s'agit donc de balayer toutes les lignes du calendrier (De 7 à 37). Et pour chaque ligne, nous devons balayer toutes les colonnes, soit de C à N (Indice 3 à 14). Lorsque les bornes sont connues et fixes, la boucle For est dédiée.
  • Dans la boucle While, avant l'incrémentation de la ligne (ligne = ligne + 1), ajouter l'imbrication des deux boucles For, comme suit :
For ligne_cal = 7 To 37
For colonne_cal = 3 To 14

Next colonne_cal
Next ligne_cal


Ainsi donc, pour chaque rendez-vous (boucle While) dont la date est mémorisée, nous passons en revue chaque ligne du calendrier (For ligne_cal = 7 To 37). Et pour chaque ligne, nous balayons chaque colonne (For colonne_cal = 3 To 14). En d'autres termes, nous analysons chaque cellule du calendrier, dont les références sont données par les indices ligne_cal et colonne_cal.

Nous devons exploiter ces indices pour pointer sur chacune de ces cellules et récupérer leur contenu. Ce contenu est une date. C'est un format personnalisé qui permet des les afficher dans une apparence réduite. Mais elles renferment bien l'information sur la date complète. Cette date doit être comparée à celle du rendez-vous, mémorisée dans la variable la_date. Si la correspondance est avérée, il s'agit de l'emplacement dans lequel doit se produire l'insertion du commentaire avec le descriptif mémorisé dans la variable le_contenu.
  • Pour ce faire, à l'intérieur des boucles For, ajouter les traitements suivants :
For ligne_cal = 7 To 37
For colonne_cal = 3 To 14
If(Sheets('Calendrier').Cells(ligne_cal, colonne_cal).Value = la_date) Then
Cells(ligne_cal, colonne_cal).AddComment
Cells(ligne_cal, colonne_cal).Comment.Visible = False
Cells(ligne_cal, colonne_cal).Comment.Text Text:=le_contenu
test = True
Exit For
End If

Next colonne_cal
If (test = True) Then Exit For
Next ligne_cal


L'instruction conditionnelle If permet de vérifier la correspondance entre la date en cours d'analyse dans le calendrier (Cells(ligne_cal, colonne_cal).Value) et la date du rendez-vous en cours (la_date). Si l'égalité est vérifiée (Then), nous ajoutons le commentaire en lieu et place (Cells(ligne_cal, colonne_cal)), grâce à la méthode AddComment de l'objet Cells. Nous précisons que nous souhaitons l'afficher discrètement sous forme de coche dans la cellule (Comment.Visible = False). Puis, nous remplissons son contenu (Comment.Text Text:=le_contenu).

Comme la correspondance a été trouvée, il n'est pas nécessaire de poursuivre le balayage pour ce rendez-vous. Il faut passer au suivant. Pour cela, nous devons reprendre la boucle While. Mais pour ce faire, nous devons quitter les deux boucles For. Nous basculons tout d'abord la variable booléenne à True, pour indiquer que le test est un succès. Puis, nous quittons la deuxième boucle For imbriquée (Exit For). Avant la borne de la première boucle For, nous réalisons un test sur le booléen (If (test = True) Then Exit For). S'il vaut True, nous savons qu'il faut sortir de la boucle (Exit For).

Un dernier réglage est nécessaire avant de tester le bon fonctionnement du code. Un commentaire ne peut être ajouté que si la cellule n'en a pas. Or, à chaque fois que nous allons ajouter une nouvelle tâche, notre procédure tentera d'ajouter un commentaire à chaque rendez-vous déjà traité. Nous devons donc créer une procédure pour purger tous les commentaires du calendrier. Appelée avant la procédure ajouter_com, elle nettoiera l'espace. De fait, tous les commentaires pourront être recréés. Cette méthodologie est intéressante pour les travaux à venir. L'interface de gestion doit notamment proposer de modifier une description. S'il elle est modifiée, son commentaire doit être recréé pour être actualisé.
  • Au-dessus de la procédure ajouter_com, créer la procédure effacer_com :
Sub effacer_com()
On Error Resume Next

Sheets('Calendrier').Range('C7:N37').ClearComments

End Sub


C'est donc la méthode ClearComments appliquée sur l'objet Range définissant la plage de cellules d'une feuille, qui permet de supprimer tous les commentaires présents.

Ces procédures doivent être appelées par la procédure Ajouter, une fois le tri effectué.
  • Dans la procédure Ajouter, après l'appel de la fonction Trier, intégrer les deux instructions suivantes :
effacer_com
ajouter_com
  • Enregistrer les modifications (CTRL + S),
  • Basculer sur la feuille Calendrier,
  • Créer un nouveau rendez-vous et l'insérer grâce au bouton +,
Ajouter automatiquement de nouveaux rendez-vous dans un calendrier Excel par le code VBA

Comme vous le constatez et comme l'illustre la capture ci-dessus, notre code est un succès. Chaque rendez-vous est parfaitement repéré par une coche sur sa date. Au survol de la souris, sa description apparaît instantanément.

Le code VBA complet pour ce premier volet est le suivant :

Sub ajouter()
Dim ligne As Integer
Dim lannee As Integer: Dim le_mois As Byte: Dim le_jour As Byte

ligne = trouver

Sheets('liste_rv').Cells(ligne, 2).Value = Sheets('Calendrier').Range('I3').Value
Sheets('liste_rv').Cells(ligne, 3).Value = Sheets('Calendrier').Range('J3').Value
Sheets('liste_rv').Cells(ligne, 5).Value = Sheets('Calendrier').Range('K2').Value

lannee = Sheets('Calendrier').Cells(3, 3).Value
le_jour = Sheets('liste_rv').Cells(ligne, 3).Value
le_mois = num_mois(Sheets('liste_rv').Cells(ligne, 2).Value)
Sheets('liste_rv').Cells(ligne, 4).Value = DateSerial(lannee,le_mois, le_jour)

Trier
effacer_com
ajouter_com

End Sub

Sub effacer_com()
On Error Resume Next

Sheets('Calendrier').Range('C7:N37').ClearComments

End Sub

Sub ajouter_com()
Dim ligne_cal As Integer: Dim colonne_cal As Integer
Dim ligne As Integer: Dim colonne As Integer
Dim la_date As String: Dim le_contenu As String
Dim test As Boolean

ligne = 3: colonne = 2

While (Sheets('liste_rv').Cells(ligne, colonne).Value <> '')
la_date = Sheets('liste_rv').Cells(ligne, 4).Value
le_contenu = Sheets('liste_rv').Cells(ligne, 5).Value
test = False

For ligne_cal = 7 To 37
For colonne_cal = 3 To 14
If (Sheets('Calendrier').Cells(ligne_cal, colonne_cal).Value = la_date) Then
Cells(ligne_cal, colonne_cal).AddComment
Cells(ligne_cal, colonne_cal).Comment.Visible = False
Cells(ligne_cal, colonne_cal).Comment.Text Text:=le_contenu
test = True
Exit For
End If
Next colonne_cal
If (test = True) Then Exit For
Next ligne_cal

ligne = ligne + 1
Wend

End Sub

Function trouver() As Integer
Dim ligne As Integer: Dim colonne As Integer

ligne = 3: colonne = 2

While (Sheets('liste_rv').Cells(ligne, colonne).Value <> '')
ligne = ligne + 1
Wend

trouver = ligne

End Function

Sub Trier()
Range('D4').Select
ActiveWorkbook.Worksheets('Liste_rv').Sort.SortFields.Clear
ActiveWorkbook.Worksheets('Liste_rv').Sort.SortFields.Add2Key :=Range('D4:D7' _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets('Liste_rv').Sort
.SetRange Range('B3:E1000')
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

Function num_mois(le_mois As String)
Select Case le_mois

Case 'Janvier':
num_mois = 1
Case 'Février':
num_mois = 2
Case 'Mars':
num_mois = 3
Case 'Avril':
num_mois = 4
Case 'Mai':
num_mois = 5
Case 'Juin':
num_mois = 6
Case 'Juillet':
num_mois = 7
Case 'Août':
num_mois = 8
Case 'Septembre':
num_mois = 9
Case 'Octobre':
num_mois = 10
Case 'Novembre':
num_mois = 11
Case 'Décembre':
num_mois = 12

End Select

End Function


Dans le prochain volet, il s'agira de développer l'interface permettant à l'utilisateur d'intervenir sur les rendez-vous. Un UserForm doit lui offrir la possibilité de désigner une tâche par sa date. Dès lors l'interface doit lui permettre de la modifier ou de la supprimer.

 
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