Avec les exemples qui suivent, vous pourrez aborder des notions de programmation avancées qui vous permettront de créer des macros plus élaborées.
Renommez tous les onglets d’un classeur
Ce que fait la macro : Elle donne à tous les onglets du classeur ouvert un nom composé d’un texte générique, demandé au début à l’utilisateur, et d’un numéro différent pour chaque feuille.
Sub RenommeOnglets ()
Dim Z As Integer
Dim Nom As String
Nom = InputBox (‘ Quel est le nom générique ‘)
For Z = 1 To Worksheets.Count
Worksheets (Z).Name = Nom & Z
Next Z
End Sub
Ajoutez un commentaire indiquant le prix TTC
Ce que fait la macro : Toutes les cellules sélectionnées (elles contiennent un prix hors taxes) reçoivent un commentaire (il apparaîtra dans une infobulle quand vous placerez le pointeur sur les cellules). Cette explication contient le contenu de la cellule, multiplié par 1,196, autrement dit augmenté de 19,6 % (ce qui transforme un prix HT en prix TTC).Préparation : Dans une feuille, sélectionnez une plage de cellules contenant des prix hors taxes. Après exécution de la macro, chaque cellule apparaît avec une petite marque rouge en haut à droite qui indique la présence d’un commentaire.
Sub Taxes ()
Dim TTC As Currency
Dim Cellule As Object
Selection.ClearComments
For Each Cellule In Selection
Cellule.AddComment
TTC = Cellule.Value * 1.196
Cellule.Comment.Text ‘ soit TTC ‘ & Format(TTC, ‘ # 0.00 ‘) Next Cellule End Sub
Insérez une ligne sur deux dans un tableau
Ce que fait la macro : Dans une feuille de calcul, elle insère une ligne blanche entre chacune des lignes du tableau.
Préparation : Ouvrez une feuille de calcul et assurez-vous que le tableau à formater commence en A1.
Sub InsereUneLigneSurDeux()
Dim Ligne As Integer
Range (‘ A1 ‘). Select
Ligne = 1
Boucle: Ligne = Ligne + 2
Rows (Ligne).Select
Selection.Insert Shift:=xlDown
If Ligne < ActiveSheet.UsedRange.Rows.Count Then
GoTo Boucle
End If
End Sub
Sélectionnez toutes les cellules répondant à un critère précis
Ce que fait la macro : Dans une feuille de calcul, elle sélectionne toutes les cellules qui contiennent la même valeur qu’une cellule donnée (la cellule E1 dans notre exemple).Préparation : Ouvrez une feuille de calcul, mettez la valeur de référence en E1 et saisissez un tableau qui commence en A1.
Sub SelectCellulesValeurDonnee ( )
Modele = Range (‘ E1 ‘). Value
Plage = ”
Range (‘ A1 ‘).Select
For Each Cellule In ActiveCell.CurrentRegion
If Cellule. Value = Modele Then Plage = Plage & Cellule. Address () & ‘, ‘
Next Cellule
If Len (Plage) > 0 Then Range (Lef t(Plage, Len (Plage) -1)). Select
End Sub
Eliminez les lignes vides dans un tableau
Ce que fait la macro : Elle supprime, dans toute la feuille, les lignes entièrement vides.Préparation : Ouvrez une feuille contenant un tableau.
Appliquez un formatage conditionnel à six couleurs
Ce que fait la macro : Elle applique, à toutes les cellules sélectionnées, une couleur choisie parmi six, en fonction de la valeur numérique de la cellule, alors que la fonction Formatage conditionnel d’Excel est limitée à trois conditions.Préparation : Ouvrez une feuille de calcul et sélectionnez une plage de cellules contenant des nombres compris entre 1 et 40 (ou modifiez les valeurs limites des ‘ bornes ‘ dans la macro).
Sub Conditionnel ()
For Each Cellule In Selection
Select Case Cellule. Value
Case Is < 11
Cellule. Interior. ColorIndex = 3′ rouge
Case 11 To 15
Cellule. Interior. ColorIndex = 46′ orange foncé
Case 16 To 20 Cellule. Interior. ColorIndex = 45′ orange moyen
Case 21 To 25 Cellule. Interior. ColorIndex = 44′ orange clair
Case 26 To 30 Cellule. Interior. ColorIndex = 27′ jaune
Case Else Cellule. Interior. ColorIndex = 19′ jaune clair
End Select
Next Cellule
End Sub
Formatez une cellule sur trois dans une colonne
Ce que fait la macro : Dans une colonne zone sélectionnée, la macro donne à une cellule sur N (ce nombre est demandé au début) le même format que la première cellule de la sélection.Préparation : Dans une feuille de calcul, donnez à une cellule d’une colonne le format servant de modèle, sélectionnez cette cellule et plusieurs autres dans la même colonne et lancez la macro.
Sub MarquerCellules ()
Dim I as Integer : Dim Frequence as Integer
Selection. Item (1,1). Copy
I = 0
Frequence = CInt(InputBox(‘ Formater une cellule sur : ‘))
For Each Cellule In Selection
If I Mod Frequence = 0 Then
Cellule. PasteSpecial xlPasteFormats
End If
I = I + 1
Next Cellule
End Sub
Lancez une commande à chaque ouverture d’un classeur
Ce que fait la macro : Chaque fois que vous ouvrez le classeur, elle affiche un message ‘ Chiffres provisoires ‘ (cela pourrait être n’importe quelle autre commande).Préparation : Attention, pour que cette macro fonctionne, vous devez obligatoirement la placer dans le dossier ThisWorkBook. Dans le volet de gauche de l’Editeur, cliquez deux fois sur cet élément et saisissez votre code dans le volet de droite.
Sub WorkBook _Open ()
MsgBox (‘Chiffres provisoires’)
End Sub
Dressez la liste des fichiers d’un dossier
Ce que fait la macro : Elle écrit, dans la colonne A de la feuille courante, la liste des fichiers du dossier spécifié (C:MonDossier dans notre exemple, mais vous pouvez en indiquer un autre selon vos besoins).Préparation : Ouvrez ou créez une feuille vierge.
Sub ListeDesFichiers ()
Dim I As Long
With Application. FileSearch
. New Search
. FileType = msoFileTypeAllFiles
. LookIn = ‘ C:MonDossier ‘
. SearchSubFolders = True
. Execute
With. FoundFiles
For I = 1 To. Count
Range (‘ A1 ‘). Offset(I, 0) =. Item (I)
Next I
End With
End With
End Sub
Ajoutez une ligne dans un fichier texte à chaque impression du classeur
Ce que fait la macro : Chaque fois que vous imprimez l’une des feuilles du classeur, la macro écrit, dans un fichier texte (en l’occurrence, le fichier Utilisation. log placé à la racine du disque C) une ligne qui contient le nom de l’utilisateur et la date.Préparation : Attention, pour que cette macro fonctionne, il faut obligatoirement, comme la précédente, la placer dans le dossier ThisWorkBook. Dans le volet de gauche de l’Editeur, cliquez deux fois sur cet élément et tapez votre code dans le volet de droite.
Private Sub WorkBook _ BeforePrint (Annule A s Boolean)