Passer au contenu

Elaborer des macros évoluées

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.


Sub SupprimerLignesVides ()


Dim Derniere As Long


Dim Ligne As Long


Dim CellulesOccupees As Integer


Derniere = ActiveSheet. UsedRange. Rows. Count


Application. ScreenUpdating = False


Ligne = Derniere


For Ligne = Derniere To 1 Step -1


CellulesOccupees = Application. CountA(Rows (Ligne))


If CellulesOccupees = 0 Then Rows (Ligne). Delete


Next Ligne


End Sub

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)


Open ‘ C:Utilisation. log ‘ For Append A s # 1


Print # 1, Application. UserName, Now


Close # 1


End Sub

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Etienne Oehmichen