Bonjour tout le monde,
J'ai ce code VBA :
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
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