Formules Excel

  Macro sous Excel

   
Code
Commentaires
 
1)
Sub nom de la macro() Une macro Excel commence toujours par Sub
   
 
2)
End Sub Une macro Excel se termine toujours par End Sub
met fin à la macro
   
 
3)
rem permet de mettre un commentaire
   
 
4)
Msgbox "texte"
V1=1
Msgbox V1
permet d'afficher une boite de dialogue avec un message ou une variable
Exemple : Msgbox "ma 1ere macro Excel 7"
   
 
5)
Selection() Contenu de la cellule en cours (ou cellule active)
Exemple la cellule en cours est B1, B1 contient la valeur 7  alors Selection() = 7
   
 
6)
ActiveCell.Offset(ligne,colonne).
Range("A1").Select
Permet de sélectionner la cellule se trouvant (n lignes) au dessus ou au dessous de la cellule active et (n colonnes) à droite ou à gauche de la cellule active
Exemple la cellule active est B3
ActiveCell.Offset(+2,-1).Range("A1").Select
sélectionnera la cellule 2 lignes en dessous et une colonne
à gauche de la cellule active c'est à dire A5
Exemple la cellule active est D10
ActiveCell.Offset(-3,+2).Range("A1").Select
sélectionnera la cellule 3 lignes au dessus et 2 colonnes
à droite de la cellule active c'est à dire F7
   
 
7)
Utilisation de variable v1="Salut"
Msgbox v1
v2=20
Msgbox v2*3
la cellule A1 est la cellule active
et contient la valeur 5
v3=selection()*6
Msgbox v3
la variable v1 contient l'expression "Salut"
Msgbox v1 affichera dans une boite de dialogue "Salut"
la variable v2 contient la valeur 20
Msgbox v2*3 affichera dans une boite de dialogue 60
Msgbox v3 affichera 30 dans une boite de dialogue
   
 
8)
Condition
If condition then
    Action à réaliser si vrai
Else
    Action à réaliser si faux
Endif
Exemple
If Selection()=10 then
   Msgbox "il y a 10 dans la cellule active"
Else
   Msgbox "tout sauf 10 dans cette cellule"
Endif
   
 
9)
Exit Sub
permet de Quitter la Macro avant la fin
c'est à dire avant le End Sub
   
 
10)
Application.Goto Reference:="RxCy"
x=n° de la ligne à atteindre
y=n° de la colonne à atteindre
Permet d'atteindre une cellule spécifiée et de la sélectionner
Exemple

Application.Goto Reference:="R3C1"
sélectionnera la cellule A3 (colonne 1, ligne 3)
   
 
11)
Instruction de boucle
do While Condition
    Actions à réaliser
Loop
Permet de réaliser une action tant que la condition est vraie
lorsque la condition devient fausse la macro passe à l'instruction qui suit "Loop"
Exemple
I=1
do While I<=3
     Msgbox I // Afichera 1 puis 2 puis 3 et s'arrêtera
     I=I+1 // I Augmente de 1 à chaque tour
Loop
   
 
12)
Goto Etiquette
…..
Etiquette:
Permet d'aller à un endroit particulier de la Macro
Exemple
If selection()="Salut" then Goto Suite
Exit Sub
Suite:
   
 
13)
Selection.ClearContents
Selection.Clear
Supprime le contenu de la cellule sélectionnée
Supprime le contenu et le format de la cellule sélectionnée
   
 
14)
Selection.Font.Bold= true
Selection.Font.Bold= false
Permet de mettre la cellule active en gras (true)
enlever l'option gras (false)
   
 
15)
Selection.Font.Italic= true
Selection.Font.Italic = false
Permet de mettre la cellule active en Italique (true)
enlever l'option Italique (false)
   
 
16)
rem V1 est une variable
rem servant à stocker le résultat de la demande
V1=inputBox("question","titre de la fenêtre",défaut)

défaut=valeur affichée par défaut dans la fenêtre
Stockage de la réponse de l'utilisateur dans une variable.
InputBox ("texte") permet de poser une question à l'utilisateur.
La réponse doit être stockée dans une variable.
Exemple:
rem Age est une variable permettant de stocker la réponse de l'utilisateur.
Age=InputBox("Quel âge as-tu ?","Information",21)
MsgBox "Tu es né(e) en "+2003-Age
   
 
17)
Selection.Copy
Application.CutCopyMode = False
Copie dans le presse papier le contenu de la sélection
Ne plus permettre d'effectuer le collage du presse papier
   
 
18)
Selection.Cut
Copie dans le presse papier le contenu de la sélection et supprime
   
 
19)
ActiveSheet.Paste
Colle dans la cellule active le contenu du presse papier
   
 
20)
ActiveCell.FormulaR1C1="=Formule"

ActiveCell.FormulaR1C1="=A1*2"
ActiveCell.FormulaR1C1="=average(a1:a10)"
ActiveCell.FormulaR1C1="=sum(b1:b5)+A1"
ActiveCell.FormulaR1C1="=max(a1:a10)"
voir la liste des fonctions
Permet d'entrer une formule dans la cellule active
Exemple:
La cellule active est D4, La case C4 contient 10
ActiveCell.FormulaR1C1="=RC[-1]*3"
RC[-1] = Même ligne, 1 Colonne à gauche de la cellule active soit C4
Donc ActiveCell.FormulaR1C1 correspond à C4*3 soit 30
ActiveCell.FormulaR1C1="=Sum(R[-10]C:R[-1]C)"
permettra de faire la somme (Sum) des 10 cellules se trouvant au dessus de la cellule active.
   
 
21)

ActiveCell.Range("A1:A10;C1:C10").select

Range("A1:A10").select
sélection des cellules de A1 à A10
Permet de sélectionner un groupe de cellules.
par rapport à la cellule active
par rapport à la feuille
   
 
22)
Range("e4", [e4].End(Direction)).Select
Direction=xltoLeft, xlToRight, xlDown, xlUp
Selectionner un goupe de cellules, d'une position jusqu'à la fin
Exemple: Range("b10",[b10].End(xlDown)).select
Selectionnera de B10 jusqu'à B65536 (la fin)
   
 
23)
Application.Run Macro:="NomDeLaMacro" Permet dans une macro d'exécuter une autre macro
   
 
N=ActiveSheet.Comments.Count
rem N est le nombre de commentaire dans la feuille en cours
if N>0 then
    Selection.SpecialCells(xlCellTypeComments).Select
    For Each commentaire In Selection
         rem commentaire.Comment.Text ===> contenu du commentaire
        If InStr(1, commentaire.Comment.Text, "abc") > 0 Then
            'si abc trouvé dans commentaire
            rem action à réaliser...
        End If
    Next
End if
Affichage des commentaires
  SELECTION
 
Range("A2:A" & Range("A2").End(xlDown).Row).Select Sélectonner de la cellule A2 jusqu'à la dernière
cellule non vide de la colonne A
Range("A2").End(xlDown).Row donne le numéro de la dernière ligne.
  SELECTION
 
Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column)).Select Sélectonner de la cellule A1 jusqu'à la dernière
cellule non vide de la ligne 1
Cells(1, 1) correspond à la cellule A1 cells(No ligne,No colonne)
Range("A1").End(xlToRight).Column donne le numéro de la dernière colonne.
  FORMULAIRE
 
Me.civilite.List()=Array("Monsieur","Madame")
Remplir une liste déroulante (nommée civilite) d'un formulaire avec Monsieur et Madame
  FORMULAIRE
 
Dim Ws As Worksheet
Set Ws = Sheets("clients")
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
Me.listeclient.AddItem Ws.Range("A" & J)
Next J
Remplir une liste déroulante d'un formulaire (ex:listeclient) avec le contenu
de la colonne A de la feuille : clients
  FORMULAIRE
 
Dim Ws As Worksheet
Set Ws = Sheets("clients")
Me.Controls("nom") = Ws.Cells(3, 1)
Remplir un champ de type texte (nommé nom) d'un formulaire
avec le contenu de la cellule A3 de la feuille : clients
Ws.Cells(3, 1) correspond à la ligne 3, colonne 1 (A3) de Ws (donc de la feuille «clients»)
   
 
Sheets.Count Nombre de feuilles
 
IsNumeric(contenu cellule)
Application.isText(contenu cellule)
savoir si la cellule est numérique
savoir si la cellule est de type texte
   
 
Rows(n).select
Columns(n).select
Selection.Insert(ou delete)
Sélection de la ligne n
Sélection de la colonne n
insertion/suppression ligne ou colonne
   
 
ActiveSheet.Name Nom de la feuille active
   
 
Sheets(N° ou "nom feuille").Activate Activer une feuille
   
 
Sheets(n° ou nom).copy before(after):=Sheets(n° ou nom) Copier une feuille
   
 
Sheets.add before(after):=Sheets(n° ou nom) Ajouter une feuille
   
 
Sheets(n° ou nom).move before(after):=Sheets(n° ou nom) Déplacer une feuille
   
 
Application.DisplayAlerts=false
Sheets(n° ou nom).delete
Supprimer une feuille sans confirmation
   
 
WorkBooks(n° ou nom).Sheets(n° ou nom).Range(plage1,plage2,...).copy
Destination:=WorkBooks(n° ou nom).Sheets(n° ou nom).Range(cellule de destination)
Copier des cellules d'un classeur vers un autre classeur
   
 
Cells.Range("plage de cellules").Find(what:="texte à chercher").Activate Permet de rechercher dans une plage de cellules un texte en particulier
   
 
Selection.Address(RowAbsolute:=False, ColumnAbsolute:=False) Coordonnées de la séléction , si les cellules B3 à C10 sont sélectionnées
le résultat sera : B3:C10
   
 
ActiveCell.Column Colonne en cours
   
 
ActiveCell.Row Ligne en cours
   
 
ActiveCell.ColumnWidth Largeur de la colonne active
   
 
ActiveCell.RowHeight Hauteur de la ligne active
   
 
ActiveCell.Address Coordonnées absolues de la cellule active
sous la forme par exemple $a$1
   
 
ActiveCell.HasFormula

Dans un nouveau module, faire la fonction suivante :
Function AvecFormule(cel as Range) as Boolean
If cel.HasFormula then AvecFormule=True Else AvecFormule=False
End Function
Renvoie True si la cellule contient une formule False dans le cas contraire

Création dans une feuille Excel d'une formule personnalisée
=AvecFormule(A2) - - - - -> renvoie Vrai si la cellule A2 contient une formule.
   
 
ActiveCell.Value Permet de connaître la valeur de la cellule active
   
 
ActiveCell.Value=valeur Permet de remplir la cellule active
exemple :ActiveCell.Value=10 ou ActiveCell.Value="aze"
 
 
ActiveCell.Interior.Color = RGB(0,0,0) Permet de changer la couleur de fond de la cellule
exemple :RGB(0,0,0)=noir, RGB(250,128,114)=saumon
   
 
ActiveCell.Characters.Font.Color=RGB(0,0,0) Permet de changer la couleur du texte de la cellule
exemple :RGB(255,215,0)=Or
   
 
ActiveWorkBook.Name Nom du Classeur actif
   
 
ActiveWorkbook.Path Chemin du Classeur Actif
   
 
WorkBooks.open filename:=
"fichier", UpdateLinks:=0 ou 1
Ouvrir un classeur, Fichier=nom du fichier xls à ouvrir ,
activer les liens=1 ou 0
1= oui, 0= liens non activés
   
 
ActiveWorkbook.SaveCopyAs "chemin + nom de la copie" Permet de sauvegarder une copie du classeur actif
   
 
A placer dans la partie déclaration du module:
Private Declare Function PlaySound& Lib "winmm.dll" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long)
Const SND_ASYNC = &H1
Const MonFichier = "c:/WINDOWS/MEDIA/ringin.wav"

A placer dans votre macro
If PlaySound(MonFichier, 0&, SND_ASYNC) = False Then
      MsgBox "fichier son non trouvé"
End If
Permet jouer un son (format .wav)
   
 
A placer dans la partie déclaration du module:
Private Declare Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long


A placer dans votre macro
Beep 500,400


N.B. 500 correspond à la fréquence de la note jouée, 400 correspond à la durée en milliseconde
Permet jouer un son d'une fréquence donnée et d'une durée donnée
   
 
actif = ActiveWorkbook.Name
For Each classeur In Application.Workbooks
  If classeur.Name <> actif Then
    classeur.Close
  End If
Next
Fermer tous les classeurs sauf le classeur actif
pour ne pas enregistrer en fermant le classeur : classeur.Close SaveChanges:=False
   
 
Set Lc=createObject("scripting.FileSystemObject")
rep=ActiveWorkbook.Path
set dossier=Lc.getFolder(rep)
For each fichier in dossier.files
..........Msgbox fichier.name
Next
Boucle de parcours de tous les fichiers d'un repertoire
   
 
Set obj=createObject("scripting.FileSystemObject")
rep=ActiveWorkbook.Path
newrep = rep & "/gab"
If obj.FolderExists(newrep) Then
MsgBox "existe"
Else
obj.CreateFolder (newrep)
MsgBox "répertoire crée !"
End If
Permet de créer un repertoire (s'il n'existe pas)
 
For i = 1 To Sheets.Count
    For j = i To Sheets.Count
       If Sheets(j).Name < Sheets(i).Name Then
           Sheets(j).Move before:=Sheets(i)
       End If
    Next
Next
Boucle permettant de trier les onglets de façon croissante
   
 
Application.ActiveWorkbook.Sheets("nom_onglet_dialogue").Show Affichage d'une boite de dialogue du classeur actif
   
 
Application.ActiveWorkbook.Sheets("nom_onglet_dialogue").Hide Masquer la boite de dialogue
   
 
Dim plg As Range
Set plg = Application.InputBox("S'lection d'une plage", , , , , , , 8)
MaSelection = plg.Address
Range(MaSelection).Select

Permet à un utilisateur de selectionner une plage
   
 
For Each cell In Selection()
MsgBox cell.Value
Next
Permet d'analyser le contenu de chaque cellule dans la sélection
   
 
coul = Application.Dialogs(xlDialogEditColor).Show(A, rouge, vert, bleu)
A=1 (mode standard), A=2 (mode personnalisé)
pour avoir du rouge: rouge=255 vert=0 bleu=0
coul=vrai si bouton OK
Permet d'ouvrir la boite de dialogue couleur

©2025 réalisation : G. Fairfort | Mentions Légales