19
Université d’Oum El Bouaghi, Algérie Faculté des sciences de la terre et de l’architecture Prof. Adad Mohamed Chérif Domaines d’intérêt: Architecture, urbanisme, VBA, SPSS et électronique pratique. 2017

Notice bibliographique pour les doctorants chercheurs en VBA sous Excel

Embed Size (px)

Citation preview

Université d’Oum El Bouaghi, AlgérieFaculté des sciences de la terre et de l’architecture

Prof. Adad Mohamed ChérifDomaines d’intérêt:Architecture, urbanisme, VBA, SPSS et électronique pratique.

2017

Notice bibliographique

Elle est destinée pour sauvegarder et repérer lesréférences bibliographiques d’une recherche (thèse ouarticle). Il est ainsi possible d’accéder à ces données quiont servi à développer la problématique d’une manièretrès rapide, sans risquer de les perdre.

C’est le formulaire qui va jouer d’interface ente le chercheur et la base de données représentée par les différents types de références . Quatre types de références :

Revues Livres ou ouvrages Sitologie Thèses et mémoires

Pour réaliser ce formulaire, appelé en anglais userform, on fait appel au langage de programmation le VBA (Visual Basic). Cependant, pour atteindre cet objectif, le VBA est un prérequis nécessaire.

Comme on peut le voir sur le formulaire 4 types de références ( Revue, livre, Site Internet, Thèse-Mémoire) dont chacune est saisie indépendamment de l’autre. On va se concentrer sur l’explication d’un seul type de référence, la revue. Les autres sont conçus selon le même principe .

Contrôles pour « revue »

Zone de saisie pour les revues

Compteur

Passons à l’explication de la zone de saisie de la référence « revue » et ses contrôles

Zone de recherche par auteur . L’auteur est la référence par laquelle on obtient toutes les données relatives à la revue concernées,

On valide lesdonnéessaisie dans leformulaire

Une fois lesdonnées saisies,il est possible deles voir dans labase qui n’estautre que lafeuille excel

Une fois lesdonnées saisies, ilest possible de lesvoir dans leformulaire.

Il est possible d’effacer le contenu de la base contenue dans les feuilles excel

Les zones de saisie des références de la revue en question

Le nombre de revues déjà dans la base

Base de données dans la Feuill1 « Données_revue ». Toutes les données saisies dans l’userform sont sauvegardées ici . Dans la ligne 1 , sont indiquées les données de la revue (Nom de l’auteur, titre, nom de la revue etc…..) . Aussi, dans la cellule H2 figure le nombre de références .

La feuille réservée pour les données de la revue

Bases des données des autres types de références

On accède directement au formulaire par le biais de ce bouton « Ouvrir le formulaire »

Compteur

Feuille où on stocke les données pour impression

1-Visual Basic2- Userform

1ère étape

TextBox1

TextBox2TextBox3

TetBox4

TextBox5

TextBox6

TextBox7

ComBobox 1

Valider

Voir les données

TextBox28 2ème étape: confection du formulaire- label, textbox, combobox1, commandbutton, la couleur. On fait toujours référence à la fenêtre « Propriétés » pour le choix de la couleur de fond du formulaire, des labels, des textbox , de la taille des caractères et leurs couleurs etc…

3ème étape: apparence finale

Passons maintenant aux différentes procédures en VBA sous Excel

A l’aide du Bouton « Ouvrir le formulaire » on accède directement au formulaire à partir des feuilles. Il faut mettre cette procédure dans un « module »

Private Sub ouvrir()

‘ Accéder directement au formulaire

UserForm1.Show 0 ‘Userform1 est le formulaire

End Sub

On peut accéder directement au formulaire sans passer par Excel , par exemple à partir du bureau. Pour se faire dans le ThisWorkbook , on crit ce code.

Private Sub Workbook_Open()UserForm1.Show 0End Sub

Aussi……..

' BOUTON VALIDER "DONNÉES_REVUE"Private sub commandbutton2_click()

Dim derligne as integer

If msgbox ("confirmez-vous l'ajout des données?", vbyesno, "confirmation") = vbyes thenderligne = worksheets ("données_revue").range(« A1000").end(xlup).row + 1

‘ Derligne : dernière ligne inoccupée de la colonne dans la feuil de données...

'...ligne après une ligne en remontant de 1000 à la dernière ligne non vide et en ajoutant une ligne

' Textbox1 destiné à héberger le nom et le prénom de l’auteur .

Worksheets ("données_revue").cells(derligne, 1) = textbox1.value ‘nom et prénomif worksheets ("données_revue").cells(derligne, 1) = "" then

msgbox " svp, veuillez saisir le nom et prénom de l'auteur", vbok + vbcritical: exit subelse

Worksheets ("données_revue").cells(derligne, 2) = textbox2.value ‘ titreWorksheets ("données_revue").cells(derligne, 3) = textbox3.value ‘ titre de la revueWorksheets ("données_revue").cells(derligne, 4) = textbox4.value ‘ annéeWorksheets ("données_revue").cells(derligne, 5) = textbox5.value ‘ pageWorksheets ("données_revue").cells(derligne, 6) = textbox6.value ‘ mots clefsWorksheets ("données_revue").cells(derligne, 7) = textbox7.value ‘ cote de rangement

Textbox28.value = derligne - 1 ' indique le nombre de références dans la feuille "données_revue"Worksheets("données_revue").cells(2, 8) = textbox28.value

End ifEnd if

'effacer les données après appuyer commandbutton2Textbox1.value = "" 'nom et prénomTextbox2.value = "" 'titreTextbox3.value = "" 'titre de la revueTextbox4.value = "" 'année"Textbox5.value = "" 'pagesTextbox6.value = "" 'mots clefsTextbox7.value = "" 'cote de rangement

End sub

Les données de l’article sont saisies dans les textBox puis transmises vers les cellules (Cells) de la feuille (Worksheets) « données_revue » après validation. « Bouton valider »

'Bouton « Voir les données" , c’est le transfert des données qui correspondent à la référence présentée au ComboBox1, des cellules de la feuille « données_revue" vers les textbox.Private Sub CommandButton1_Click()

' Commandbutton1 est la touche « Voir les données "'chercher les données d'un nom saisi qui apparait dans comboBox1 des cellules de la feuille "données_revue" vers les TextBox'chaque donnée est saisie de la cells puis apparait dans chaque Textbox'la liste déroulante montre toutes les données de A1 à A1000'cliquer sur combobox1 puis sélectionner les données dans la colonne A (nom et prénom)puis écrire "données!A1:A1000" dans' "rowsource" dans la fenêtre "Propriétés" .

Dim no_ligne As Integerno_ligne = ComboBox1.ListIndex + 1 'compte le nombre de lignes occupées dans la colonne ‘A ‘, il varie entre 1 aux nbres de noms

dns le combobox1 If ComboBox1.Value = "" Then ‘si le combobox est vide alors il faut remplir le champ

MsgBox ("Veuillez remplir le champs de la recherche!")Else

TextBox1.Value = Worksheets("données_revue").Cells(no_ligne, 1).Value 'nom et prénomTextBox2.Value = Worksheets("données_revue").Cells(no_ligne, 2).Value 'TitreTextBox3.Value = Worksheets("données_revue").Cells(no_ligne, 3).Value 'Titre de la revueTextBox4.Value = Worksheets("données_revue").Cells(no_ligne, 4).Value 'AnnéeTextBox5.Value = Worksheets("données_revue").Cells(no_ligne, 5).Value 'PagesTextBox6.Value = Worksheets("données_revue").Cells(no_ligne, 6).Value 'Mots clefsTextBox7.Value = Worksheets("données_revue").Cells(no_ligne, 7).Value 'Cote de rangement

'données envoyées de la feuille1 données_revue à la feuille2 (Revue_impr) pour impression

Worksheets("revue_impr").Cells(9, 3) = Worksheets("données_revue").Cells(no_ligne, 1).Value ' nom et prénomWorksheets("revue_impr").Cells(10, 3) = Worksheets("données_revue").Cells(no_ligne, 2).Value 'TitreWorksheets("revue_impr").Cells(11, 3) = Worksheets("données_revue").Cells(no_ligne, 3).Value 'Titre de la revueWorksheets("revue_impr").Cells(12, 3) = Worksheets("données_revue").Cells(no_ligne, 4).Value 'AnnéeWorksheets("revue_impr").Cells(13, 3) = Worksheets("données_revue").Cells(no_ligne, 5).Value 'PagesWorksheets("revue_impr").Cells(14, 3) = Worksheets("données_revue").Cells(no_ligne, 6).Value 'Mots clefsWorksheets("revue_impr").Cells(15, 3) = Worksheets("données_revue").Cells(no_ligne, 7).Value 'Cote de rangement

End IfEnd Sub

'Bouton "Modifier" les données_ dans « données_revue » en cas d’erreur de saisie Private Sub CommandButton4_Click()Dim no_ligne As Integer

' Combobox: la recherche effectuée sur les nomsno_ligne = ComboBox1.ListIndex + 1 'compteur, la 1ère entrée commence par l'index 1 qui est le n° de ligne2

If ComboBox1.Value = "" ThenMsgBox ("Veuillez remplir le champs de la recherche!")Else

Worksheets("données_revue").Cells(no_ligne, 1) = TextBox1.Value 'nom et prénomWorksheets("données_revue").Cells(no_ligne, 2) = TextBox2.Value 'TitreWorksheets("données_revue").Cells(no_ligne, 3) = TextBox3.Value 'Titre de la revueWorksheets("données_revue").Cells(no_ligne, 4) = TextBox4.Value 'AnnéeWorksheets("données_revue").Cells(no_ligne, 5) = TextBox5.Value 'PageWorksheets("données_revue").Cells(no_ligne, 6) = TextBox6.Value 'Mots clefsWorksheets("données_revue").Cells(no_ligne, 7) = TextBox7.Value 'Cote d'arrangement

End If

‘Effacer les données après avoir appuyé sur commandButton2TextBox1.Value = "" 'nom et prénomTextBox2.Value = "" 'TitreTextBox3.Value = "" 'Titre de la revueTextBox4.Value = "" 'Année TextBox5.Value = "" 'PagesTextBox6.Value = "" 'Mots clefsTextBox7.Value = "" 'Cote d'arrangement

End Sub

‘ Effacer les données dans la feuille "données_revue " (Base de données)

Private Sub CommandButton32_Click()Dim dr As Integer, i As Integer, j As IntegerIf MsgBox("voulez-vous effacer toutes les références?", vbYesNo, "Confirmation") = vbYes Then

dr = Sheets("données_revue").Range("A1000").End(xlUp).Row + 1For i = 2 To dr

For j = 1 To 7 ‘ 7 est le nombre de colonneWorksheets("données_revue").Cells(i, j).Value = ""

Next j

Next i

End IfEnd Sub

'Subroutine supprimant le contenu de la dernière série de données de feuille "données_revue"

Private Sub Cmeffacer_Click()dr = Sheets("données_revue").Range("A1000").End(xlUp).Row

‘ 7 est le nombre de colonnes dans ce casFor j = 1 To 7

Worksheets("données").Cells(dr, j).Value = ""Next j

End Sub

' Aperçu avant impression de la « Données_revue » , le données sont stocker provisoirement dans la feuille « Revue_impr »

Private Sub CommandButton8_Click()

Application.ScreenUpdating = False

UserForm1.Hide

Sheets("Revue_impr").PrintPreview

Application.ScreenUpdating = True

UserForm1.Show

End Sub

‘Impression des données de « Données_revue »

Private Sub CommandButton9_Click()

Sheets("Revue_impr").PrintOut ' impression directe

End Sub

Procédures communes

Les procédures qui suivent sont communes pour tout le code de cette application.

‘ 2-Procédure se met en fonction dès l’ouverture du code

Private Sub userform_initialize()TextBox20.Value = Format(Date, "dd/mm/yyyy") 'date d'aujourd'hui

' Remplir comboBox5

With ComboBox5.AddItem "Thèse".AddItem "Mémoire "

End With

TextBox28.Value = Worksheets("données_revue").Cells(2, 8)TextBox29.Value = Worksheets("données_livre").Cells(2, 10)TextBox30.Value = Worksheets("données_site_internet").Cells(2, 6)TextBox31.Value = Worksheets("données_thèse_mémoire").Cells(2, 6)

End Sub

‘ 3- Masquer les classeurs et quitter l’application

Private Sub CommandButton3_Click()

UserForm1.Hide ‘ Cacher le formulaire ActiveWorkbook.SaveApplication.Quit ‘Quitter complétement Excel

End Sub

Le compteur des références

Prof. Adad Mohamed Chérif