lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il...

8
Soizic Lugon 1EEF Macro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des macros. Cliquer sur enregistrer une macro, la nommer (ici « extraction01 » attention jamais d’espace qu’on en nomme une macro), dès qu’on clique sur ok Excel l’enregistre. Ensuite on va faire ce qu’on voudra que la macro fasse, c’est-à- dire, aller sur filtre avancé, remplir ca : Et après on va cliquer sur le petit carré en bas de l’écran à gauche pour stopper la macro. Si on veut ensuite l’utiliser, on va modifier les données dans le tableau à $. Ensuite on va sous « développements », « macros », et on sélectionne la macro qu’on veut et on clique sur exécuter. On peut créer les boutons sous l’onglet développeur, « insérer » et on clique sous le format bouton. On peut ensuite lui lier une macro. Attention, ne pas oublier d’enregistrer le fichier sous le format avec macro « prenant en charge les macros ». Pour voir les codes aller sous « développeur », « visual basic » tout à droite et ensuite on voit les différentes feuilles. Attention si on veut voir une feuille en particulier, on doit double cliquer dessus. Sinon pour voir la formule, on doit cliquer sur module. « sub end Sub » c’est ce qui crée une macro. Pour créer une nouvelle macro dans le fichier « visual basic », sous « modules » : là on écrit « Sub extraction03 et ensuite on copie colle les autres macro.(l’objectif de cette dernière extraction, c’est qu’elle reprenne toutes les macros à la fois). (Attention quand j’ai fait l’exercice je n’avais fait qu’une macro).

Transcript of lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il...

Page 1: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

Macro et VBA et fonctions

Il faut avoir l’onglet « développeur ».Dans cet onglet on a la sécurité des macros. Cliquer sur enregistrer une macro, la nommer (ici « extraction01 » attention jamais d’espace qu’on en nomme une macro), dès qu’on clique sur ok Excel l’enregistre.Ensuite on va faire ce qu’on voudra que la macro fasse, c’est-à-dire, aller sur filtre avancé, remplir ca :

Et après on va cliquer sur le petit carré en bas de l’écran à gauche pour stopper la macro.Si on veut ensuite l’utiliser, on va modifier les données dans le tableau à $. Ensuite on va sous « développements », « macros », et on sélectionne la macro qu’on veut et on clique sur exécuter.

On peut créer les boutons sous l’onglet développeur, « insérer » et on clique sous le format bouton. On peut ensuite lui lier une macro.

Attention, ne pas oublier d’enregistrer le fichier sous le format avec macro « prenant en charge les macros ».

Pour voir les codes aller sous « développeur », « visual basic » tout à droite et ensuite on voit les différentes feuilles. Attention si on veut voir une feuille en particulier, on doit double cliquer dessus. Sinon pour voir la formule, on doit cliquer sur module. « sub end Sub » c’est ce qui crée une macro.Pour créer une nouvelle macro dans le fichier « visual basic », sous « modules » : là on écrit « Sub extraction03 et ensuite on copie colle les autres macro.(l’objectif de cette dernière extraction, c’est qu’elle reprenne toutes les macros à la fois). (Attention quand j’ai fait l’exercice je n’avais fait qu’une macro).

Page 2: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

Fonction VPM : Cette fonction sert à calculer le montant total de chaque remboursement périodique d'un investissement à remboursements et taux d'intérêt constants.Il ne faut juste pas oublier de mettre le taux/12 dans la formule.

Outil Table de donnéesUne fois que la formule est entrée en B7 ci-dessus, on utilise l’outil « table de données » via l’onglet Donnée, Analyse scénarios et Table de données. Avant cela, il faut sélectionner le tableau (hors titres).

Dans « cellule d’entrée en ligne » on met la période donc B2 car en ligne c’est la période. Dans « Cellule d’entrée en colonne » on met le taux donc B3 car c’est le taux selon le tableau.

Il faut toujours qu’il y ait une formule en B7 car : Attente réponse du prof.

Macro VBA

1.Cette macro sert à effacer des données dans certaines cellules selectionnées. Sub efface_verouillee()' efface_verouillee Macro' Macro enregistrée par fbaechle ActiveSheet.Unprotect ' enlève protection Range("C3:C11").Select ' selection plage Selection.ClearContents ' Range("C3").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=TrueEnd Sub

Page 3: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

2.Cette macro sert à effacer des données de cellules sélectionnées mais il faut connaître le code pour désactiver la protection du fichier.Sub efface_verouillee_psw()' efface_verouillee_password Macro' Macro enregistrée par fbaechle ActiveSheet.Unprotect Password:="11" Range("C3:C11").Select Selection.ClearContents Range("C3").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="11"End Sub

3.Cette macro sert à enlever la protection du fichier, rajouter un au compteur, effacer le contenu des cellules et remettre la protection.Sub efface_compteur()' efface_compteur Macro' Macro enregistrée par fbaechle

' Enlève la protection ActiveSheet.Unprotect

' Variante 01 vCompteur = Range("C1") Range("C1") = vCompteur + 1

' Variante 02 ' Range("C1") = Range("c1") + 1 ' Variante 03 ' [c1] = [c1] + 1 ' efface les cellules Range("C3:C11").Select Selection.ClearContents Range("C3").Select'réactive la protection ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=TrueEnd Sub

Créer une fonction via VBA + voir théorie manuscrite « Devoir 02.04.2015_en classe »

1.Function semaine(date_s) année = Year(date_s) date_premier_an = DateSerial(année, 1, 1) For j = 0 To 6

Page 4: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

date_j = date_premier_an + j jour = Format(date_j, "dddd", vbMonday) If jour = "jeudi" Then date_lun_semaine1 = date_j - 3 If date_s >= date_lun_semaine1 Then Exit For Else date_premier_an = DateSerial(année - 1, 1, 1) j = -1 End If End If Next semaine = 1 + (date_s - date_lun_semaine1) \ 7

End Function

2.Function carré(vnombre)carré = vnombre ^ 2 '"la fonction "carré" renvoie à la valeur de la cellule choisie au carréEnd Function

Fonction VBA volatile, non volatile ainsi que formule et macro

Il s’agit ici de formule, fonction ou macro pour qu’une cellule reprenne le nom de la feuille. Ici, « test ».

Formule : =STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20)

Fonction volatile : se remet à jour automatiquementFunction SheetName() As StringApplication.VolatileSheetName = Application.Caller.Parent.NameEnd function

Fonction non volatile Function SheetName02() As StringSheetName02 = ActiveSheet.Name ' fonction non volatileEnd Function

Macro : Sub SheetName03()[b12] = ActiveSheet.Name ' B12 c'est la cellule dans laquelle on veut que ca apparaisseEnd Sub

Page 5: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

Différentes macros

1.Sub Zero()For Each Cellule In Range("A1:B5")If Abs(Cellule.Value) < 0.05 ThenCellule.Value = 0End IfNextEnd Sub

2. Sub Test()Var = 0For Each Cellule In Range("A1:B3")If IsNumeric(Cellule.Value) = False ThenMsgBox "La plage contient une valeur non numérique."Var = 1Exit ForEnd IfNextIf Var = 0 ThenMsgBox "Tout es OK!"End IfEnd Sub

3. Sub Compte()For compteur = 1 To 200Range("A3").Formula = compteurNextEnd Sub

4. Sub Total()x = 0For i = 2 To 10 Step 2 ' par 2x = x + iMsgBox "Actuel: " & x7 Next i

Page 6: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF

MsgBox "Le total est de " & xEnd SubCette macro nous indique qu’elle commence à deux pour se terminer à 30. A chaque fois un message apparait, à 2, à 6, à 12, à 20, à 30 et ensuite il nous indique que le total est de 30.5. Sub ValeursIdentiques()vNbrvaleurs = 0Set vPlageCherche = Application.InputBox(Prompt:="Sélectionner la plage de recherche", Type:=8)vValCherchée = Application.InputBox(Prompt:="Quelle valeur cherchez-vous?", Type:=1)For Each Item In vPlageChercheIf Item.Value = vValCherchée Then vNbrvaleurs = vNbrvaleurs + 1Next ItemMsgBox "Il y a" & CStr(vNbrvaleurs) & "valeurs identiques"MsgBox "Il y a" & CStr(vNbrvaleurs) & "fois la valeur : " & vValCherchée & "..."End Sub

Cette macro nous sert à voir combien de fois il y une valeur identique. Attention au Type 8 et Type 1.

6. Sub ExerciceZero()

vVal01 = Application.InputBox(Prompt:="Quelle valeur cherchez-vous?", Type:=1)vVal02 = Application.InputBox(Prompt:="Par quelle valeur la remplacer?", Type:=1)

Set vPlage = Application.InputBox(Prompt:="Sélectionner la plage de recherche", Type:=8)

For Each Cellule In vPlageIf Cellule.Value = vVal01 ThenCellule.Value = vVal02End IfNextEnd Sub

Page 7: lucascuderi.comlucascuderi.com/1eef/files/Macro et VBA.docx · Web viewMacro et VBA et fonctions Il faut avoir l’onglet « développeur ». Dans cet onglet on a la sécurité des

Soizic Lugon 1EEF