====== Une macro pour agir sur une sélection de cellule ====== Voici une liste de noms avec des dates de naissance. {{ :dev:excelvba:excelvba_13.png |}} On souhaite colorier en rouge les noms de ceux qui sont nés en 1991 et 1992. Pour cela l'utilisateur de la macro **colorier_en_rouge()** doit : * Sélectionner la bonne plage de cellule ; la sélection doit comprendre les 3 colonnes nom, prénom et date naissance sans inclure le libellé des champs. * puis ensuite exécuter la macro **colorier_en_rouge()**. Voici le résultat à obtenir : {{ :dev:excelvba:excelvba_14.png |}} Le code VBA : Sub colorier_en_rouge() Dim cel As Range 'range définit les cellules sélectionnées Dim i As Integer Dim dateN As Date 'parcourir la sélection de l'utilisateur For Each cel In Selection 'pour chaque cellule de la sélection If cel.Column = 3 Then 'la 3ème colonne est celle des dates de naissance dateN = cel.Text 'mémoriser la date de la cellule dans dateN annéeN = Year(dateN) 'extraire l'année If annéeN >= 1991 And annéeN <= 1992 Then cel.Font.Color = vbRed 'colorier en rouge la date End If End If Next End Sub Manipulation des dates (Exemple ladate=25/08/1990) : * Year(ladate) : renvoie l’année (1990) * Month(ladate) : renvoie le mois (08) * Day(ladate) : renvoie le jour (25) ====== Autre manipulation des cellules====== En utilisant la même liste de noms, créer une procédure (Macro) Liste_nom() qui va recopier les 10 premiers noms dans une autre feuille du classeur. Cette procédure devra faire : * Créer une nouvelle feuille et la renommer "Liste" * créer les entêtes de colonnes * Lire chaque nom, prénom et date de naissance des 10 premiers noms de la feuille précédente puis recopier ces informations dans la nouvelle feuille. Astuce : * Il est possible de référencer une cellule de la manière suivante : cells(i,j) (ligne, colonne) * Pour connaître quelles instructions VBA utiliser afin de réaliser une tâche particulière, enregistrez une macro en faisant exactement les différentes actions nécessaires. Il ne vous reste plus ensuite qu’à arrêter l’enregistrement de la macro pour regarder le code VBA généré par Excel ... et le réutiliser.