SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
1
Explication du code VBA utilisé dans le tutoriel
Créer un formulaire personnalisé pour saisir des données sur Excel
Suite aux nombreuses questions qui ont suivi après la publication du tutoriel Créer un
formulaire personnalisé pour saisir des données sur Excel, j’ai décidé de réaliser une sorte de
suite afin d’expliquer le code utilisé.
Je n’avais pas expliqué le code lors de ce tutoriel, car c’était ma première expérience du langage
VBA et j’ai donc testé différentes choses jusqu’à arriver au résultat escompté, mais sans
vraiment savoir pourquoi. J’ai commencé à l’apprendre grâce à l’élaboration de ce cours, puis
des commentaires qui ont suivi. Désormais, la création de formulaire ou autre en langage VBA
fait partie des prestations que je propose. Si vous n’avez aucune connaissance en VBA, je vous
conseille fortement de commencer par un tutoriel tel que celui de la création d’un formulaire
de saisie de coordonnées afin de vous mettre le pied à l’étrier :).
Je vous rappelle que le code VBA utilisé dans le tutoriel en question se trouve chez Excel-Plus
puisqu’il s’agit d’un article invité. À la fin de ce dernier, vous pouvez copier-coller le code pour
n’avoir aucune erreur.
Pour suivre ces explications, je vous invite à vous rendre dans la fenêtre Visual Basic dans
l’onglet Développeur (si vous ne savez pas comment l’afficher, je vous invite à revoir le début
du tutoriel de création) > Visual Basic .
Explication du code de l’UserForm1 :
Dans la fenêtre de l’Explorateur de projet (si elle n’apparaît pas, cliquez sur
Affichage > Explorateur de projets ou faites Ctrl + R), vous avez par défaut un dossier
Microsoft Excel Objets qui contient tous vos onglets et ThisWorkbook. Si vous souhaitez créer
une action sur double-clic d’une cellule dans un de vos onglets, vous écrirez le code dans
l’onglet correspondant, si vous souhaitez pouvoir effectuer cette action dans n’importe quel
onglet, vous l’écrirez dans ThisWorkbook qui peut être aussi utilisé pour faire une action à
l’ouverture d’un fichier comme nous l’avons fait dans le tutoriel Créer un message d’alerte à
l’ouverture d’Excel.
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
2
Dans notre exemple, nous avons ensuite ajouté un UserForm et un Module. Les premiers se
trouvent toujours dans un dossier nommé Feuilles et les seconds dans un dossier nommé
Modules.
Cliquez droit sur UserForm1 de l’Explorateur de projets > Code. J’avais placé un
commentaire devant chaque évènement tel que l’initialisation du formulaire (son ouverture), le
changement au niveau de la ComboBox et les clics sur les différents boutons. Ces commentaires
sont en vert et commencent toujours par une apostrophe (‘), c’est-à-dire que tout ce qui se trouve
derrière une apostrophe ne sera jamais interprété dans votre code. Si vous voulez retirer une
action temporairement, au lieu de l’effacer, vous pouvez tout simplement la mettre en
commentaire.
Je n’avais pas modifié les noms des différents contrôles (ComboBox1, TextBox1…), mais si
vous le faites n’oubliez pas de le modifier dans l’userform et dans le code.
Mon code commence par Option Explicit ce qui veut dire que je vais devoir déclarer toutes mes
variables. De cette manière, si vous ne déclarez pas une variable, le mode débug que nous allons
voir juste après, vous le signalera et vous évitera de découvrir des erreurs une fois que votre
programme sera terminé et qu’il contiendra énormément de données. Si cette ligne vous gêne
ou que vous l’oubliez régulièrement, vous pouvez vous rendre dans le menu Outils > Options
et cocher la case Déclaration des variables obligatoire dans l’onglet Éditeur :
Cette case sera cochée par défaut pour tous vos nouveaux projets.
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
3
Il est ensuite suivi de Dim Ws As Worksheet qui est une déclaration de variable que j’aurais pu
placer après Private Sub UserForm_Initialize(). Mais une déclaration de variable doit toujours
se trouver avant l’utilisation de son nom. Cette déclaration va me servir à utiliser mon onglet
Clients.
Private Sub UserForm_Initialize() :
À l’ouverture du formulaire, j’ai déclaré J et I comme étant des valeurs numériques. Je peux
donner n’importe quel nom à une variable. Un nom, que ce soit de variable ou de macro, peut
contenir des lettres minuscules ou majuscules et des chiffres, mais pas d’espaces, de points, de
virgules, de traits d’union ou de slashs (évitez les accents) qui seraient mal interprétés par Excel.
En clair, restez simple.
ComboBox2.ColumnCount = 1 indique qu’il n’y aura qu’une colonne dans la ComboBox2. Si
j’avais souhaité avoir 2, 3, 4 colonnes, il aurait fallu écrire les items de la première colonne,
puis la deuxième, etc. pour avoir une liste déroulante du même type que nous avons réalisé dans
le tutoriel sur la facturation avec Access.
ComboBox2.List() = Array("", "M.", "Mme", "Mlle") permet de spécifier les données à afficher
dans la ComboBox2. Faites attention à la méthode utilisée pour vos formulaires : si les données
n’ont pas besoin d’être modifiées et ne sont pas nombreuses, vous pouvez utiliser la méthode
Array, mais dans le cas où les données sont amenées à changer souvent, il est préférable qu’elles
soient accessibles à une personne novice en VBA et qui pourra les modifier dans son classeur
Excel grâce à la méthode AddItem qui suit. Ici, nous avons, la possibilité de ne rien afficher ou
de choisir M., Mme ou Mlle.
Set Ws = Sheets("Clients") me permet d’attribuer une valeur à la variable que j’ai déclarée plus
haut, à savoir que Ws ne traitera que de l’onglet Clients (modifiez-le si vous renommez vos
onglets).
Nous avons ensuite un bloc d’instruction qui contient une boucle qui indique que dans la
ComboBox1, nous voulons récupérer à partir de la 2e
ligne (la première étant la ligne de titre)
toutes les cellules se trouvant dans la colonne A de l’onglet Clients. Cette méthode est préférable
à Range("A65536") que nous allons voir juste après, car ici nous allons partir de la dernière
cellule de l’onglet qui était la 65 536e
sur les versions antérieures à 2007, mais a augmenté
depuis, puis nous remontons jusqu’à la première cellule non vide. End(xlUp) est préférable, car
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
4
si nous partions du haut et qu’une cellule était vide dans le tableau, le programme ne prendrait
pas en compte les suivantes. Comme il s’agit d’une boucle, si vous lancez le mode débug, vous
verrez que l’action se répète le nombre de fois nécessaire pour afficher tous les items (ici, 20 fois
pour les 20 lignes du tableau).
En réalisant ce tutoriel, je me suis aperçue que certaines choses n’étaient pas nécessaires dans
mon code comme :
For I = 1 To 7
Me.Controls("TextBox" & I).Visible = True
Next I
Il s’agit d’une boucle pour les 7 TextBox (d’où l’intérêt de modifier ce chiffre si vous en ajoutez
ou supprimez) qui va les rendre visibles… Or, elles sont, par défaut, visibles. Par la même
occasion, la déclaration de I n’est plus indispensable.
Donc si ce code était à refaire, je supprimerais cette boucle ainsi que
ComboBox2.ColumnCount = 1 puisqu’une ComboBox contient par défaut au moins une
colonne et je supprimerais également le Me. dans With Me.ComboBox1 puisque la ComboBox1
est dans ce même formulaire.
Private Sub ComboBox1_Change() :
Sur changement de la ComboBox1, les données vont se mettre à jour dans les autres contrôles
du formulaire. Je déclare Ligne et I comme étant des valeurs numériques.
If Me.ComboBox1.ListIndex = -1 Then Exit Sub permet de sortir de la procédure dans le cas où
vous ne sélectionnerez aucun numéro client.
Ligne est égale à la ligne de la ComboBox1 (si vous modifiez + 2 en + 1 ou + 3, vous verrez
qu’il y a un décalage au niveau des données affichées).
ComboBox2 = Ws.Cells(Ligne, "B") va ensuite récupérer les données de la ligne en cours à la
colonne B (vous remarquerez que je n’ai pas eu besoin de déclarer à nouveau Ws, car il n’est
pas dans un Private sub contrairement à I que j’ai dû déclarer de nouveau).
Je fais ensuite une boucle sur toutes les TextBox (7) pour récupérer toutes les données dans
chaque contrôle. Chaque contrôle (du 1er
au 7e
) sera égal à sa ligne et sa colonne dans l’onglet.
Je n’ai pas créé de boucle pour la ComboBox2 puisqu’il n’y avait qu’une ComboBox.
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
5
On peut faire en sorte que notre liste déroulante se mette à jour lorsque l’on ajoute un numéro
client, mais comme l’action devra être utilisée après confirmation de l’ajout d’un client, on va
l’ajouter dans l’évènement suivant.
Private Sub CommandButton1_Click() :
Sur clic du bouton CommandButton1, je vais ajouter un contact. Pour cela, je déclare L comme
étant une valeur numérique dont je donne la valeur juste après, à savoir que c’est la dernière
cellule de la colonne A de l’onglet Clients + 1, c’est-à-dire que je me place après la dernière
cellule non vide. Comme indiqué plus haut, je remplacerais "a65536" par "A" & Rows.Count
qui signifie exactement la même chose, mais qui pourra être transposable d’un ordinateur à un
autre s’ils n’ont pas les mêmes versions.
J’ajoute ensuite une condition grâce à la fonction If qui est si je réponds Oui à mon MsgBox
qui est une boîte de dialogue qui me demandera Confirmez-vous l’insertion de ce nouveau
contact ?, qui contiendra les boutons Oui et Non et qui aura pour titre Demande de confirmation
d’ajout, alors on va effectuer l’action qui se trouve, ici, avant End If.
Personnellement, je rajouterais :
Else
' Rien ou Exit Sub (puisque de toute façon l’instruction est terminée après)
avant End If pour plus de clarté, mais ça fonctionne quand même sans.
Si je réponds Oui alors ma ComboBox1 va recopier sa valeur dans la colonne A à la dernière
ligne non vide + 1, ComboBox2 va recopier dans B et ainsi de suite. Faites attention à l’ordre :
c’est toujours la destination qui est égale au départ. L’ordre des propriétés n’a pas d’importance,
mais les noms de TextBox et de colonnes oui.
Si vous souhaitez mettre à jour la liste déroulante après ajout, ajouter le code suivant :
Dim J As Long
Dim I As Integer
ComboBox1.Clear
Set Ws = Sheets("Clients") ‘Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
6
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
Ce code correspond au même code que celui de la liste déroulante à l’ouverture avec
ComboBox1.Clear. Ce dernier est important, car à la confirmation, la liste des codes client va
être rechargée, or si elle n’est pas vidée (Clear), à chaque nouvel ajout, vous aurez votre liste
précédente + la nouvelle liste, donc plein de doublons.
Private Sub CommandButton2_Click() :
Sur clic du bouton CommandButton2, je veux mettre à jour les données existantes. Pour cela,
je déclare une nouvelle fois Ligne et I comme étant des valeurs numériques et je crée une boîte
de dialogue Oui/Non qui déclenchera l’action si je clique sur Oui. Le code est quasiment
similaire à celui du changement de liste déroulante donc je le simplifie en retirant If
Me.Controls("TextBox" & I).Visible = True Then suivi de son End If puisque les TextBox sont
toutes visibles.
Ici aussi, on peut ajouter :
Else
' Rien ou Exit Sub
avant End If.
Private Sub CommandButton3_Click() :
Sur clic du bouton CommandButton3, le formulaire en cours (Me) va être déchargé, c’est-à-dire
fermé, ce qui libère par la même occasion la mémoire du programme.
Retirer la saisie semi-automatique d’une ComboBox sur Excel :
Par défaut, une ComboBox possède la saisie semi-automatique, il s’agit de la propriété
MatchEntry. Cela est très pratique lorsque vous avez une liste de noms de clients par exemple
pour les retrouver facilement, mais, dans ce tutoriel, la ComboBox1 servait à saisir un numéro
client et, forcément, la saisie fait appel aux données déjà enregistrées si l’on commence par un
chiffre déjà attribué.
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
7
Pour modifier cette propriété, cliquez sur la ComboBox1 en mode Afficher l’objet (clic droit sur
l’UserForm1 dans l’Explorateur de projets) et, dans le panneau Propriétés, recherchez la
ligne MatchEntry et sélectionnez l’option qui vous intéresse :
 0 - fmMatchEntryFirstLetter : affiche le premier item de la liste commençant par la lettre
saisie et si l’on appuie sur la lettre, sur le clavier, de manière répétée, les autres items de la
liste commençant par cette lettre s’affichent successivement ;
 1 – fmMatchEntryComplete : affiche une première suggestion qui peut être modifiée au
fil de la saisie ;
 2 – fmMatchEntryNone : pas de saisie semi-automatique.
Cette propriété peut être ajoutée via le code en ajoutant cette ligne dans l’initialisation du
formulaire par exemple (le code remplace la propriété) :
ComboBox1.MatchEntry = fmMatchEntryNone
Attention : cette propriété ne fonctionne pas sur Mac et provoque une erreur.
Explication du code du Module1 :
Ce module est une macro créée dans le but d’appeler le formulaire de saisie. Celle-ci débute
par Sub et se termine par End Sub. Dans cet exemple, j’avais appelé cette macro
Lancer_formulaire. C’est ce nom que vous retrouverez dans l’onglet Développeur > Macros.
Il est également possible de créer un bouton sur votre fichier Excel pour lancer ce formulaire si
vous ne souhaitez pas passer par un raccourci. Pour cela, créez une forme soit en passant par
l’onglet Développeur > Insérer > Bouton ce qui ouvre la boîte de dialogue des macros
directement, mais n’offre pas la possibilité de personnaliser le bouton en terme de forme ou de
couleur, soit en passant par l’onglet Insertion > Formes (le bouton pourra être
modifié avec l’onglet Format) puis en cliquant droit dessus > Affecter une macro…. Une fois
que la boîte de dialogue des macros est ouverte, il vous suffit de sélectionner la macro
correspondante au lancement du formulaire.
UserForm1.Show affiche le formulaire UserForm1. Étant donné que je n’avais pas changé le
nom du formulaire, c’est donc le nom de base, les formulaires suivants seraient UserForm2,
UserForm3… sauf si vous les renommez.
Votre Assistante : http://www.votreassistante.net - le 16/06/2015
Article écrit par Lydia Provin du blog
Votre Assistante : http://www.votreassistante.net
8
vbModeless permet d’ouvrir le formulaire en non modal, c’est-à-dire que vous pourrez cliquer
en dehors du formulaire, contrairement à vbModal où un clic en dehors du formulaire est
impossible tant que celui-ci est ouvert. vbModal n’est pas utile à écrire puisque c’est le
fonctionnement pas défaut.
Enfin, vous pouvez parfois avoir une erreur d’exécution sur la ligne affichant le formulaire dans
le module. Si le nom de votre formulaire est bien saisi, le problème vient surement de
l’initialisation du formulaire dans le code de l’Userform.
Utilité du mode débogage :
Le mode débogage permet de vérifier que votre code est bien écrit (absence de fautes de frappe,
toutes les variables sont déclarées…). Vous pouvez directement passer par la mise en pratique
en lançant votre formulaire et en le testant, mais si beaucoup de scénarios sont possibles, cela
peut vous prendre du temps alors qu’il est préférable de ne le faire qu’à la dernière étape de la
création de votre programme afin de vérifier que les données sont bien traitées de la manière
que vous souhaitez.
Pour lancer ce mode, dans la fenêtre VBA, cliquez sur Débogage > Compiler suivi
généralement de VBAProject qui est le nom donné par défaut à votre projet. Il peut être modifié
en cliquant droit sur VBAProject (Le nom de votre fichier avec son extension) dans la fenêtre
Projet > Propriétés de VBAProject…. Dans le champ Nom du projet, vous pouvez modifier le
nom par défaut.
Une fois le mode lancé, s’il ne se passe rien, c’est que votre code est correct. Dans le cas
contraire, une fenêtre s’ouvre avec l’erreur. Si par exemple, je supprime la ligne de déclaration
de J dans l’initialisation du formulaire (Dim J As Long) et que je lance le mode débug, j’ai bien
l’erreur de variable non définie.
Pour terminer, n’hésitez pas à voir ou revoir le tutoriel Comment vider (effacer) un userform
après validation sur Excel ? utilisant le même formulaire de saisie.

Weitere ähnliche Inhalte

Was ist angesagt?

reseaux et systemes avances
 reseaux et systemes avances reseaux et systemes avances
reseaux et systemes avancesmohamednacim
 
C5 Réseaux : vlsm-classe-nat
C5 Réseaux : vlsm-classe-natC5 Réseaux : vlsm-classe-nat
C5 Réseaux : vlsm-classe-natPRONETIS
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Cours SE IAG Système d'exploitation Windows - IPSET.pdf
Cours SE IAG Système d'exploitation Windows - IPSET.pdfCours SE IAG Système d'exploitation Windows - IPSET.pdf
Cours SE IAG Système d'exploitation Windows - IPSET.pdfMedBechir
 
Sécurité informatique
Sécurité informatiqueSécurité informatique
Sécurité informatiqueoussama Hafid
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Kel Cecil
 
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxanisanima1
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmiquenicodeff
 
Cours réseaux informatiques ia2
Cours réseaux informatiques  ia2Cours réseaux informatiques  ia2
Cours réseaux informatiques ia2Amel Morchdi
 
Model Based Testing des applications du protocole MQTT
Model Based Testing des applications du protocole MQTTModel Based Testing des applications du protocole MQTT
Model Based Testing des applications du protocole MQTTymelka
 
Lire les tables de routage
Lire les tables de routageLire les tables de routage
Lire les tables de routagebelhadj_rached
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
Projet de fin d etudes
Projet de fin d etudesProjet de fin d etudes
Projet de fin d etudes3azwa
 

Was ist angesagt? (20)

Test logiciel
Test logicielTest logiciel
Test logiciel
 
reseaux et systemes avances
 reseaux et systemes avances reseaux et systemes avances
reseaux et systemes avances
 
C5 Réseaux : vlsm-classe-nat
C5 Réseaux : vlsm-classe-natC5 Réseaux : vlsm-classe-nat
C5 Réseaux : vlsm-classe-nat
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Cours SE IAG Système d'exploitation Windows - IPSET.pdf
Cours SE IAG Système d'exploitation Windows - IPSET.pdfCours SE IAG Système d'exploitation Windows - IPSET.pdf
Cours SE IAG Système d'exploitation Windows - IPSET.pdf
 
Sécurité informatique
Sécurité informatiqueSécurité informatique
Sécurité informatique
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Mehari
MehariMehari
Mehari
 
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmique
 
Cours réseaux informatiques ia2
Cours réseaux informatiques  ia2Cours réseaux informatiques  ia2
Cours réseaux informatiques ia2
 
Model Based Testing des applications du protocole MQTT
Model Based Testing des applications du protocole MQTTModel Based Testing des applications du protocole MQTT
Model Based Testing des applications du protocole MQTT
 
Lire les tables de routage
Lire les tables de routageLire les tables de routage
Lire les tables de routage
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Projet de fin d etudes
Projet de fin d etudesProjet de fin d etudes
Projet de fin d etudes
 

Andere mochten auch

Tableau de bord opérationnel: introduction (séminaire)
Tableau de bord opérationnel: introduction (séminaire)Tableau de bord opérationnel: introduction (séminaire)
Tableau de bord opérationnel: introduction (séminaire)TSS
 
Tutoriel tableau de bord excel
Tutoriel tableau de bord excelTutoriel tableau de bord excel
Tutoriel tableau de bord excelHayans Yao
 
Tableau de bord stratégique: Séminaire
Tableau de bord stratégique: SéminaireTableau de bord stratégique: Séminaire
Tableau de bord stratégique: SéminaireTSS
 
Découvrir le VBA Excel (article invité)
Découvrir le VBA Excel (article invité)Découvrir le VBA Excel (article invité)
Découvrir le VBA Excel (article invité)Votre Assistante
 
Créer un formulaire personnalisé pour saisir des données sur Excel
Créer un formulaire personnalisé pour saisir des données sur ExcelCréer un formulaire personnalisé pour saisir des données sur Excel
Créer un formulaire personnalisé pour saisir des données sur ExcelVotre Assistante
 
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosa
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosaPpt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosa
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosaCERTyou Formation
 
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...CERTyou Formation
 
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...CERTyou Formation
 
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosaExc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosaCERTyou Formation
 
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...CERTyou Formation
 
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosaWor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosaCERTyou Formation
 
Wor06 formation-word-vba-et-passage-de-la-certification-tosa
Wor06 formation-word-vba-et-passage-de-la-certification-tosaWor06 formation-word-vba-et-passage-de-la-certification-tosa
Wor06 formation-word-vba-et-passage-de-la-certification-tosaCERTyou Formation
 
Exc06 formation-excel-vba-et-passage-de-la-certification-tosa
Exc06 formation-excel-vba-et-passage-de-la-certification-tosaExc06 formation-excel-vba-et-passage-de-la-certification-tosa
Exc06 formation-excel-vba-et-passage-de-la-certification-tosaCERTyou Formation
 
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10CERTyou Formation
 
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...eveillard
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Presentation tableau de bord
Presentation tableau de bordPresentation tableau de bord
Presentation tableau de bordTSS
 
Nos Tableaux de bord
Nos Tableaux de bordNos Tableaux de bord
Nos Tableaux de bordTSS
 
Bientôt Excel Academie
Bientôt Excel AcademieBientôt Excel Academie
Bientôt Excel AcademieTSS
 

Andere mochten auch (20)

Tableau de bord opérationnel: introduction (séminaire)
Tableau de bord opérationnel: introduction (séminaire)Tableau de bord opérationnel: introduction (séminaire)
Tableau de bord opérationnel: introduction (séminaire)
 
Tutoriel tableau de bord excel
Tutoriel tableau de bord excelTutoriel tableau de bord excel
Tutoriel tableau de bord excel
 
Tableau de bord stratégique: Séminaire
Tableau de bord stratégique: SéminaireTableau de bord stratégique: Séminaire
Tableau de bord stratégique: Séminaire
 
Découvrir le VBA Excel (article invité)
Découvrir le VBA Excel (article invité)Découvrir le VBA Excel (article invité)
Découvrir le VBA Excel (article invité)
 
Créer un formulaire personnalisé pour saisir des données sur Excel
Créer un formulaire personnalisé pour saisir des données sur ExcelCréer un formulaire personnalisé pour saisir des données sur Excel
Créer un formulaire personnalisé pour saisir des données sur Excel
 
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosa
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosaPpt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosa
Ppt01 formation-powerpoint-perfectionnement-et-passage-de-la-certification-tosa
 
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...
Ppt03 formation-powerpoint-les-bases-et-perfectionnement-et-passage-de-la-cer...
 
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...
Wor05 formation-word-fondamentaux-fonctions-avancees-vba-et-passage-de-la-cer...
 
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosaExc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Exc02 formation-excel-fonctions-avancees-vba-et-passage-de-la-certification-tosa
 
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...
Exc05 formation-excel-fondamentaux-fonctions-avancees-vba-et-passage-de-la-ce...
 
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosaWor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosa
Wor02 formation-word-fonctions-avancees-vba-et-passage-de-la-certification-tosa
 
Wor06 formation-word-vba-et-passage-de-la-certification-tosa
Wor06 formation-word-vba-et-passage-de-la-certification-tosaWor06 formation-word-vba-et-passage-de-la-certification-tosa
Wor06 formation-word-vba-et-passage-de-la-certification-tosa
 
Tosa formation-le-tosa
Tosa formation-le-tosaTosa formation-le-tosa
Tosa formation-le-tosa
 
Exc06 formation-excel-vba-et-passage-de-la-certification-tosa
Exc06 formation-excel-vba-et-passage-de-la-certification-tosaExc06 formation-excel-vba-et-passage-de-la-certification-tosa
Exc06 formation-excel-vba-et-passage-de-la-certification-tosa
 
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
 
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...
Corrigé des exercices du 2è jour (sites médicaux et veille documentaire en mé...
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Presentation tableau de bord
Presentation tableau de bordPresentation tableau de bord
Presentation tableau de bord
 
Nos Tableaux de bord
Nos Tableaux de bordNos Tableaux de bord
Nos Tableaux de bord
 
Bientôt Excel Academie
Bientôt Excel AcademieBientôt Excel Academie
Bientôt Excel Academie
 

Ähnlich wie Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel

Créer un message d’alerte à l’ouverture d’Excel
Créer un message d’alerte à l’ouverture d’ExcelCréer un message d’alerte à l’ouverture d’Excel
Créer un message d’alerte à l’ouverture d’ExcelVotre Assistante
 
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....Votre Assistante
 
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?Votre Assistante
 
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...Votre Assistante
 
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?Votre Assistante
 
Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Christophe Malpart
 
Comment alimenter une liste déroulante dans Word avec une liste Excel ?
Comment alimenter une liste déroulante dans Word avec une liste Excel ?Comment alimenter une liste déroulante dans Word avec une liste Excel ?
Comment alimenter une liste déroulante dans Word avec une liste Excel ?Votre Assistante
 
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...Votre Assistante
 
Rechercher et supprimer les doublons sur Access
Rechercher et supprimer les doublons sur AccessRechercher et supprimer les doublons sur Access
Rechercher et supprimer les doublons sur AccessVotre Assistante
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Liste des principaux codes VBA que j’utilise sur Access
Liste des principaux codes VBA que j’utilise sur AccessListe des principaux codes VBA que j’utilise sur Access
Liste des principaux codes VBA que j’utilise sur AccessVotre Assistante
 
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)Votre Assistante
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdfMiRA452885
 
Apprendre vba excel(1)
Apprendre vba excel(1)Apprendre vba excel(1)
Apprendre vba excel(1)FIDEL Wisly
 
Chapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxChapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxSamiBENAISSIA1
 

Ähnlich wie Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel (20)

Créer un message d’alerte à l’ouverture d’Excel
Créer un message d’alerte à l’ouverture d’ExcelCréer un message d’alerte à l’ouverture d’Excel
Créer un message d’alerte à l’ouverture d’Excel
 
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....
Utiliser les formules de calculs basiques sur Excel – Partie 2/2 – Si, somme....
 
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
 
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...
Comment cocher et décocher des cases à cocher en 1 clic dans un formulaire su...
 
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?
Comment transformer vos fichiers Excel en présentation PowerPoint en 1 clic ?
 
Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2
 
Comment alimenter une liste déroulante dans Word avec une liste Excel ?
Comment alimenter une liste déroulante dans Word avec une liste Excel ?Comment alimenter une liste déroulante dans Word avec une liste Excel ?
Comment alimenter une liste déroulante dans Word avec une liste Excel ?
 
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...
Créer une facture avec Access – Partie 1/3 – Création des tables et des relat...
 
Rechercher et supprimer les doublons sur Access
Rechercher et supprimer les doublons sur AccessRechercher et supprimer les doublons sur Access
Rechercher et supprimer les doublons sur Access
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Liste des principaux codes VBA que j’utilise sur Access
Liste des principaux codes VBA que j’utilise sur AccessListe des principaux codes VBA que j’utilise sur Access
Liste des principaux codes VBA que j’utilise sur Access
 
Tp 1 introduction à matlab
Tp 1 introduction à matlabTp 1 introduction à matlab
Tp 1 introduction à matlab
 
Tp 1 introduction à matlab
Tp 1 introduction à matlabTp 1 introduction à matlab
Tp 1 introduction à matlab
 
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)
Fusionner deux ou plusieurs cellules en une seule sur Excel (formule concaténer)
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdf
 
Apprendre vba excel(1)
Apprendre vba excel(1)Apprendre vba excel(1)
Apprendre vba excel(1)
 
Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
 
Les Widgets
Les WidgetsLes Widgets
Les Widgets
 
Chapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxChapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptx
 

Mehr von Votre Assistante

Comment créer un effet de texte avec une ombre longue sur Illustrator ?
Comment créer un effet de texte avec une ombre longue sur Illustrator ?Comment créer un effet de texte avec une ombre longue sur Illustrator ?
Comment créer un effet de texte avec une ombre longue sur Illustrator ?Votre Assistante
 
Comment compacter une base de données Access en VBA.pdf
Comment compacter une base de données Access en VBA.pdfComment compacter une base de données Access en VBA.pdf
Comment compacter une base de données Access en VBA.pdfVotre Assistante
 
Comment créer un modèle de document Word ?
Comment créer un modèle de document Word ?Comment créer un modèle de document Word ?
Comment créer un modèle de document Word ?Votre Assistante
 
Comment ouvrir plusieurs images dans Camera Raw ?
Comment ouvrir plusieurs images dans Camera Raw ?Comment ouvrir plusieurs images dans Camera Raw ?
Comment ouvrir plusieurs images dans Camera Raw ?Votre Assistante
 
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?Votre Assistante
 
Comment créer un modèle de diaporama PowerPoint ?
Comment créer un modèle de diaporama PowerPoint ?Comment créer un modèle de diaporama PowerPoint ?
Comment créer un modèle de diaporama PowerPoint ?Votre Assistante
 
Comment calculer l'âge dans une base de données Access ?
Comment calculer l'âge dans une base de données Access ?Comment calculer l'âge dans une base de données Access ?
Comment calculer l'âge dans une base de données Access ?Votre Assistante
 
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...Comment modifier le contenu d’une liste déroulante en cascade si la précédent...
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...Votre Assistante
 
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?Votre Assistante
 
Comment créer un effet vignettage sur Photoshop ?
Comment créer un effet vignettage sur Photoshop ?Comment créer un effet vignettage sur Photoshop ?
Comment créer un effet vignettage sur Photoshop ?Votre Assistante
 
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...Votre Assistante
 
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...Votre Assistante
 
Comment numéroter certaines lignes dans Word ?
Comment numéroter certaines lignes dans Word ?Comment numéroter certaines lignes dans Word ?
Comment numéroter certaines lignes dans Word ?Votre Assistante
 
Comment créer un modèle de base de données Access ?
Comment créer un modèle de base de données Access ?Comment créer un modèle de base de données Access ?
Comment créer un modèle de base de données Access ?Votre Assistante
 
Comment créer un effet fourrure sur Illustrator ?
Comment créer un effet fourrure sur Illustrator ?Comment créer un effet fourrure sur Illustrator ?
Comment créer un effet fourrure sur Illustrator ?Votre Assistante
 
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...Votre Assistante
 
Comment créer un calendrier perpétuel sur Excel ?
Comment créer un calendrier perpétuel sur Excel ?Comment créer un calendrier perpétuel sur Excel ?
Comment créer un calendrier perpétuel sur Excel ?Votre Assistante
 
Créer un bonhomme de neige avec Illustrator
Créer un bonhomme de neige avec IllustratorCréer un bonhomme de neige avec Illustrator
Créer un bonhomme de neige avec IllustratorVotre Assistante
 
Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Votre Assistante
 
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)Votre Assistante
 

Mehr von Votre Assistante (20)

Comment créer un effet de texte avec une ombre longue sur Illustrator ?
Comment créer un effet de texte avec une ombre longue sur Illustrator ?Comment créer un effet de texte avec une ombre longue sur Illustrator ?
Comment créer un effet de texte avec une ombre longue sur Illustrator ?
 
Comment compacter une base de données Access en VBA.pdf
Comment compacter une base de données Access en VBA.pdfComment compacter une base de données Access en VBA.pdf
Comment compacter une base de données Access en VBA.pdf
 
Comment créer un modèle de document Word ?
Comment créer un modèle de document Word ?Comment créer un modèle de document Word ?
Comment créer un modèle de document Word ?
 
Comment ouvrir plusieurs images dans Camera Raw ?
Comment ouvrir plusieurs images dans Camera Raw ?Comment ouvrir plusieurs images dans Camera Raw ?
Comment ouvrir plusieurs images dans Camera Raw ?
 
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?
Comment créer des listes déroulantes en cascade à 3 niveaux sur Excel ?
 
Comment créer un modèle de diaporama PowerPoint ?
Comment créer un modèle de diaporama PowerPoint ?Comment créer un modèle de diaporama PowerPoint ?
Comment créer un modèle de diaporama PowerPoint ?
 
Comment calculer l'âge dans une base de données Access ?
Comment calculer l'âge dans une base de données Access ?Comment calculer l'âge dans une base de données Access ?
Comment calculer l'âge dans une base de données Access ?
 
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...Comment modifier le contenu d’une liste déroulante en cascade si la précédent...
Comment modifier le contenu d’une liste déroulante en cascade si la précédent...
 
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?
Comment utiliser et modifier des icônes Font Awesome sur Illustrator ?
 
Comment créer un effet vignettage sur Photoshop ?
Comment créer un effet vignettage sur Photoshop ?Comment créer un effet vignettage sur Photoshop ?
Comment créer un effet vignettage sur Photoshop ?
 
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...
Comment insérer des données Excel dans PowerPoint avec ou sans mise à jour au...
 
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...
Pourquoi utiliser le menu Développeur de Microsoft et comment l’afficher sur ...
 
Comment numéroter certaines lignes dans Word ?
Comment numéroter certaines lignes dans Word ?Comment numéroter certaines lignes dans Word ?
Comment numéroter certaines lignes dans Word ?
 
Comment créer un modèle de base de données Access ?
Comment créer un modèle de base de données Access ?Comment créer un modèle de base de données Access ?
Comment créer un modèle de base de données Access ?
 
Comment créer un effet fourrure sur Illustrator ?
Comment créer un effet fourrure sur Illustrator ?Comment créer un effet fourrure sur Illustrator ?
Comment créer un effet fourrure sur Illustrator ?
 
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...
Comment créer une carte de vœux sur Photoshop avec un effet de sapin de Noël ...
 
Comment créer un calendrier perpétuel sur Excel ?
Comment créer un calendrier perpétuel sur Excel ?Comment créer un calendrier perpétuel sur Excel ?
Comment créer un calendrier perpétuel sur Excel ?
 
Créer un bonhomme de neige avec Illustrator
Créer un bonhomme de neige avec IllustratorCréer un bonhomme de neige avec Illustrator
Créer un bonhomme de neige avec Illustrator
 
Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?
 
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)
Gérer sa facturation avec Access (MAJ du tutoriel Créer une facture avec Access)
 

Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel

  • 1. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 1 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel Suite aux nombreuses questions qui ont suivi après la publication du tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel, j’ai décidé de réaliser une sorte de suite afin d’expliquer le code utilisé. Je n’avais pas expliqué le code lors de ce tutoriel, car c’était ma première expérience du langage VBA et j’ai donc testé différentes choses jusqu’à arriver au résultat escompté, mais sans vraiment savoir pourquoi. J’ai commencé à l’apprendre grâce à l’élaboration de ce cours, puis des commentaires qui ont suivi. Désormais, la création de formulaire ou autre en langage VBA fait partie des prestations que je propose. Si vous n’avez aucune connaissance en VBA, je vous conseille fortement de commencer par un tutoriel tel que celui de la création d’un formulaire de saisie de coordonnées afin de vous mettre le pied à l’étrier :). Je vous rappelle que le code VBA utilisé dans le tutoriel en question se trouve chez Excel-Plus puisqu’il s’agit d’un article invité. À la fin de ce dernier, vous pouvez copier-coller le code pour n’avoir aucune erreur. Pour suivre ces explications, je vous invite à vous rendre dans la fenêtre Visual Basic dans l’onglet Développeur (si vous ne savez pas comment l’afficher, je vous invite à revoir le début du tutoriel de création) > Visual Basic . Explication du code de l’UserForm1 : Dans la fenêtre de l’Explorateur de projet (si elle n’apparaît pas, cliquez sur Affichage > Explorateur de projets ou faites Ctrl + R), vous avez par défaut un dossier Microsoft Excel Objets qui contient tous vos onglets et ThisWorkbook. Si vous souhaitez créer une action sur double-clic d’une cellule dans un de vos onglets, vous écrirez le code dans l’onglet correspondant, si vous souhaitez pouvoir effectuer cette action dans n’importe quel onglet, vous l’écrirez dans ThisWorkbook qui peut être aussi utilisé pour faire une action à l’ouverture d’un fichier comme nous l’avons fait dans le tutoriel Créer un message d’alerte à l’ouverture d’Excel.
  • 2. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 2 Dans notre exemple, nous avons ensuite ajouté un UserForm et un Module. Les premiers se trouvent toujours dans un dossier nommé Feuilles et les seconds dans un dossier nommé Modules. Cliquez droit sur UserForm1 de l’Explorateur de projets > Code. J’avais placé un commentaire devant chaque évènement tel que l’initialisation du formulaire (son ouverture), le changement au niveau de la ComboBox et les clics sur les différents boutons. Ces commentaires sont en vert et commencent toujours par une apostrophe (‘), c’est-à-dire que tout ce qui se trouve derrière une apostrophe ne sera jamais interprété dans votre code. Si vous voulez retirer une action temporairement, au lieu de l’effacer, vous pouvez tout simplement la mettre en commentaire. Je n’avais pas modifié les noms des différents contrôles (ComboBox1, TextBox1…), mais si vous le faites n’oubliez pas de le modifier dans l’userform et dans le code. Mon code commence par Option Explicit ce qui veut dire que je vais devoir déclarer toutes mes variables. De cette manière, si vous ne déclarez pas une variable, le mode débug que nous allons voir juste après, vous le signalera et vous évitera de découvrir des erreurs une fois que votre programme sera terminé et qu’il contiendra énormément de données. Si cette ligne vous gêne ou que vous l’oubliez régulièrement, vous pouvez vous rendre dans le menu Outils > Options et cocher la case Déclaration des variables obligatoire dans l’onglet Éditeur : Cette case sera cochée par défaut pour tous vos nouveaux projets.
  • 3. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 3 Il est ensuite suivi de Dim Ws As Worksheet qui est une déclaration de variable que j’aurais pu placer après Private Sub UserForm_Initialize(). Mais une déclaration de variable doit toujours se trouver avant l’utilisation de son nom. Cette déclaration va me servir à utiliser mon onglet Clients. Private Sub UserForm_Initialize() : À l’ouverture du formulaire, j’ai déclaré J et I comme étant des valeurs numériques. Je peux donner n’importe quel nom à une variable. Un nom, que ce soit de variable ou de macro, peut contenir des lettres minuscules ou majuscules et des chiffres, mais pas d’espaces, de points, de virgules, de traits d’union ou de slashs (évitez les accents) qui seraient mal interprétés par Excel. En clair, restez simple. ComboBox2.ColumnCount = 1 indique qu’il n’y aura qu’une colonne dans la ComboBox2. Si j’avais souhaité avoir 2, 3, 4 colonnes, il aurait fallu écrire les items de la première colonne, puis la deuxième, etc. pour avoir une liste déroulante du même type que nous avons réalisé dans le tutoriel sur la facturation avec Access. ComboBox2.List() = Array("", "M.", "Mme", "Mlle") permet de spécifier les données à afficher dans la ComboBox2. Faites attention à la méthode utilisée pour vos formulaires : si les données n’ont pas besoin d’être modifiées et ne sont pas nombreuses, vous pouvez utiliser la méthode Array, mais dans le cas où les données sont amenées à changer souvent, il est préférable qu’elles soient accessibles à une personne novice en VBA et qui pourra les modifier dans son classeur Excel grâce à la méthode AddItem qui suit. Ici, nous avons, la possibilité de ne rien afficher ou de choisir M., Mme ou Mlle. Set Ws = Sheets("Clients") me permet d’attribuer une valeur à la variable que j’ai déclarée plus haut, à savoir que Ws ne traitera que de l’onglet Clients (modifiez-le si vous renommez vos onglets). Nous avons ensuite un bloc d’instruction qui contient une boucle qui indique que dans la ComboBox1, nous voulons récupérer à partir de la 2e ligne (la première étant la ligne de titre) toutes les cellules se trouvant dans la colonne A de l’onglet Clients. Cette méthode est préférable à Range("A65536") que nous allons voir juste après, car ici nous allons partir de la dernière cellule de l’onglet qui était la 65 536e sur les versions antérieures à 2007, mais a augmenté depuis, puis nous remontons jusqu’à la première cellule non vide. End(xlUp) est préférable, car
  • 4. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 4 si nous partions du haut et qu’une cellule était vide dans le tableau, le programme ne prendrait pas en compte les suivantes. Comme il s’agit d’une boucle, si vous lancez le mode débug, vous verrez que l’action se répète le nombre de fois nécessaire pour afficher tous les items (ici, 20 fois pour les 20 lignes du tableau). En réalisant ce tutoriel, je me suis aperçue que certaines choses n’étaient pas nécessaires dans mon code comme : For I = 1 To 7 Me.Controls("TextBox" & I).Visible = True Next I Il s’agit d’une boucle pour les 7 TextBox (d’où l’intérêt de modifier ce chiffre si vous en ajoutez ou supprimez) qui va les rendre visibles… Or, elles sont, par défaut, visibles. Par la même occasion, la déclaration de I n’est plus indispensable. Donc si ce code était à refaire, je supprimerais cette boucle ainsi que ComboBox2.ColumnCount = 1 puisqu’une ComboBox contient par défaut au moins une colonne et je supprimerais également le Me. dans With Me.ComboBox1 puisque la ComboBox1 est dans ce même formulaire. Private Sub ComboBox1_Change() : Sur changement de la ComboBox1, les données vont se mettre à jour dans les autres contrôles du formulaire. Je déclare Ligne et I comme étant des valeurs numériques. If Me.ComboBox1.ListIndex = -1 Then Exit Sub permet de sortir de la procédure dans le cas où vous ne sélectionnerez aucun numéro client. Ligne est égale à la ligne de la ComboBox1 (si vous modifiez + 2 en + 1 ou + 3, vous verrez qu’il y a un décalage au niveau des données affichées). ComboBox2 = Ws.Cells(Ligne, "B") va ensuite récupérer les données de la ligne en cours à la colonne B (vous remarquerez que je n’ai pas eu besoin de déclarer à nouveau Ws, car il n’est pas dans un Private sub contrairement à I que j’ai dû déclarer de nouveau). Je fais ensuite une boucle sur toutes les TextBox (7) pour récupérer toutes les données dans chaque contrôle. Chaque contrôle (du 1er au 7e ) sera égal à sa ligne et sa colonne dans l’onglet. Je n’ai pas créé de boucle pour la ComboBox2 puisqu’il n’y avait qu’une ComboBox.
  • 5. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 5 On peut faire en sorte que notre liste déroulante se mette à jour lorsque l’on ajoute un numéro client, mais comme l’action devra être utilisée après confirmation de l’ajout d’un client, on va l’ajouter dans l’évènement suivant. Private Sub CommandButton1_Click() : Sur clic du bouton CommandButton1, je vais ajouter un contact. Pour cela, je déclare L comme étant une valeur numérique dont je donne la valeur juste après, à savoir que c’est la dernière cellule de la colonne A de l’onglet Clients + 1, c’est-à-dire que je me place après la dernière cellule non vide. Comme indiqué plus haut, je remplacerais "a65536" par "A" & Rows.Count qui signifie exactement la même chose, mais qui pourra être transposable d’un ordinateur à un autre s’ils n’ont pas les mêmes versions. J’ajoute ensuite une condition grâce à la fonction If qui est si je réponds Oui à mon MsgBox qui est une boîte de dialogue qui me demandera Confirmez-vous l’insertion de ce nouveau contact ?, qui contiendra les boutons Oui et Non et qui aura pour titre Demande de confirmation d’ajout, alors on va effectuer l’action qui se trouve, ici, avant End If. Personnellement, je rajouterais : Else ' Rien ou Exit Sub (puisque de toute façon l’instruction est terminée après) avant End If pour plus de clarté, mais ça fonctionne quand même sans. Si je réponds Oui alors ma ComboBox1 va recopier sa valeur dans la colonne A à la dernière ligne non vide + 1, ComboBox2 va recopier dans B et ainsi de suite. Faites attention à l’ordre : c’est toujours la destination qui est égale au départ. L’ordre des propriétés n’a pas d’importance, mais les noms de TextBox et de colonnes oui. Si vous souhaitez mettre à jour la liste déroulante après ajout, ajouter le code suivant : Dim J As Long Dim I As Integer ComboBox1.Clear Set Ws = Sheets("Clients") ‘Correspond au nom de votre onglet dans le fichier Excel With Me.ComboBox1
  • 6. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 6 For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row .AddItem Ws.Range("A" & J) Next J End With Ce code correspond au même code que celui de la liste déroulante à l’ouverture avec ComboBox1.Clear. Ce dernier est important, car à la confirmation, la liste des codes client va être rechargée, or si elle n’est pas vidée (Clear), à chaque nouvel ajout, vous aurez votre liste précédente + la nouvelle liste, donc plein de doublons. Private Sub CommandButton2_Click() : Sur clic du bouton CommandButton2, je veux mettre à jour les données existantes. Pour cela, je déclare une nouvelle fois Ligne et I comme étant des valeurs numériques et je crée une boîte de dialogue Oui/Non qui déclenchera l’action si je clique sur Oui. Le code est quasiment similaire à celui du changement de liste déroulante donc je le simplifie en retirant If Me.Controls("TextBox" & I).Visible = True Then suivi de son End If puisque les TextBox sont toutes visibles. Ici aussi, on peut ajouter : Else ' Rien ou Exit Sub avant End If. Private Sub CommandButton3_Click() : Sur clic du bouton CommandButton3, le formulaire en cours (Me) va être déchargé, c’est-à-dire fermé, ce qui libère par la même occasion la mémoire du programme. Retirer la saisie semi-automatique d’une ComboBox sur Excel : Par défaut, une ComboBox possède la saisie semi-automatique, il s’agit de la propriété MatchEntry. Cela est très pratique lorsque vous avez une liste de noms de clients par exemple pour les retrouver facilement, mais, dans ce tutoriel, la ComboBox1 servait à saisir un numéro client et, forcément, la saisie fait appel aux données déjà enregistrées si l’on commence par un chiffre déjà attribué.
  • 7. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 7 Pour modifier cette propriété, cliquez sur la ComboBox1 en mode Afficher l’objet (clic droit sur l’UserForm1 dans l’Explorateur de projets) et, dans le panneau Propriétés, recherchez la ligne MatchEntry et sélectionnez l’option qui vous intéresse :  0 - fmMatchEntryFirstLetter : affiche le premier item de la liste commençant par la lettre saisie et si l’on appuie sur la lettre, sur le clavier, de manière répétée, les autres items de la liste commençant par cette lettre s’affichent successivement ;  1 – fmMatchEntryComplete : affiche une première suggestion qui peut être modifiée au fil de la saisie ;  2 – fmMatchEntryNone : pas de saisie semi-automatique. Cette propriété peut être ajoutée via le code en ajoutant cette ligne dans l’initialisation du formulaire par exemple (le code remplace la propriété) : ComboBox1.MatchEntry = fmMatchEntryNone Attention : cette propriété ne fonctionne pas sur Mac et provoque une erreur. Explication du code du Module1 : Ce module est une macro créée dans le but d’appeler le formulaire de saisie. Celle-ci débute par Sub et se termine par End Sub. Dans cet exemple, j’avais appelé cette macro Lancer_formulaire. C’est ce nom que vous retrouverez dans l’onglet Développeur > Macros. Il est également possible de créer un bouton sur votre fichier Excel pour lancer ce formulaire si vous ne souhaitez pas passer par un raccourci. Pour cela, créez une forme soit en passant par l’onglet Développeur > Insérer > Bouton ce qui ouvre la boîte de dialogue des macros directement, mais n’offre pas la possibilité de personnaliser le bouton en terme de forme ou de couleur, soit en passant par l’onglet Insertion > Formes (le bouton pourra être modifié avec l’onglet Format) puis en cliquant droit dessus > Affecter une macro…. Une fois que la boîte de dialogue des macros est ouverte, il vous suffit de sélectionner la macro correspondante au lancement du formulaire. UserForm1.Show affiche le formulaire UserForm1. Étant donné que je n’avais pas changé le nom du formulaire, c’est donc le nom de base, les formulaires suivants seraient UserForm2, UserForm3… sauf si vous les renommez.
  • 8. Votre Assistante : http://www.votreassistante.net - le 16/06/2015 Article écrit par Lydia Provin du blog Votre Assistante : http://www.votreassistante.net 8 vbModeless permet d’ouvrir le formulaire en non modal, c’est-à-dire que vous pourrez cliquer en dehors du formulaire, contrairement à vbModal où un clic en dehors du formulaire est impossible tant que celui-ci est ouvert. vbModal n’est pas utile à écrire puisque c’est le fonctionnement pas défaut. Enfin, vous pouvez parfois avoir une erreur d’exécution sur la ligne affichant le formulaire dans le module. Si le nom de votre formulaire est bien saisi, le problème vient surement de l’initialisation du formulaire dans le code de l’Userform. Utilité du mode débogage : Le mode débogage permet de vérifier que votre code est bien écrit (absence de fautes de frappe, toutes les variables sont déclarées…). Vous pouvez directement passer par la mise en pratique en lançant votre formulaire et en le testant, mais si beaucoup de scénarios sont possibles, cela peut vous prendre du temps alors qu’il est préférable de ne le faire qu’à la dernière étape de la création de votre programme afin de vérifier que les données sont bien traitées de la manière que vous souhaitez. Pour lancer ce mode, dans la fenêtre VBA, cliquez sur Débogage > Compiler suivi généralement de VBAProject qui est le nom donné par défaut à votre projet. Il peut être modifié en cliquant droit sur VBAProject (Le nom de votre fichier avec son extension) dans la fenêtre Projet > Propriétés de VBAProject…. Dans le champ Nom du projet, vous pouvez modifier le nom par défaut. Une fois le mode lancé, s’il ne se passe rien, c’est que votre code est correct. Dans le cas contraire, une fenêtre s’ouvre avec l’erreur. Si par exemple, je supprime la ligne de déclaration de J dans l’initialisation du formulaire (Dim J As Long) et que je lance le mode débug, j’ai bien l’erreur de variable non définie. Pour terminer, n’hésitez pas à voir ou revoir le tutoriel Comment vider (effacer) un userform après validation sur Excel ? utilisant le même formulaire de saisie.