[VBA] Utiliser du code plusieurs fois ?

beegees

XLDnaute Occasionnel
Bonjour tout le monde,

J'ai ce code VBA :

Code:
Public Function Annexes_Bacheliers()
Dim ValSQL As String
Dim Numéro
'La déclaration Numéro va nous servir pour connaître le numéro de matricule.
Dim bds As DAO.Database, rst As DAO.Recordset
Dim appexcel As Excel.Application

Dim wbexcel As Excel.Workbook
Dim rqtPharma11998 As String
Dim Errormsgbox As String
Dim lngEtudiants As Long
Dim SESSION As String 'pour éviter de devoir indiquer la session dans chaque ligne de la table access !!!
Dim Effacer_REUS As Boolean

Effacer_REUS_BA1 = False
Effacer_REUS_BA2 = False
Effacer_REUS_BA3 = False

'je ferme toutes les requêtes ouvertes avant de commencer la programmation
For Each req In CurrentDb.QueryDefs
    DoCmd.Close acQuery, req.Name, acSaveYes
Next req


On Error GoTo TraitementErreur

    'Voici la programmation de la boite servant à demander le numéro de matricule:

Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
    Set wbexcel = appexcel.Workbooks.Open("C:\Users\David\Documents\All Annexes\Bacheliers\2007-2008/Canevas Bacherliers 2007_2008.xlsm", ReadOnly:=True)
    
    'appexcel.Application.ScreenUpdating = False
    
 ValSQL = "SELECT * FROM [rqt_Annexes_Bacheliers] WHERE Nombre_annees = '3' ORDER BY [Nom]"
 
 
 'j'ai créé une requête nommée Nbde3 qui compte le nombre d'étudiatns ayant fait 3 ans chez nous, cette informatio
 'sera utilisée plus bas dans le for f = 1 to nombre.
  'Dim NbElement As Integer
'nombre = DCount("*", "[rqt Annexes Bacheliers 07-08]", "[nbAnnee]='3'")
'vue qu'il y'a 5 sheets, je multiplie par 5
nombre = 18
nombre = nombre * 3
  

'Donc en décrypter la requêt sélectionne dans la requête pharma 1 1998, l'enregistrement qui as
'le numéro de matricule correspondant au numéro taper.

'code qui permet de lancer la requête
Set bds = CurrentDb
Set rst = bds.OpenRecordset(ValSQL)

'Ensuite nous allons se placer sur le premier enregistrement sélectionner par la requête:

rst.MoveFirst

While Not rst.EOF
Dim f As Single 'compteur de feuille
Dim feui As String 'nom de la feuille excel

For f = 1 To 159

feui = "Feuil" & f

'On appelle la fauille du fichier ouvert:

appexcel.Sheets(feui).Select

appexcel.Sheets(feui).PageSetup.CenterFooter = "&""Arial,Gras""&9" & rst![Nom] & " " & "-" & " " & rst![Matricule]
appexcel.Sheets(feui).PageSetup.LeftFooter = "&""Arial,Gras""&9" & "ULB - INSTITUT DE PHARMACIE"
appexcel.Sheets(feui).PageSetup.RightFooter = "&""Arial,Gras""&9" & "Bachelier en Sciences Pharmaceutiques 9/11"


appexcel.Sheets(feui).Name = Left(rst![Nom], 12) & " " & appexcel.Sheets(feui).PageSetup.Zoom

Dim s As Integer
s = 4

'Informations personnelles
appexcel.Cells(s, 1) = rst![Nom] & " s'est vu conférer le " & rst![DatedeproclamationBA3] & " le grade académique de Bachelier en Sciences Pharmaceutiques , après réussite des épreuves ayant porté sur les matières suivantes :"
Dim longueur_nom_prenom As Integer
'If rst![Prenom] <> "" Then
 '   longueur_nom_prenom = Len(rst![Prenom])
'End If
longueur_nom_prenom = 0
longueur_nom_prenom = longueur_nom_prenom + Len(rst![Nom]) + 1
appexcel.Cells(s, 1).Characters(1, longueur_nom_prenom).Font.Bold = True
longueur_nom_prenom = longueur_nom_prenom + 22
'longueur_nom_prenom = longueur_nom_prenom + 1
appexcel.Cells(s, 1).Characters(longueur_nom_prenom, Len(rst![DatedeproclamationBA3])).Font.Bold = True
longueur_nom_prenom = longueur_nom_prenom + Len(rst![DatedeproclamationBA3]) + 24
appexcel.Cells(s, 1).Characters(longueur_nom_prenom, 37).Font.Bold = True

    s = s + 8

J'aimerais écrire ce code une seule fois et l'utiliser dans plusieurs modules.

Est-ce possible ?

Cela me permettrait de devoir faire les modifications une seule fois pour tous les modules.

Merci d'avance.

beegees
 

sigismond

XLDnaute Occasionnel
Re : [VBA] Utiliser du code plusieurs fois ?

Bonjour à tous et à toi beegees.

Au lieu de recopier le code dans tes n modules devant l'utiliser,
fais n fois un appel à ta fonction, cela s'appelle la programmation modulaire.:D

Il faudra quand même contrôler la portée des variables et le passage de paramètres.

Bonne chance.

Sigismond
 

Discussions similaires

Réponses
8
Affichages
641

Statistiques des forums

Discussions
312 095
Messages
2 085 250
Membres
102 837
dernier inscrit
CRETE