Vous êtes sur la page 1sur 83

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

nées sur Excel - Votre Assistante

U a

Explication du code VBA utilisé dans


le tutoriel Créer un formulaire
personnalisé pour saisir des
données sur Excel
16 Juin 2015

Cliquez ici pour découvrir les 7 étapes pour créer


des tableaux croisés dynamiques comme un pro sur Excel

Explication du code VBA utilisé dans le tu…


tu…

Tutoriel réalisé avec Excel 2013

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 a n d’expliquer le code utilisé.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 1/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

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é di é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 a n 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 n 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’a cher, 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
A chage  >  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 e ectuer 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 chier comme nous l’avons fait dans le tutoriel Créer
un message d’alerte à l’ouverture d’Excel.

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 di é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’e acer,
vous pouvez tout simplement la mettre en commentaire.

Je n’avais pas modi é les noms des di érents contrôles (ComboBox1, TextBox1…), mais
si vous le faites n’oubliez pas de le modi er 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

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 2/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

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.

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 chi res, 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éci er les


données à a cher dans la ComboBox2. Faites attention à la méthode utilisée pour vos
formulaires  : si les données n’ont pas besoin d’être modi é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 modi er dans son classeur Excel grâce à la

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 3/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

méthode AddItem qui suit. Ici, nous avons, la possibilité de ne rien a cher 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 (modi ez-le si vous
renommez vos onglets).

Nous avons ensuite un bloc d’instruction qui contient une boucle qui indique que dans la
e
ComboBox1, nous voulons récupérer à partir de la 2 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
e
partir de la dernière cellule de l’onglet qui était la 65 536 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 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 a cher 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 modi er ce chi re 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 modi ez + 2 en + 1 ou + 3, vous verrez
qu’il y a un décalage au niveau des données a ché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

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 4/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

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
er e
dans chaque contrôle. Chaque contrôle (du 1 au 7 ) 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.

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 con rmation 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 signi e 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 Con rmez-vous l’insertion de ce
nouveau contact ?, qui contiendra les boutons Oui et Non et qui aura pour titre Demande
de con rmation d’ajout, alors on va e ectuer 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
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 5/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

.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 con rmation, 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 simpli e 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 chi re déjà attribué.

Pour modi er cette propriété, cliquez sur la ComboBox1 en mode A cher 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 : a che 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

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 6/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

items de la liste commençant par cette lettre s’a chent successivement ;


1 – fmMatchEntryComplete : a che une première suggestion qui peut être modi ée
au l 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 chier 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’o re pas la possibilité de
personnaliser le bouton en termes de forme ou de couleur, soit en passant par l’onglet
Insertion > Formes  (le bouton pourra être modi é avec l’onglet Format)
puis en cliquant droit dessus > A ecter une macro…. Une fois que la boîte de dialogue des
macros est ouverte, il vous su t de sélectionner la macro correspondante au lancement
du formulaire.

UserForm1.Show a che 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.

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.

En n, vous pouvez parfois avoir une erreur d’exécution sur la ligne a chant 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.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 7/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Utilité du mode débogage :


Le mode débogage permet de véri er 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 a n de véri er 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
modi é en cliquant droit sur VBAProject (Le nom de votre chier avec son extension)
dans la fenêtre Projet  > Propriétés de VBAProject…. Dans le champ Nom du projet, vous
pouvez modi er 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é nie.

Pour terminer, n’hésitez pas à voir ou revoir le tutoriel Comment vider (e acer) un
userform après validation sur Excel ? utilisant le même formulaire de saisie.

Téléchargez « Explication du code VBA utilisé dans le tutoriel Créer un formulaire


personnalisé pour saisir des données sur Excel » au format PDF

Je vous propose un chier annexe dans l’Espace Membres contenant le code VBA
rajouté.

Cliquez ici pour découvrir les 7 étapes pour créer


des tableaux croisés dynamiques comme un pro sur Excel

Cliquez ici pour découvrir comment créer des listes déroulantes


en cascade dans un formulaire Excel

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 8/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Vous aimerez peut-être aussi :

Découvrir le VBA Comment vider Utiliser un lecteur Créer un Créer des listes
Excel (article (e acer) un de code-barres formulaire déroulantes en
invité) userform après (douchette) sur personnalisé cascade dans un
validation sur Excel et Access pour saisir des formulaire Excel
Excel ? données sur
Excel

Créer un
message d’alerte
à l’ouverture
d’Excel

  

199 Commentaires
Hassen sur 19 juin 2015 à 15 h 35 min
J’aime bien ce que vous avez fait.
S’il vous plait, pouvez-vous m’aider : comment je peux envoyer des emails
de rappel automatiquement ?

Réponse

Lydia sur 19 juin 2015 à 15 h 36 min


C’est un sujet plus complexe. Je vous invite à faire une demande
de devis.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 9/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Said sur 22 juillet 2015 à 21 h 43 min


J’aime bien que ce vous faites Lydia.

Réponse

Marius sur 7 juillet 2015 à 19 h 43 min


Bonjour,
Après avoir suivi toutes les procédures, au moment de tester le
formulaire, j’obtiens le message suivant : « erreur d’exécution ‘9’ l’indice
n’appartient pas à la sélection ».
Comment y voir plus clair ?
Merci in niment.

Réponse

Lydia sur 7 juillet 2015 à 19 h 44 min


Bonjour Marius,

Il s’agit peut-être d’une erreur de saisie. Je vous invite à copier-


coller le code qui se trouve à la n de mon article invité chez
Excel-Plus.

Réponse

Johanna sur 10 septembre 2015 à 22 h 41 min


Bonjour,
Encore merci pour le partage des connaissances ! J’ai vu toutes vos vidéos
et lu les articles, cependant, je n’arrive pas à comprendre comment
alimenter une combobox en fonction d’un choix sélectionné sur une
autre combobox.
Les di érents choix de la 1ère CB sont dans une colonne A (domaine
d’application : jardin, bricolage). En colonne B se trouve la catégorie des
outils proposés (tondeuse, cisaille ou tournevis, marteau). En colonne C
se trouve le modèle des outils (mle600, mle500 ou …), « l’a nage » des
données peut être in ni… Bref, voilà, j’ai tout ça dans une feuille de calcul
et j’essaye via un formulaire avec des combobox de remplir cette feuille,
mais rien ne fonctionne. Je ne comprends pas…
Merci beaucoup pour le temps que vous m’accorderez.
Toujours fan de vos vidéos et explications !

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 10/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Lydia sur 10 septembre 2015 à 22 h 42 min


Bonjour Johanna,

Si c’est une liste en cascade dans un formulaire que vous


souhaitez réaliser, c’est justement le sujet du prochain tutoriel
(payant) de la semaine prochaine.

Réponse

Cylvain sur 6 octobre 2015 à 15 h 57 min


Bonjour et merci Lydia.
Vos explications sont claires et compréhensibles, merci encore du temps
que vous prenez pour faire vos tutos.

Pour le tuto sur le formulaire vba, pouvez-vous me dire ce qu’il faut


rajouter pour que les champs s’introduisent en plus sur une autre feuille
du classeur ?

Merci pour votre aide.

Réponse

Lydia sur 6 octobre 2015 à 15 h 58 min


Bonjour Cylvain,

Il faut ajouter ce genre de code à adapter :


L = .Range("A65536").End(xlUp).Offset(1, 0).Row
With Sheets("Clients")
.Cells(L, 1).Value = ComboBox1
.Cells(L, 2).Value = ComboBox2
etc.
End With
With Sheets("Clients1")
.Cells(L, 1).Value = ComboBox1
.Cells(L, 2).Value = ComboBox2
etc.
End With

Réponse

Cylvain sur 15 octobre 2015 à 8 h 53 min


Merci Lydia.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 11/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Noémie sur 8 octobre 2015 à 10 h 19 min


Bonjour Lydia et merci pour ce super tuto !

Concernant la mise à jour automatique de la liste déroulante, j’ai tapé


exactement le code que vous donnez ci-dessus, mais j’ai l’impression que
cela n’a aucun e et sur mon formulaire. En e et, je suis obligé de quitter
puis rouvrir le formulaire pour que la nouvelle donnée s’a che dans la
liste.

Merci beaucoup de votre aide !

Édit : De même, je possède une base de données avec un très grand


nombre de colonnes à renseigner par le biais du formulaire (environ 120)
à travers des textbox.
Existerait-il un moyen plus simple pour moi de coder cette commande
plutôt que de devoir taper une ligne de code pour chaque colonne en
utilisant « Range.Value= » ? Est-il possible de faire une boucle par
exemple ?

Toutes mes excuses pour ces nombreuses questions et encore un grand


merci à vous pour votre précieuse aide !

Réponse

Lydia sur 8 octobre 2015 à 10 h 20 min


Bonjour Noémie,

Êtes-vous sûr que le code se trouve bien sur l’après-clic du bouton


ajout ? Car si elle se recharge bien à l’ouverture du formulaire,
c’est qu’il doit bien y avoir quelque chose de ce côté-là.
Pour la boucle, oui, c’est d’ailleurs ce qui est expliqué dans le tuto
:
For I = 1 To 7
Me.Controls(« TextBox » & I).Visible = True
Next I
Toutefois, ce n’est valable que si vos contrôles sont des textbox
qui se suivent (pas de combobox ou autre entre eux).

Réponse

Benjamin sur 13 avril 2016 à 16 h 37 min


www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 12/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Noémie, bonjour à tous,


Merci Lydia pour ce tuto très bien fait.
Une façon toute simple de charger le contenu de la combobox qui
sert de référence (ici, le numéro client), elle peut aussi être gérée
en indiquant de prendre toute la colonne dans le paramètre
« rowsource » de la combobox en question. Cela évite de faire
une boucle.

Benjamin

Réponse

Lydia sur 13 avril 2016 à 16 h 38 min


Bonjour et merci Benjamin 🙂

Réponse

Nils sur 13 octobre 2015 à 22 h 13 min


Bonjour, merci pour ce super tuto, très compréhensible, c’est une super
idée.
J’ai donc créé mon formulaire qui marche très bien, j’ai juste une petite
question.
En fait, dans mes premières colonnes, j’ai une formule RECHERCHEV en
lien avec un autre onglet, mais j’ai remarqué que, lorsque je modi e un
champ ne contenant rien à la base dans mon formulaire, toutes mes
cellules ayant une formule RECHERCHEV n’ont plus rien à part le texte.
Est-il possible de rajouter quelque chose dans la VBA a n de garder les
formules après modi cation ?
Merci beaucoup pour votre temps.
Nils

Réponse

Lydia sur 13 octobre 2015 à 22 h 14 min


Bonjour Nils,
Dans ce cas, il faut écrire la formule dans le code VBA.

Réponse

Pierre sur 22 octobre 2015 à 12 h 54 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 13/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Lydia,
J’avais posé une question hier, mais j’avais oublié le captcha !!
Donc je recommence.
D’abord, merci pour ce super tuto qui me permet de créer un formulaire
de saisie pour mon association.
2 questions cependant :
– quel code pour un bouton « SUPPRIMER » pour e acer un contact ?
– peut-on mettre l’userform dans une feuille di érente de celle qui
contient les données

Merci encore.

Réponse

Lydia sur 22 octobre 2015 à 12 h 55 min


Bonjour Pierre,

Pour supprimer (à adapter) :


Rows([A2:A65536].Find(ComboBox1.Value).Row).EntireR
ow.Delete
Pour la feuille, oui, il su t de créer un bouton et de lui appliquer
la macro correspondante à votre userform.

Réponse

Pierre sur 22 octobre 2015 à 14 h 39 min


Merci Lydia,
Si je peux abuser, encore une question :
Dans ma feuille de calculs reprenant tous les membres (ou contacts), j’ai
des colonnes avec les dates de naissance et des âges calculés suivant la
formule : =(AUJOURDHUI()-C2)/365,25 (C2 est la cellule contenant la
date de naissance).
Que faire pour être sûr que dans le formulaire de saisie on rentre la date
sous la forme jj/mm/aa et que l’âge calculé soit a ché avec une seule
décimale (actuellement 12 décimales !!)
Merci de votre aide.

Réponse

Lydia sur 22 octobre 2015 à 14 h 40 min


Il faut modi er la ligne sous cette forme (à adapter) : Range("A"
& L).Value = CDate(Format(Champ.Value, "dd/mm/yyyy

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 14/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

hh:mm:ss"))
Pour les décimales, je n’ai pas testé, mais peut-être quelque chose
comme ça : Range("A" & L).Value = Format(Champ,
"0.00"). Toutefois, je pencherais pour du « 0 » car on ne dit pas
j’ai 20 ans et demi 😉

Réponse

Philippe sur 23 octobre 2015 à 14 h 44 min


Merci Lydia pour ce tuto. Ça marche impeccable en ce qui me concerne.
C’est sympa de prendre le temps. Encore merci.

Réponse

Pierre sur 23 octobre 2015 à 16 h 14 min


Pour forcer la saisie de la date, j’ai trouvé ceci qui peut peut-être servir à
d’autres :
Private Sub TextBox1_Change()
Dim Valeur As Byte
TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans
le textbox
Valeur = Len(TextBox1)
If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 &
"/"
End Sub

Réponse

Lydia sur 23 octobre 2015 à 16 h 15 min


Merci Pierre. Je croyais que vous parliez de la copie du formulaire
vers la feuille dans votre précédent message 😉

Réponse

Lamek sur 12 décembre 2015 à 20 h 28 min


Bonsoir,
Merci pour le travail que vous faites. Est-il possible de créer un formulaire
qui transfère les mêmes données dans plusieurs onglets ?
Merci.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 15/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Lydia sur 12 décembre 2015 à 20 h 29 min


Bonjour,

Oui, il su t de le programmer au niveau des lignes de code qui


reportent dans l’onglet.

Réponse

Barnabé sur 20 décembre 2015 à 9 h 54 min


Où sont les codes pour le formulaire ?
Pourrez-vous faire un formulaire de caisse et de bibliothèque ?

Réponse

Lydia sur 20 décembre 2015 à 9 h 55 min


À la n de l’article chez Excel-Plus. Je ne sais pas de quoi est
composé un formulaire de caisse et de bibliothèque.

Réponse

Besma sur 3 janvier 2016 à 20 h 25 min


Bonsoir,
Merci pour ton tuto ^^
J’ai une question : j’ai essayé d’ajouter d’autres combobox, mais ça n’a pas
marché !!!
S’il vous plaît, aidez-moi !

Réponse

Lydia sur 3 janvier 2016 à 20 h 26 min


Bonjour,
Il ne su t pas de les ajouter, il faut aussi écrire le code en
conséquence.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 16/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Thomas sur 6 janvier 2016 à 16 h 51 min


Bonjour Lydia,

Je suis dans le même cas que Barnabé, je n’arrive pas à trouver le code !
En n si, mais le zip ne contient qu’un bloc note avec 5-6 lignes dessus…

Merci d’avance pour votre aide.

Réponse

Lydia sur 6 janvier 2016 à 16 h 52 min


Bonjour Thomas,
À la n de l’article chez Excel-Plus, ce n’est pas un zip, mais un
chier txt qui s’ouvre dans le navigateur.

Réponse

Vincent sur 6 janvier 2016 à 21 h 09 min


Bonjour et merci pour ces tutos explicites !

J’ai juste une petite chose que je n’arrive pas à faire : j’aimerai, qu’à l’ajout
d’un nouveau contact, s’ajoute également un nouveau code client dans la
colonne A, comment automatiser cette action ?

Merci beaucoup pour votre réponse,

Cordialement.

Vincent

Réponse

Lydia sur 6 janvier 2016 à 21 h 10 min


Bonjour,

À adapter : TextBox1.Value = Range("A" &


Cells(Rows.Count, 1).End(xlUp).Row) + 1

Réponse

Vincent sur 12 janvier 2016 à 16 h 07 min


Merci beaucoup !

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 17/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Ma dernière question, si je peux abuser, est-il possible


d’habiller un peu cette interface assez brute et laide ?
D’intégrer un fond d’écran par exemple ?

Encore merci,

Cordialement.

Réponse

Lydia sur 12 janvier 2016 à 16 h 07 min


Oui, sur la propriété du formulaire nommée
Picture, vous pouvez insérer une image de fond.

Réponse

Stéphane sur 26 janvier 2016 à 21 h 21 min


Lydia bonsoir,

Merci encore pour ce tutoriel qui est tout simplement


génial.

Le code que vous mentionnez pour que le code client


s’incrémente tout seul dans le formulaire est à positionner
à quel endroit ?
TextBox1.Value = Range("A" &
Cells(Rows.Count, 1).End(xlUp).Row) + 1

Merci.

Réponse

Lydia sur 26 janvier 2016 à 21 h 22 min


Bonjour Stéphane,

C’est à l’initialisation du formulaire et après


validation d’un ajout.

Réponse

Stéphane sur 28 janvier 2016 à 22 h 43


min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 18/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Merci pour votre réactivité, vous avez


résolu mon problème en moins d’une
minute. J’en pro te pour vous poser une
nouvelle question : j’ai créé un nouveau
formulaire en m’inspirant de ce tutoriel,
lorsque je crée un nouveau contact, cela
me crée bien une nouvelle ligne dans mon
tableau, cependant, lorsque je sélectionne
ma combobox1 qui contient le n° de code,
pour, par exemple, pouvoir sélectionner
un contact, la combobox reste vide. Quelle
partie du code alimente une combobox en
reprenant le code de la ligne du dessus ?

Merci par avance.

Lydia sur 28 janvier 2016 à 22 h 44 min


Il s’agit de ce bout de code :
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
For J = 2 To Ws.Range(« A » &
Rows.Count).End(xlUp).Row
.AddItem Ws.Range(« A » & J)
Next J
End With

Emiduu sur 13 janvier 2016 à 20 h 21 min


Bonjour,

Merci pour ce super tuto, j’ai pu faire un vrai outil de gestion d’une base
de données avec. Ça me simpli e la vie comme pas possible !

Petite question : je suis amené à modi er régulièrement les données de


chaque client. Votre questionnaire est parfaitement adapté pour cela.
Je suis également amené à modi er le contenu de la combobox1 qui,
comme dans votre exemple, alimente le contenu de toutes les textbox et
combobox. Depuis votre exemple, si je modi e le contenu de la

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 19/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

combobox1, toutes les modi cations e ectuées sont bien prises en


compte dans la feuille, mais pas la modi cation du contenu de la
combobox1. Comment faire pour que les modi cations e ectuées dans
le contenu de la combobox1 soient bien appliquées dans la cellule
correspondante lorsqu’on valide le formulaire avec le bouton « Modi er »
?

Merci d’avance.

Réponse

Lydia sur 13 janvier 2016 à 20 h 22 min


Bonjour,
Je ne pense pas que cela soit possible étant donné que cette
combobox est utilisée comme « identi ant » pour la modi cation.

Réponse

Christine sur 29 janvier 2016 à 14 h 55 min


Bonjour Lydia,

Je suis Excel 2013, j’ai fait les macros sur plusieurs feuilles du classeur.
Lorsque je ferme mon chier Excel et que je le rouvre, toutes mes macros
ont disparu et je dois donc les refaire.
Comment je peux faire pour que mes macros soient toujours présentes
dans mon chier Excel ?
Merci beaucoup de votre soutien,
Cordialement,
Christine

Réponse

Lydia sur 29 janvier 2016 à 14 h 56 min


Bonjour Christine,

Il faut l’enregistrer au format prenant en charge les macros (un


message doit d’ailleurs vous avertir lorsque vous l’enregistrez au
format classique).

Réponse

Johanna sur 18 février 2016 à 17 h 15 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 20/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Lydia,

Merci pour la clarté de ce tutoriel !

Je n’ai pas créé de boucle pour la ComboBox2 puisqu’il n’y avait qu’une
ComboBox.
J’ai transformé les TextBox3 et 5 en ComboBox et j’ai souhaité créer une
boucle pour ceux-ci.

Voici le code que j’ai rentré :


'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 3
ComboBox2 = Ws.Cells(Ligne, "C")
For I = 1 To 2
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
For I = 3 To 3
Me.Controls("ComboBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
For I = 4 To 4
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
For I = 5 To 5
Me.Controls("ComboBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
For I = 6 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
End Sub

Seulement, je reçois un message d’erreur d’exécution me disant que


l’objet est introuvable.

De plus, lorsque je supprime les lignes relatives à la ComboBox5, le code


s’exécute normalement, mais le contenu de la ComboBox3 ne s’a che
pas dans la base de données.

Je dois cependant préciser que pour alimenter ces deux ComboBox j’ai
utilisé le code suivant :
Private Sub UserForm_Initialize()
Dim J As Long

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 21/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim I As Integer
ComboBox2.RowSource = ("Modalitédepaement")
Set Ws = Sheets("Traitement pièces") 'Correspond au nom
de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
ComboBox3.RowSource = ("ListeType")
ComboBox4.RowSource = ("Modalitédepaement")
End Sub

Pourriez-vous m’apporter votre assistance s’il vous plaît ?

Merci d’avance.

Réponse

Lydia sur 18 février 2016 à 17 h 16 min


Bonjour Johanna,

Mais là, vous avez créé 5 boucles. À partir de mon tutoriel, retirez
simplement la boucle présente et utilisez la syntaxe comme pour
écrire le résultat de chaque textbox (Range("C" & L).Value =
TextBox1), mais avec la combobox, car si vous avez du mal avec
les boucles, au moins, ce sera plus long, mais ça fonctionnera.

Réponse

Johanna sur 23 février 2016 à 20 h 50 min


Merci Lydia !
Je viens juste d’essayer et cela fonctionne à merveille !

Réponse

Simo sur 3 mars 2016 à 0 h 47 min


Bonjour,
C’est très intéressant, je vous remercie Lydia pour le partage de cette
vidéo qui explique bien la création d’un formulaire.
Cordialement.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 22/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Jennifer sur 10 mars 2016 à 13 h 13 min


Bonjour,

La vidéo est intéressante et j’aimerais bien l’appliquer. Cependant,


comme je suis débutante en VBA, je suis un peu perdue, surtout que j’ai
la version Excel 2016 pour Mac.
Est-ce que quelqu’un sait comment créer un Userform sur cette version ?
D’avance merci.

Réponse

Lydia sur 10 mars 2016 à 13 h 14 min


Bonjour Jennifer,

Désolée, je ne peux vous aiguiller, je ne possède pas de Mac.

Réponse

Benoît sur 14 mars 2016 à 12 h 16 min


Je me sers du formulaire pour des données numériques auxquelles
j’applique une formule. La formule ne fonctionne pas et me donne
l’erreur #VALEUR!. J’y applique un format de cellule nombre, mais le
formulaire semble changer le format. Que puis-je faire ?
Merci.

Réponse

Lydia sur 14 mars 2016 à 12 h 17 min


Je vous invite à lire la réponse que j’ai donnée à Pierre plus haut
en modi ant le Format par ce que vous avez besoin.

Réponse

Marie-Julie sur 22 mars 2016 à 22 h 03 min


Bonjour Lydia,

Comme je peux le constater, votre tuto est très utile à beaucoup de


monde !
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 23/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Je n’arrive malheureusement pas à utiliser les combobox…

J’ai créé plusieurs UserForm. J’ai parfaitement réussi le UserForm1 avec


seulement des textbox. Cependant, je travaille sur un UserForm en
particulier, celui qui me permettrait de pouvoir valider les saisies d’une
personne. Pour cela, je voudrais consulter, dans une copie conforme au
UserForm1 (soit le UserForm2), les saisies de plusieurs personnes. Je
voudrais aussi pouvoir modi er la saisie via cet UserForm et que bien,
évidemment, ma base de données « Feuil1 » soit mise à jour.

Pour la consultation, j’aurais besoin de 3 combobox pour ltrer le nom de


la personne, le mois et la semaine (données saisies par les personnes
dans des Textbox UserF1). Et je voudrais, du coup, que dans le
UserForm2, les 3 premières textbox deviennent des combobox pour
ltrer la recherche.

Après ma véri cation, je souhaite donc pouvoir modi er s’il y a des


erreurs.

Je n’y arrive pas malgré tous vos conseils ! Je suis désespérée de ne pas y
arriver… Je n’y arrive même pas avec 2 combobox.

De plus, est-il possible qu’après ma consultation, je puisse avoir un


bouton « VALIDER » qui va colorer ma ligne dans ma base de données
Feuil1 ?

Voici une partie du code (copier/coller sur le vôtre) :

Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm2_Initialize()
Dim AM As Long
ComboBox2.List() = Array("JANVIER", "FEVRIER", "MARS",
"AVRIL")
Set Ws = Sheets("Feuil1")
With ComboBox1
For AM = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & AM)
Next AM
End With
End Sub
'Pour la liste déroulante NOM
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim AL As Integer

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 24/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

If Me.ComboBox1.ListIndex = -1 Then Exit Sub


Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For AL = 1 To 38
Me.Controls("TextBox" & AL) = Ws.Cells(Ligne, AL + 2)
Next AL
End Sub
'Pour le bouton Modifier
Private Sub CommandButton1_Click()
Dim Ligne As Long
Dim AL As Integer
If MsgBox("Confirmez-vous la modification ?", vbYesNo,
"Demande de confirmation de modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For AL = 1 To 38
Ws.Cells(Ligne, AL + 2) = Me.Controls("TextBox" & AL)
Next AL
End If
End Sub

Je ne comprends pas pourquoi rien ne s’a che…

Pourriez-vous m’aider ?

Je vous remercie et je vous souhaite une excellente soirée.

Réponse

Lydia sur 22 mars 2016 à 22 h 04 min


Bonjour Marie-Julie,

Je suis désolée, j’ai du mal à comprendre.


Vous souhaitez ltrer les données présentes sur une feuille via un
userform ? Mais pas par rapport au second (car il ne me semble
pas que cela soit possible étant donné qu’un seul userform
s’a che) ?

Réponse

Élisabeth sur 13 avril 2016 à 10 h 56 min


Bonjour Lydia,
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 25/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Merci beaucoup pour ton assistance, tu es géniale, mon formulaire


marche à merveille.

Bisou.

Réponse

Nabil sur 17 avril 2016 à 5 h 37 min


Bonjour Lydia,

Merci pour votre vidéo. Je suis débutant en VBA et j’ai vraiment apprécié.
Que faut-il alors ajouter si les clients ont plusieurs adresses avec mail et
téléphones di érents (cas d’un client possédant une chaîne de
restaurant), mais qu’on aimerait garder en un seul code client dans notre
formulaire ? Merci.

Réponse

Lydia sur 17 avril 2016 à 5 h 38 min


Bonjour Nabil,

Soit vous mettez toutes les adresses dans une même cellule, soit
vous créez d’autres colonnes et modi ez le code en conséquence.

Réponse

Aimad sur 24 avril 2016 à 22 h 37 min


Bonjour Lydia, tout d’abord mille mercis pour le travail que vous publiez,
intéressant, béné que & surtout bien expliqué. Pour ce qui est de ma
part, j’essaye tant bien que mal de m’exercer avec Excel et la création de
formulaires userform avec VBA me plaît, je l’avoue. Alors, j’ai suivi votre
tuto sur YouTube avec sérieux et j’arrive avec vous à l’étape de l’insertion
du code, là, je m’arrête sec, je ne sais pas où trouver les lignes de code
que vous mettez sur votre page, help me Lydia.

Réponse

Lydia sur 24 avril 2016 à 22 h 38 min


Bonjour Aimad,

Comme indiqué dans la vidéo, il se trouve chez Excel-Plus.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 26/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Éric sur 14 mai 2016 à 19 h 08 min


Bonjour Lydia,
Votre tuto est excellent, je l’ai refait pas-à-pas, mais il bug, j’ai des lignes
de la macro en rouge, j’ai beau chercher, je ne vois pas.
Pourriez-vous m’orienter s’il vous plait ?
Par avance, merci.
Cordialement.

Réponse

Lydia sur 14 mai 2016 à 19 h 09 min


Bonjour Éric,

Je vous invite à copier-coller le code qui se trouve à la n de


l’article original chez Excel-Plus, car des lignes rouges signi ent
une erreur de syntaxe.

Réponse

Gaysiri sur 17 mai 2016 à 16 h 26 min


Salut,

Je voudrais comprendre comment calculer la somme des cases à cocher


de di érentes colonnes sous Excel.

Réponse

Lydia sur 17 mai 2016 à 16 h 27 min


Bonjour,

Si vous n’y connaissez rien en VBA, lancez l’enregistreur de macro,


faites le calcul sur votre feuille et copiez-collez le code créé par
Excel dans votre formulaire en l’adaptant.

Réponse

Prisca sur 10 juin 2016 à 13 h 17 min


Bonjour Lydia,
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 27/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Je n’arrive pas à retrouver le code pour les listes déroulantes en VBA.

J’ai un projet de gestion de plan pour validation avec des dates de


réception, je travaille sur 4 onglets. Dans un premier temps, je voudrais
avoir le nom des di érents plans selon une entreprise sélectionnée et,
dans un deuxième temps, avoir un message alerte qui m’a che la date
dont les délais de validation sont passés de 14 jours. Je ne sais pas
comment m’y prendre pour structurer mes données. Je précise que je
suis avancée dans mon projet, mais je ne sais plus quoi faire pour mes
résultats. J’ai besoin de votre aide.

Merci de bien vouloir m’aider.

Bonne journée.

Réponse

Lydia sur 10 juin 2016 à 13 h 18 min


Bonjour Prisca,

Le code VBA se trouve au bas de l’article en version texte chez


Excel-Plus.

Pour sélectionner un nom et avoir les informations, il faut utiliser


la RechercheV si c’est dans un onglet d’Excel et les listes
déroulantes, comme pour le numéro client, si c’est dans le
formulaire lui-même.
Ensuite, pour les messages d’alerte, je vous invite à consulter cet
article.

Bonne journée.

Réponse

Cédric sur 19 juin 2016 à 20 h 33 min


Bonjour,
J’ai suivi votre formation pour « Créer un formulaire personnalisé pour
saisir des données sur Excel », mais, dès que j’essaie d’exécuter le code,
j’ai le message suivant :
« Erreur de compilation, erreur de syntaxe » pour la ligne :

Private Sub UserForm_Initialize() (surligné en jaune)


Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 28/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

ComboBox2.List() = Array("", "M.", "Mme", "Mlle")


(surligné en bleu)

Pouvez-vous m’aider ?

Réponse

Lydia sur 19 juin 2016 à 20 h 34 min


Bonjour Cédric,

C’est probablement dû aux guillemets. Je vous invite donc à les


ressaisir manuellement.

Réponse

Patrice sur 5 juillet 2016 à 10 h 47 min


Bonjour

Si je connais correctement Excel, je commence la programmation VBA


pour ensuite l’appliquer à un formulaire de saisie de données. Et ce n’est
pas simple à soixante et quelques années…
J’ai donc essayé de refaire votre exercice clients. J’ai fait des copier-coller
de toutes les instructions.
Voici ce que cela donne :
Option Explicit
Dim Ws As Worksheet

'Pour la liste déroulante Code client


Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub

'Pour le bouton nouveau client


Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 29/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

contact ? ", vbYesNo, "Demande de confirmation d’ajout ")


= vbYes Then
L = Sheets("Clients").Range("a65536").End(xlUp).Row + 1
'Pour placer le nouvelenregistrement àla première ligne
de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox2
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
End If
End Sub

'Pour le bouton modifier


Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox(" Confirmez-vous la modification de ce contact
? ", vbYesNo, "Demande de confirmation de modification ")
= vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B ") = ComboBox2
For I = 1 To 7
If Me.Controls("TextBox " & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub

'Pour le bouton quitter


Private Sub CommandButton3_Click()
Unload Me
End Sub

'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 30/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste déroulante
Civilité
ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Clients") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 7
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub

Dès que je clique maintenant sur F5, j’ai un message sur la partie
userform qui m’indique « erreur de compilation, variable non dé nie,
surlignage de private sur userform et en bleu de combobox2.

J’ai la version Excel 2011 sur Mac.


Merci si vous pouviez m’aider.
Bien cordialement.

Réponse

Lydia sur 5 juillet 2016 à 10 h 48 min


Bonjour Patrice,

Est-ce que vous avez bien une combobox qui s’appelle


Combobox2 ? Car je viens de copier-coller votre code à la place du
mien en gardant les contrôles sur mon formulaire et il fonctionne.

Réponse

David sur 23 juillet 2016 à 18 h 45 min


Bonjour Lydia,

Je vous remercie pour votre tuto qui est vraiment bien détaillé.
Cependant, j’ai un souci dans la partie « Pour le formulaire » :
'Pour le formulaire
Private Sub UserForm2_Initialize()
Dim J As Long

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 31/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste déroulante
Civilité
ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Patients") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 22
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub

Dans mes listes déroulantes, les champs sont vides et, de plus, je n’arrive
pas à rappeler un client déjà dans ma base. Je suis en Excel 2007.

Je vous remercie de votre aide, encore une fois, bravo et merci.

Réponse

Lydia sur 23 juillet 2016 à 18 h 46 min


Bonjour David,

Vous appelez la procédure Private Sub UserForm2_Initialize(), or,


quel que soit le nom de votre UserForm, il sera toujours appelé
par Private Sub UserForm_Initialize().

Réponse

Bernard sur 12 septembre 2016 à 14 h 11 min


Bonjour Lydia.
Merci pour vos tutos qui sont clairs et très utiles à beaucoup de monde.
J’ai utilisé vos lignes de code VBA pour créer un tableau qui me permet de
gérer un groupe de cyclistes et les compétitions auxquelles ils sont
inscrits.
J’ai juste besoin d’une explication pour créer une combobox
supplémentaire.
Je n’arrive pas à savoir quel code insérer et où l’insérer.
Merci d’avance pour votre aide et encore bravo pour votre travail.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 32/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Bernard sur 13 septembre 2016 à 15 h 11 min


Bonjour Lydia,
Encore merci pour vos tutos.
J’ai trouvé la solution pour ajouter une combobox (voir code ci-après) :
Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste déroulante
Civilité
ComboBox2.List() = Array(" ", "M.", "Mme", "Mlle")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
Dim K As Long
ComboBox3.ColumnCount = 1 'Pour la liste déroulante
Catégorie
ComboBox3.List() = Array(" ", "1", "2", "3", "GS",
"F/GS", "13/14", "15/16")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For K = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next K
End With
For I = 1 To 10
Next I
End Sub

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 33/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Cela fonctionne très bien.


Encore merci.

Réponse

Bernard sur 14 septembre 2016 à 9 h 52 min


Bonjour Lydia,
Je me permets de revenir vers vous, car j’ai un problème.
Comme dit précédemment, j’ai rajouté une combobox et j’arrive à entrer
de nouveaux contacts, mais quand je veux modi er un contact, tout ce
qui se trouve après la combobox 3, en colonne J, est décalé. Je n’arrive
pas à trouver la solution.
Voici le code que j’ai écrit à partir du vôtre :
Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.List() = Array(" ", "M.", "Mme", "Mlle")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
Dim K As Long
ComboBox3.List() = Array(" ", "1", "2", "3", "GS",
"F/GS", "13/14", "15/16")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For K = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next K
End With
For I = 1 To 10

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 34/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Next I
End Sub
'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau
contact ?", vbYesNo, "Demande de confirmation d’ajout") =
vbYes Then
L = Sheets("Coursiers").Range("A" &
Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel
enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox2
Range("j" & L).Value = ComboBox3
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
Range("K" & L).Value = TextBox8
Range("L" & L).Value = TextBox9
Range("M" & L).Value = TextBox10
Dim J As Long
Dim I As Integer
ComboBox1.Clear
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 35/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row


.AddItem Ws.Range("A" & J)
Next J
End With
Else
'rien
End If
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Confirmez-vous la modification de ce contact
?", vbYesNo, "Demande de confirmation de modification") =
vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For I = 1 To 10
Next I
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "J") = ComboBox3
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 10
Next I
End If
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub
Merci d’avance.

Réponse

Lydia sur 14 septembre 2016 à 9 h 53 min


Bonjour Bernard,

Je suppose que votre combobox se trouve au milieu des 10


textbox ? Si oui, le souci vient de la boucle. Lorsque vous utilisez
une boucle (For … Next), il faut que les contrôles en question (les
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 36/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

textbox ici) se suivent sans interruption. Donc si votre combobox


se trouve à la 4e position par exemple, vous pouvez faire une
boucle des textbox de 1 à 3, puis une autre pour 5 à 10 et vous
programmez la combobox à part ou alors vous programmez
chaque contrôle sur ce modèle :
Ws.Cells(Ligne, "A") = Combobox1
Ws.Cells(Ligne, "B") = Textbox1
Ws.Cells(Ligne, "C") = Combobox2
etc.

Réponse

Bernard sur 15 septembre 2016 à 18 h 35 min


Bonjour Lydia
Merci pour votre réponse.
Je vais suivre vos conseils et vous donner le résultat.
J’ai une autre question si vous le permettez.
Comment réaliser une combobox à deux colonnes sous Excel ?
Merci d’avance pour votre réponse et encore bravo pour vos tutos qui
sont très bons.

Réponse

Lydia sur 15 septembre 2016 à 18 h 36 min


Voici un petit tutoriel expliqué à la page 132 et dont le corrigé se
trouve à la page 253 : https://books.google.fr/books?
id=na1pgupTIs0C&pg=PT135&dq=liste+d%C3%A9roulante+%C3%
A0+deux+colonnes+formulaire++excel+vba&hl=fr&sa=X&ved=0ah
UKEwj6-
rq08pHPAhUmL8AKHXqQBW0Q6AEIHjAA#v=onepage&q=liste%2
0d%C3%A9roulante%20%C3%A0%20deux%20colonnes%20formu
laire%20%20excel%20vba&f=false

Réponse

Bernard sur 18 septembre 2016 à 12 h 20 min


Bonjour Lydia,
Comme dit précédemment, j’ai modi é les boucles des textbox, cela
fonctionne pour l’entrée de nouvelles données, mais pas pour le bouton
Modi er.
Je vous joins le code, si vous avez le temps.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 37/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Encore bravo et merci pour vos tutos.


Option Explicit
Dim Ws As Worksheet
Private Sub CommandButton4_Click()
Rows([A2:A1048576].Find(ComboBox1.Value).Row).EntireRow.D
elete
Unload Me
UserForm1.Show
End Sub
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
ComboBox2.List() = Array("", "1", "2", "3", "GS", "F/GS",
"13-14", "15-16")
ComboBox3.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
End Sub
'Pour la liste déroulante ID
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox3 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
ComboBox2 = Ws.Cells(Ligne, "J")
For I = 8 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 38/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim J As Long
Dim I As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau
contact ?", vbYesNo, "Demande de confirmation d’ajout") =
vbYes Then
L = Sheets("Coursiers").Range("A" &
Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel
enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox3
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
Range("J" & L).Value = ComboBox2
Range("K" & L).Value = TextBox8
Range("L" & L).Value = TextBox9
Range("M" & L).Value = TextBox10
End If
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Confirmez-vous la modification de ce contact
?", vbYesNo, "Demande de confirmation de modification") =
vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "J") = ComboBox2
For I = 1 To 7
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
Ws.Cells(Ligne, "B") = ComboBox3
For I = 8 To 10
If Me.Controls("TextBox" & I).Visible = True Then

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 39/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)


End If
Next I
End If
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub

Bernard

Réponse

Lydia sur 18 septembre 2016 à 12 h 21 min


Bonjour Bernard,

C’est pour le bouton Modi er que je vous ai parlé des boucles


précédemment.

Réponse

Bernard sur 18 septembre 2016 à 18 h 13 min


Re-bonjour Lydia,
Justement, le problème est là, je n’arrive pas à modi er les boucles avec
succès.
Pour l’instant, j’en suis là, mais ça bloque.
'Pour le bouton Modifier 1ère partie
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim J As Long
Dim I As Integer
If MsgBox("Confirmez-vous la modification de ce contact
?", vbYesNo, "Demande de confirmation de modification") =
vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox3 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 40/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Next I
ComboBox2 = Ws.Cells(Ligne, "J")
For I = 8 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End If
End Sub
Encore merci.

Réponse

Lydia sur 18 septembre 2016 à 18 h 14 min


Bonjour Bernard,

Je ne comprends pas le souci, c’est exactement la même chose


que pour le bouton d’ajout comme vous l’avez fait ici pour la
Combobox2.

Réponse

Bernard sur 20 septembre 2016 à 11 h 28 min


Bonjour Lydia
Cela me décale les colonnes et le nom n’apparaît plus dans le formulaire.
Je suis novice en VBA et j’avoue que, là, je patine vraiment.
Encore merci de votre patience.
Bernard

Réponse

Lydia sur 20 septembre 2016 à 11 h 29 min


Bonjour Bernard,

Avez-vous essayé :
'Pour le bouton Modifier 1ère partie
Private Sub CommandButton2_Click()
Dim Ligne As Long
If MsgBox("Confirmez-vous la modification de ce
contact ?", vbYesNo, "Demande de confirmation de
modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 41/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

ComboBox1 = Ws.Cells(Ligne, "A")


ComboBox2 = Ws.Cells(Ligne, "B")
ComboBox3 = Ws.Cells(Ligne, "J")
TextBox1 = Ws.Cells(Ligne, "C")
TextBox1 = Ws.Cells(Ligne, "D")
TextBox1 = Ws.Cells(Ligne, "E")
TextBox1 = Ws.Cells(Ligne, "F")
TextBox1 = Ws.Cells(Ligne, "G")
TextBox1 = Ws.Cells(Ligne, "H")
TextBox1 = Ws.Cells(Ligne, "I")
TextBox1 = Ws.Cells(Ligne, "K")
TextBox1 = Ws.Cells(Ligne, "L")
TextBox1 = Ws.Cells(Ligne, "M")
End If
End Sub

Réponse

Bernard sur 22 septembre 2016 à 23 h 39 min


Bonsoir Lydia,
Désolé, mais cela ne marche pas non plus.
Si cela vous intéresse, je peux vous envoyer le chier pour que vous
puissiez le tester, mais je ne sais pas comment faire.
Merci encore pour votre aide.

Réponse

Lydia sur 22 septembre 2016 à 23 h 40 min


Bonsoir Bernard,

Désolée, je ne peux consacrer davantage de temps pour le


moment, car j’ai des commandes client et demandes de devis à
traiter en priorité.

Réponse

Jean-Claude sur 23 septembre 2016 à 17 h 31 min


Salut Lydia, moi, personnellement, je ne sais pas par quoi commencer, si
tu peux m’aider, ça me fera un grand plaisir.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 42/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Lydia sur 23 septembre 2016 à 17 h 32 min


Bonjour Jean-Claude,

Dans le menu, vous avez justement une page nommée Qui suis-je
et par où commencer ?.

Réponse

Bernard sur 24 septembre 2016 à 11 h 36 min


Bonjour Lydia,
Je comprends très bien et encore merci pour votre aide.

Réponse

Bernard sur 29 septembre 2016 à 19 h 46 min


Bonsoir Lydia,
Après un moment de ré exion sur mon problème, je reviens vers vous
pour dire que je l’ai résolu.
Le décalage des colonnes dans le formulaire venait, en fait, des valeurs
a chées à la ligne Ws.Cells (ligne, I+3) pour la liste déroulante et Ws.Cells
(ligne, I+9) dans le bouton Modi er. Depuis, cela marche.
Je vous joins le code au cas où :
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
ComboBox2.List() = Array("", "1", "2", "3", "GS", "F/1",
"F/2", "F/3", "F/GS", "13-14", "15-16", "D1", "D2", "D3",
"DIR/D1")
ComboBox3.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Coursiers") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 3 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
End Sub
'Pour la liste déroulante ID
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 43/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

If Me.ComboBox1.ListIndex = -1 Then Exit Sub


Ligne = Me.ComboBox1.ListIndex + 3
ComboBox3 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
ComboBox2 = Ws.Cells(Ligne, "J")
For I = 8 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau
contact ?", vbYesNo, "Demande de confirmation d’ajout") =
vbYes Then
L = Sheets("Coursiers").Range("A" &
Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel
enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox3
Range("J" & L).Value = ComboBox2
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
Range("K" & L).Value = TextBox8
Range("L" & L).Value = TextBox9
Range("M" & L).Value = TextBox10
End If
Unload Me
UserForm1.Show
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 44/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

If MsgBox("Confirmez-vous la modification de ce contact


?", vbYesNo, "Demande de confirmation de modification") =
vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 3
Ws.Cells(Ligne, "B") = ComboBox3
For I = 1 To 7
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
End If
Ws.Cells(Ligne, "J") = ComboBox2
For I = 8 To 10
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 9) = Me.Controls("TextBox" & I)
End If
Next I
Unload Me
UserForm1.Show
End Sub

Encore merci pour votre aide et bon courage à vous.

Réponse

Lydia sur 29 septembre 2016 à 19 h 47 min


Bonsoir et merci Bernard.

Bonne continuation à vous.

Réponse

Yassine sur 25 octobre 2016 à 11 h 06 min


Bonjour,
Tout d’abord, je vous remercie pour votre qualité de tuto.
Après avoir suivi toutes les procédures, au moment de
tester le formulaire, j’obtiens le message suivant : « Erreur
d’exécution ‘9’ l’indice n’appartient pas à la sélection ».
Comment y voir plus clair ?
Merci in niment.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 45/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Lydia sur 25 octobre 2016 à 11 h 07 min


Bonjour Yassine,

Cette erreur apparaît lorsque appelez un objet qui


n’existe pas (contrôle, chier…) : vous serez aidé
par la ligne jaune qui apparaît au moment de
l’erreur pour vous indiquez l’origine du problème.

Réponse

Yassine sur 3 novembre 2016 à 16 h 12


min

Merci beaucoup, le problème est résolu


🙂

Mohsen sur 28 octobre 2016 à 11 h 59 min


Merci beaucoup.

Réponse

Harry sur 6 novembre 2016 à 1 h 38 min


Bonjour,
Comment on peut régler le problème d’Erreur d’exécution ‘9’ : L’indice
n’appartient pas à la sélection. Je suis débutant et je pense avoir tout
respecté sur la démo.
Quelqu’un a déjà eu a aire à cette erreur ?
Si oui, comment la résoudre ?

Réponse

Lydia sur 6 novembre 2016 à 1 h 39 min


Bonjour Harry,
Avez-vous exactement les mêmes noms que dans mon chier
( chier, contrôles…), car cette erreur signi e que vous appelez un
objet qui n’existe pas ?

Réponse
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 46/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Harry sur 6 novembre 2016 à 13 h 44 min


Bonjour Lydia,
Merci pour ton retour.
En fait, je ne comprends pas d’où vient l’erreur.
J’ai renommé la feuille de mon classeur en lui donnant le même nom que
le vôtre (clients) et le contenu est le même.
D’autre part, j’ai nommé mon chier clients.xlsm.
Au niveau du sheet (« clients ») qui est le nom de la feuille du classeur.
Lorsque je fais l’exécution pas à pas avec F8 le programme se bloque au
niveau de la ligne 9.
Puis-je avoir plus d’indications sur chier et contrôle ?
Merci d’avance.

Réponse

Lydia sur 6 novembre 2016 à 13 h 45 min


Bonjour Harry,

Qu’est-ce qu’il y a écrit sur la ligne 9 ?

Réponse

Bernard sur 30 novembre 2016 à 15 h 10 min


Bonjour Lydia,
Voilà, j’ai un problème avec l’utilisation d’une checkbox.
J’ai écrit le code suivant, mais j’ai une erreur à AddItem.

Private Sub CheckBox1_Click()


Dim j As Long
If Worksheets("Inscription_Route").CheckBox1.Value = True
Then
Sheets("Chèques").Select
For j = 2 To Range("E" & Rows.Count).End(xlUp).Row
AddItem("1").Range ("E" & j)
End If
Sheets("Inscriptions_ROUTE").Select
Range("E34").Select
End Sub

Cette formule doit me permettre d’écrire le chi re 1 dans la colonne E de


la Feuille « Chèque » quand je coche la checkbox placée sur la feuille
« inscription_ROUTE ».

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 47/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Merci d’avance pour votre réponse.


Bernard

Réponse

Lydia sur 30 novembre 2016 à 15 h 11 min


Bonjour Bernard,

Je ne comprends pas l’utilisation de Additem dans une checkbox


alors que c’est destiné aux listes (en tout cas, je ne l’ai encore
jamais vu en dehors des listes puisque cela sert à composer une
liste).

Réponse

Bernard sur 30 novembre 2016 à 23 h 18 min


Bonsoir Lydia
Je ne savais pas. J’ai encore beaucoup à apprendre.
Je revois ma copie.
Encore merci.

Réponse

Benoît sur 2 décembre 2016 à 12 h 54 min


Bonjour Lydia,
Merci pour votre travail, respect.
J’ai bien lu votre dial de Pierre pour ce qui était de forcer le format d’une
TextBox.
Mais ce n’est pas vraiment ce que je recherche, j’aimerais pouvoir saisir
dans une TextBox « 010916 » et avoir, comme résultat dans la cellule, une
date « 01-09-2016 ».
J’ai fait certains essais avec « Cdate » etc. et, ne maîtrisant pas du tout le
VBA, je vous appelle au secours ;-).

Merci par avance.


Cordialement.

Réponse

Lydia sur 2 décembre 2016 à 12 h 55 min


Bonjour Benoît,

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 48/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Personnellement, je conserverais le code de Pierre en remplaçant


le slash par un tiret, puis j’ajouterais :
Private Sub TextBox1_AfterUpdate()
TextBox1 = Left(TextBox1, Len(TextBox1) - 2) & "20"
& Right(TextBox1.Value, 2)
End Sub
Cela modi erait l’a chage dans la textbox, mais vous laisserait
saisir de la manière indiquée.

Réponse

Benoît sur 5 décembre 2016 à 12 h 00 min


Bonjour Lydia,
C’est parfait.
Merci à vous et Pierre.

Cordialement.

Réponse

Josué sur 25 janvier 2017 à 16 h 07 min


Quels sont les secteurs qui demandent l’utilisation de VBA sous Excel ou
dans quels domaines ou bien à qui, par exemple, je peux faire des
prestations de service ?

Réponse

Lydia sur 25 janvier 2017 à 16 h 08 min


Si vous connaissez le VBA et avez déjà créé des applications, vous
devriez avoir une idée de votre clientèle cible.

Réponse

Faouzi sur 12 février 2017 à 19 h 20 min


Bonjour,
Je suis un débutant et, dans mon job, j’ai voulu faire un formulaire de
saisie de données comportant un tableau et regroupant plusieurs
feuilles.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 49/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Cédric sur 20 février 2017 à 19 h 44 min


Bonjour,
Je souhaite rajouter des checkbox dans mon formulaire. Pour l’ajout d’un
nouveau contact, la valeur vrai-faux apparaît bien, mais, lors d’une
recherche via code client, je n’arrive pas à ramener la valeur sur le
formulaire.
De plus, peut-on changer les valeurs vrai-faux par autre chose (oui-non
par exemple).

Réponse

Lydia sur 20 février 2017 à 19 h 45 min


Bonjour,
Il faut coder la checkbox après mise à jour du code client avec If
(If lacellule = « vrai » then lachekbox = true…)
Pour la 2e question, toujours en codant (si la checkbox est cochée
alors la cellule X = « oui »).

Réponse

Cédric sur 21 février 2017 à 20 h 19 min


Merci. Je vais essayer cela…

Réponse

Adrien sur 25 février 2017 à 12 h 35 min


Bonjour,

Tout d’abord, je vous remercie pour vos tutoriels et autres documents.


Tout est très clair ! Je démarre tout juste VBA !

Concernant le formulaire personnalisé, je souhaite créer dans une feuille


1 avec plusieurs boutons. Par exemple : « saisir formulaire 1 », « saisir
formulaire 2 ».
La feuille 1 est une sorte d’accueil.

Je voudrais que mon formulaire 1 apparaisse dans ma feuille 2 et que


mon formulaire 2 apparaisse dans ma feuille 3.

Dans VBA, j’ai bien nommé les sheets avec les noms des feuilles
correspondants.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 50/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Cependant, lors que je remplis mon formulaire, c’est la feuille 1 qui est
alimentée et non pas la feuille 2 ou 3.

Merci d’avance pour votre aide.

Réponse

Lydia sur 25 février 2017 à 12 h 36 min


Bonjour et merci Adrien.

Ajoutez simplement Sheets("nomonglet").Select juste avant


la première ligne de code alimentant la feuille concernée.

Réponse

Zady sur 4 mars 2017 à 10 h 22 min


Bonjour Lydia,
Je n’arrive pas à lancer la macro, il y a ce message d’erreur qui s’a che.
Désolé, c’est la 1ère fois que j’utilise VBA.

Sub lancer_formulaire()
UserForm1.Show vbModeless.
End Sub

Réponse

Lydia sur 4 mars 2017 à 10 h 23 min


Bonjour Zady,

Plusieurs possibilités :
– Avez-vous vraiment mis un point après vbModeless ? Si oui, il
faut l’enlever.
– Votre formulaire s’appelle-t-il UserForm1 ?
– En n, il est probable que le problème ne vienne pas du module,
mais du formulaire lui-même. Dans ce cas, faites F5 lorsque vous
êtes sur votre formulaire dans la fenêtre VBA et voyez la ligne
surlignée.

Réponse

Rahal sur 10 avril 2017 à 9 h 43 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 51/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

S’il vous plaît, j’ai besoin de votre aide.


Comment imprimer des colonnes spéci ques d’une listbox VBA Excel ?
Exemple : les quatre premières colonnes.
Merci bien.

Réponse

Lydia sur 10 avril 2017 à 9 h 44 min


Bonjour,

Le plus simple est de reporter les données de la listbox dans la


feuille Excel et de demander à imprimer cette zone uniquement.

Réponse

Rahal sur 11 avril 2017 à 20 h 20 min


Merci bien pour votre réponse.
Mais je veux une macro qui fait l’a aire ou bien un code VBA Excel si
possible.

Réponse

Lydia sur 11 avril 2017 à 20 h 21 min


C’est une macro qu’il faut créer, mais c’est une prestation que je
facture alors je ne peux pas éthiquement donner le code
gratuitement.

Réponse

Hachem sur 12 avril 2017 à 17 h 38 min


Salut Lydia,
J’ai deux classeurs : le premier s’appelle classeur1 et le deuxième
s’appelle classeur2.
Je n’arrive pas à copier / coller des lignes fusionnées d’un tableau depuis
la Feuil1(du classeur1) vers la Feuil2(du classeur 2)
J’aimerais bien savoir comment le faire.
En fait, j’ai essayé, mais pas de résultat.
Voici mon code :
Sub test()
Dim finalrow As Long
Workbooks("Classeur1").Worksheets("Feuil1").Range("D1:D"

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 52/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

& finalrow).Value =
Workbooks("Classeur2").Worksheets("Feuil2").Range("A2:A"
& finalrow).Value
End Sub
Je galère 🙁
Merci in niment par avance de votre aide et de vos connaissances
éclairées !!!

Réponse

Lydia sur 12 avril 2017 à 17 h 39 min


Bonjour Hachem,

nalrow est une plage nommée ?

Réponse

Alexis sur 19 avril 2017 à 15 h 23 min


Bonjour Lydia,

Tout d’abord, comme lu dans beaucoup de commentaires, je tiens à vous


remercier particulièrement pour vos tutos qui sont particulièrement
utiles et faciles de prise en main.

Étant néophyte dans l’écriture VBA, je me permets de vous solliciter a n


d’obtenir votre aide.
En e et, j’ai réalisé un formulaire servant d’outil de saisie pour un
dashboard sur la base de vos codes adaptés aux données dont j’ai
besoin.

Cependant, je rencontre quelques di cultés :


– Lors de la saisie via le formulaire, les données apparaissent en format
texte et non nombre, cela pose problème notamment pour l’utilisation de
tableau croisé dynamique.
– Mon tableau de données étant légèrement di érent du vôtre, avec
notamment plus de colonnes et séparées par d’autres colonnes de calcul,
cela me pose problème pour la modi cation. En e et, pour l’ajout de
données, c’est OK, mais quand je souhaite modi er une ligne, les
données inscrites dans les di érentes textbox du formulaire s’ajoutent
les unes après les autres dans les colonnes de mon tableau et non dans
les colonnes voulues.

Je suis à l’écoute de toutes les solutions que vous pouvez me présenter et


vous remercie vivement.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 53/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Cordialement.
Alexis

Réponse

Lydia sur 19 avril 2017 à 15 h 24 min


Bonjour Alexis,

– Il faut utiliser ce genre de syntaxe pour forcer le format :


Range(« A » & L).Value = CCur(Prix_unitaire.Value) (Prix_unitaire
étant une textbox au format monétaire)
– Lorsque les colonnes ne se suivent pas, il ne faut pas utiliser de
boucle (For I = 1 To 7 par exemple), mais programmer chaque
colonne : Ws.Cells(Ligne, « A ») = Textbox1

Réponse

Alexis sur 20 avril 2017 à 9 h 02 min


Bonjour Lydia,

Quelle réactivité 🙂 ! E ectivement, en fouillant un peu et en


ré échissant, j’ai réussi à obtenir ce que je voulais, mais en grande partie
grâce à votre site.

Encore merci beaucoup pour vos tutos.

Bonne journée,
Alexis

Réponse

Souha sur 24 avril 2017 à 16 h 14 min


Bonjour Lydia,

J’ai essayé hier de faire presque le même exemple que vous en créant un
chier Excel qui ressemble au vôtre et ça a fonctionné parfaitement, j’en
pro te pour vous remercier, car vous m’avez facilité la vie.

Aujourd’hui, je veux l’appliquer sur mon sujet de mémoire où il s’agit d’un


chier à 43 colonnes et 108 lignes, la variable « Civilité » étant placée à la
colonne « O », j’avais juste changé la colonne « B » dans votre code par
« O », et là, je reçois un message d’erreur me surlignant la ligne :
Comnobox2 = WS.Cells(Ligne, "O") en jaune et m’indiquant le
message : « Objet requis ».

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 54/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Pouvez-vous me dire où se situe l’erreur s’il vous plaît, je suis dessus


depuis des heures et je ne sais toujours pas pourquoi cela m’arrive ?

Réponse

Lydia sur 24 avril 2017 à 16 h 15 min


Bonjour Souha,

Dans votre commentaire, vous avez écrit Comnobox2, est-ce la


même chose qui est écrite dans votre code ? Si oui, le problème
vient de là.

Réponse

Souha sur 24 avril 2017 à 22 h 44 min


Bonsoir,

J’ai trouvé l’erreur, c’était un objet inconnu, car j’avais


oublié de l’identi er dans l’instruction Dim tout au début
du programme (ws), merci encore une fois pour votre
attention, vous êtes juste magni que.

Une dernière question : est-il possible de rajouter un


bouton de commande pour permettre à l’utilisateur
d’insérer les nouvelles données (après avoir saisi un
nouveau candidat avec toutes ses informations) dans une
nouvelle feuille (nouvel onglet que l’on renomme après) ?
Car je suis en train d’automatiser des rapports par rapport
à une sélection des candidats et je souhaite personnaliser
chaque ligne du tableau (chaque candidat) dans un onglet
séparé. Si oui, le code doit ressembler à quoi à peu près,
s’il vous plaît ?

Merci encore une fois.

Cordialement.

Réponse

Lydia sur 24 avril 2017 à 22 h 45 min


Bonsoir,

Il faudrait ajouter un onglet : Sheets.Add


Puis, copier-coller la procédure qui copie les
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 55/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

données du formulaire vers l’onglet de base pour


que cela fasse la même chose sur le nouvel onglet.

Réponse

Irma sur 29 mai 2017 à 15 h 19 min


Bonjour,
Tout d’abord, merci pour ces explications !

J’ai déjà créé un formulaire d’ajout de contact qui marche parfaitement.


Mais je souhaite également créer un deuxième formulaire pour modi er
les infos de mes contacts en les retrouvant avec une combobox par les
noms de famille (colonne B de mon chier).
J’ai 25 colonnes en tout et mon tableau commence à la ligne 15 (titres du
tableau).

Voici mon programme :


FORMULAIRE :
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
Set Ws = Sheets("VIP")
With Me.ComboBox1
For J = 16 To Ws.Range("B" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 24
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
BOUTON MODIFIER :
Private Sub CommandButton1_Click()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 24
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 56/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

End If
LISTE DÉROULANTE PAR NOM :
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 24
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
End Sub

Cela fait quelques jours que j’essaye de trouver le problème, mais rien ne
marche.
Excel m’indique « erreur d’exécution 9, l’indice n’appartient pas à la
sélection ».
Il m’indique le programme du FORMULAIRE de With Me.combobox1 à
End Sub comme quoi l’erreur vient de là.

Si vous avez une idée de solution, je suis à votre écoute, car je suis assez
désespérée ! Encore merci beaucoup !!

Cordialement.

Réponse

Lydia sur 29 mai 2017 à 15 h 20 min


Bonjour Irma,

Il faudrait modi er le A en B.

Réponse

Irma sur 1 juin 2017 à 10 h 39 min


Bonjour,

Oui, c’est ce que j’ai fait du coup et cela marche.


Merci !

Une autre question : j’ai mis en place une formule pour


qu’une date de modi cation automatique s’inscrive dans
la colonne Y dès que la ligne d’une personne est modi ée.
Elle marche, mais pour la colonne entière de la feuille et
j’aimerais que cette date automatique ne soit que dans le

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 57/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

tableau concerné.
Est-ce possible de sélectionner le tableau, même si des
lignes se rajouteront par la suite ?
Merci d’avance.

Réponse

Lydia sur 1 juin 2017 à 10 h 40 min


Bonjour,
Pour que le tableau reste dynamique, il faut le
transformer en tableau.

Réponse

Sylassiste sur 16 septembre 2017 à 14 h 26 min


Bonjour et merci pour vos tutos très utiles et détaillés.
Je débute complètement et j’ai suivi à la lettre vos indications, je suis
bloquée au moment de faire F5 pour véri er mon formulaire. J’ai une
fenêtre qui s’ouvre et qui a che :
Erreur de compilation: Attendu : n d’instruction.
De plus, l’écriture verte est rouge malgré le copier-coller de vos codes sur
Excel-Plus.
Avez-vous une solution à m’indiquer ? Merci d’avance.

Réponse

Lydia sur 16 septembre 2017 à 14 h 27 min


Bonjour,

Est-ce bien le contenu du chier .txt que vous avez copié-collé (à


la n de l’article d’Excel-Plus) ? Si du rouge persiste, c’est une
erreur de syntaxe (mauvais guillemets, virgule à la place de
point…).

Réponse

Patience sur 20 septembre 2017 à 15 h 00 min


Bonjour,
Vraiment merci pour tout. Je vous souhaite bien de choses et du courage.
Merci.

Réponse
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 58/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante
épo se

Bernard sur 21 octobre 2017 à 15 h 08 min


Bonjour Lydia.
Petite question concernant la casse dans les cellules.
J’aimerais savoir comment modi er la casse (passer de minuscule à
majuscule), en introduisant du VBA dans le code de votre formulaire.
Merci d’avance.
Bernard

Réponse

Lydia sur 21 octobre 2017 à 15 h 09 min


Bonjour Bernard,

Il faut utiliser UCase.


Par exemple : UCase (Textbox1.value)

Réponse

Bernard sur 22 octobre 2017 à 14 h 23 min


Bonjour Lydia et merci.
La conversion se fait très bien.
Bonne continuation à vous.
Bernard

Réponse

Rémi sur 24 octobre 2017 à 18 h 39 min


Bonjour Lydia,
Tout d’abord, bravo et merci pour ce que vous faites !
J’ai appliqué ce formulaire dans un classeur et cela fonctionne très bien.
J’ai rajouté la fonction Sheets("").Select parce que je voulais le
bouton dans un onglet di érent de celui de ma base de données.
Cela fonctionne, mais du coup l’onglet « Base de données » reste
sélectionné…
Comment faire pour rester sur l’onglet initial dans lequel j’ai mis un
bouton pour lancer le formulaire ?
Merci par avance.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 59/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Lydia sur 24 octobre 2017 à 18 h 40 min


Bonjour Rémi,

Si j’ai bien compris, il vous su rait de rajouter la même fonction


en n de procédure pour revenir à l’autre onglet.

Réponse

Rémi sur 25 octobre 2017 à 7 h 40 min


Bonjour,
En e et, c’est très (trop !!!) logique !
J’ai donc inséré la même fonction avec le nom de l’onglet de départ.
Existe-t-il une fonction pour revenir sur l’onglet actif plutôt que sur un
onglet nommé ?
Je m’explique, j’ai dans mon classeur une feuille « base de données »,
dans laquelle sont stockées mes données et une feuille Matrice dans
laquelle il faut renseigner plusieurs infos relatives à une manifestation.
Pour chaque manifestation, on fait une copie de cette matrice, on la
nomme à la date de la manifestation et on la remplit puis on l’imprime.
D’où l’idée de revenir sur l’onglet actif puisqu’il va changer de nom à
chaque manifestation.
Suis-je bien clair ?
Merci d’avance !
Rémi

Réponse

Lydia sur 25 octobre 2017 à 7 h 41 min


Bonjour,

Dans ce cas, il faut déclarer le nom comme une variable (exemple


: Nom_onglet = ActiveSheet.Name) et ensuite sélectionner
cette variable.

Réponse

Rémi sur 26 octobre 2017 à 16 h 04 min


Bonjour,
Merci pour votre réponse.
Si j’ai bien compris, Nom_onglet est le nom de l’onglet qui sera une
variable ?
Je suis un peu novice…

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 60/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Et où dois-je placer cette ligne de code ?


Merci !

Réponse

Lydia sur 26 octobre 2017 à 16 h 05 min


Bonjour,

Oui, c’est bien cela et il faut indiquer la valeur de la variable avant


que l’action soit produite, c’est-à-dire avant de changer d’onglet.
Et avec un Dim Nom_onglet As String pour la déclaration en
début de procédure, c’est encore mieux.

Réponse

Rémi sur 26 octobre 2017 à 18 h 16 min


Re-bonjour,
Re-merci !
OK pour la déclaration de la variable en début de procédure, je l’avais
anticipé.
Du coup, le mieux, pour moi, serait de proposer dès l’ouverture du chier
de demander avec une boîte de dialogue de créer ou modi er une
manifestation.
En cas de création, rentrer le nom de la manifestation. Du coup, existe-t-il
un code qui lancerait la copie de l’onglet de référence en n de classeur
en le nommant ?
Et en cas de modi cation, l’activation de l’onglet avec le nom sélectionné ?
Et du coup faut-il rajouter une colonne « Noms onglet » dans ma feuille
« Base de données » ?
J’en demande beaucoup d’un coup…

Réponse

Lydia sur 26 octobre 2017 à 18 h 17 min


Pour créer l’onglet, il faut un champ avec le nom dans le
formulaire et un code de ce type :
With ActiveWorkbook.Sheets
.Add after:=Worksheets(Worksheets.Count)
End With
Pour l’activer, c’est le même code que précédemment.
Garder le nom ne me semble pas nécessaire puisque ça récupère
le nom en début de procédure.
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 61/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Bernard sur 27 octobre 2017 à 20 h 41 min


Bonsoir Lydia et merci pour toute l’aide que vous nous apportez.
Je reviens vers vous, car j’ai une demande un peu compliquée.
J’ai créé un chier Excel avec une che nommée original qui comporte
des renseignements des coureurs de notre club. Je voudrais recopier
cette feuille dans ce classeur, ou un autre, autant de fois qu’il y a de
coureurs (35 pour l’instant) et que chaque onglet porte le nom du
coureur concerné. Est-ce possible et, si oui, comment faire ?
Merci d’avance pour votre aide.
Très amicalement.

Réponse

Lydia sur 27 octobre 2017 à 20 h 42 min


Bonjour Bernard,

Voici un lien qui devrait répondre à votre question.

Réponse

Bernard sur 29 octobre 2017 à 18 h 51 min


Bonsoir Lydia,
Merci pour le lien, je vais tester.

Réponse

Rémi sur 30 octobre 2017 à 12 h 53 min


Bonjour,
Merci pour vos précédentes réponses.
Je me suis inspiré de votre réponse à Bernard et j’ai un peu mélangé tout
ça…
Mais sans succès…
Dans l’évolution de ma programmation, j’ai créé un UserForm (manif) qui
apparaît à l’ouverture de mon chier Excel.
Il contient 1 ComboBox (list_manif) et 3 boutons : Créer, Modi er, Quitter.
L’idée était soit :
– Entrer le nom d’une nouvelle manifestation et cliquer sur Créer et que
cela créé une copie de ma feuille Matrice dans un nouvel onglet en le

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 62/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

nommant avec le nom entré


– Sélectionner une manifestation existante et cliquer sur Modi er et que
cela active l’onglet correspondant

1er souci : la liste de mes manifestations n’apparaît pas dans ma liste


déroulante, donc je ne peux pas tester le bouton Modi er.
2ème souci : si je rentre un nom et que je clique sur Créer, il ne crée pas
l’onglet.

Voici mon code :


Option Explicit
Dim Ws As Worksheet
Dim nom_onglet As String
'Formulaire
Private Sub manif_Initialize()
Dim J As Long
ThisWorkbook.Worksheets("Matrice").Activate
Set Ws = Sheets("Base de données")
With Me.list_manif
For J = 2 To Ws.Range("H" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("H" & J)
Next J
End With
ThisWorkbook.Worksheets("Matrice").Activate
End Sub
'Liste déroulante Manif
Private Sub list_manif_Change()
Dim Ligne As Long
Set Ws = Sheets("Base de données")
If Me.list_manif.ListIndex = -1 Then Exit Sub
Ligne = Me.list_manif.ListIndex + 2
list_manif = Ws.Cells(Ligne, "H")
ThisWorkbook.Worksheets("Matrice").Activate
End Sub
'Fonction FeuilleExiste
Function FeuilleExiste(nom_onglet As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(nom_onglet).Name ""
On Error GoTo 0
End Function
'Bouton Créer
Private Sub creer_Click()
Dim L As Integer

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 63/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim J As Long
Set Ws = Sheets("Base de données")
If MsgBox("Confirmez-vous la création de cette nouvelle
manifestation?", vbYesNo, "Demande de confirmation
d'ajout") = vbYes Then
L = Sheets("Base de données").Range("H" &
Rows.Count).End(xlUp).Row + 1
Range("H" & L).Value = list_manif
End If
Application.ScreenUpdating = False
Set Ws = Sheets("Base de données")
For J = 1 To Ws.Range("H" & Rows.Count).End(xlUp).Row
If Not FeuilleExiste(Ws.Range("H" & J).Value) Then
Sheets("Matrice").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Ws.Range("H" & J)
End If
Next J
End Sub
'Bouton Modifier
Private Sub modifier_Click()
Dim Ligne As Long
Dim I As Integer
Set Ws = Sheets("Base de données")
If MsgBox("Confirmez-vous la modification de cette
manifestation?", vbYesNo, "Demande de confirmation de
modification") = vbYes Then
If list_manif.ListIndex = -1 Then Exit Sub
Ligne = list_manif.ListIndex + 2
Ws.Cells(Ligne, "H") = list_manif
list_manif = ActiveSheet.Name
End If
End Sub
'Bouton Quitter
Private Sub quitter_Click()
Unload Me
End Sub

Alors, j’ai mélangé des infos de plusieurs de vos tutos et commentaires et


j’ai surement pas fait les choses dans le bon ordre !
Pouvez-vous m’aider à y voir plus clair ?
Merci par avance.
Rémi

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 64/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Réponse

Lydia sur 30 octobre 2017 à 12 h 54 min


Bonjour Rémi,
Si vous avez une liste déroulante sur le formulaire, pourquoi ne
pas utiliser ce code (Choix_client, dans mon exemple, étant ma
liste déroulante) :
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Sheets
Choix_client.AddItem Ws.Name
Next
End Sub
'Pour le choix de l'onglet
Private Sub Choix_client_Change()
Worksheets(Choix_client.Value).Select
Unload Me
End Sub

Réponse

Rémi sur 31 octobre 2017 à 10 h 06 min


Bonjour Lydia,
MERCI !
C’est magni que.
Par contre, j’ai un autre souci.
J’arrive à créer des manifestations dans des nouveaux onglets, mais ma
liste déroulante de ma ComboBox reste vide.
J’ai tenté de reprendre le code, mais sans succès…

Réponse

Lydia sur 31 octobre 2017 à 10 h 07 min


Bonjour Rémi,

C’est pourtant le code que j’ai utilisé pour un de mes chiers.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 65/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Rémi sur 9 novembre 2017 à 17 h 42 min


Bonjour Lydia,
Bon, j’ai « restructuré » ma feuille base de données en nommant les
champs comme il faut et, du coup, cela fonctionne mieux (j’ai exploré
d’autres tutos sur le site, re-merci !).
Je me pose du coup une autre question : est-il possible de faire un chier
di érent pour ma feuille « base de données », de manière à ce que les
informations qui y sont puissent être utilisées à partir d’un autre chier
Excel ?
Je m’explique, ma base de données contient des informations sur des
personnes et des entreprises (noms, prénoms, adresses, tél. …).
J’ai un chier Excel « Feuille de Route » et une autre « Manifestations » qui
ont besoin d’aller chercher des données dans cette même base, et/ou de
la remplir avec de nouveaux contacts à partir de chaque chier.
J’espère que ce que je dis est assez clair !
Merci par avance.
Rémi

Réponse

Lydia sur 9 novembre 2017 à 17 h 43 min


Bonjour Rémi,
Dans ce cas, pourquoi ne pas tout laisser dans le même chier ?
Car cela est possible, mais il faut modi er la programmation et
faire des basculements d’un chier à l’autre.

Réponse

Rémi sur 10 novembre 2017 à 10 h 35 min


Bonjour Lydia,
Merci de votre retour.
Voici mon fonctionnement :
2 chiers avec une « matrice » vierge sur laquelle sont mes commandes
de macros et, pour chaque manifestation, je fais un onglet pour feuille de
route et un autre pour manifestation.
J’ai rajouté un onglet « base de données » depuis que je suis votre blog et
c’est déjà beaucoup plus confortable pour travailler !
Mais j’avais l’habitude de faire un classeur par mois, sinon mes classeurs
deviennent très « lourds » et mettent du temps à charger et à enregistrer.
Jusqu’ici, je faisais une copie du classeur d’un mois sur l’autre, mais
maintenant que j’utilise des formulaires qui mettent à jour une base de
données, le mois suivant n’a pas les derniers ajouts de la n du mois

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 66/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

précédent.
D’où mon idée de faire un classeur base de données et 2 autres pour
Manifestation et Feuille de route.
Mais je ne sais pas si c’est possible.
Ni si vous arrivez à me suivre, l’informatique n’est pas mon métier !
Merci.
Rémi

Réponse

Lydia sur 10 novembre 2017 à 10 h 36 min


Si c’est juste des listes déroulantes, cela peut être simple comme
ici : https://forum.excel-pratique.com/excel/liste-deroulante-avec-
donnees-dans-un-autre-classeur-t21889.html
Mais si c’est plus complexe, peut-être mieux vaut-il copier l’onglet
de base de données le plus récent dans les nouveaux chiers que
vous copiez chaque mois.

Réponse

Sébastien sur 15 novembre 2017 à 22 h 13 min


Bonjour,

Merci pour ce tuto. J’ai une question supplémentaire. Je souhaite créer un


bouton imprimer le formulaire sur l’userform. Pourriez-vous me
communiquer le code VBA pour cette fonction (je n’y connais rien en
VBA…) ?

Merci !!

Réponse

Lydia sur 15 novembre 2017 à 22 h 14 min


Bonjour,

Le code est Me.PrintForm, mais c’est l’impression du formulaire


directement.
Je préfère, personnellement, créer un autre onglet avec une
présentation type, c’est-à-dire une présentation de devis, facture,
che, etc. selon le type de données traitées et ensuite je reporte
les données sélectionnées dans l’userform vers cet onglet dans
les cellules correspondantes sur clic du bouton Imprimer.

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 67/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Plus « compliqué » peut-être pour vous, mais plus agréable à lire


🙂

Réponse

Sébastien sur 15 novembre 2017 à 23 h 21 min


Merci pour cette réponse ultra rapide. Je préfère,
personnellement, la première solution…
Bonne soirée.

Réponse

Wissam sur 30 décembre 2017 à 23 h 23 min


Bonjour,
Sur mon Excel version 2016, je n’ai pas l’option formulaire !!! Que puis-je
faire ?
Merci.

Réponse

Lydia sur 31 décembre 2017 à 23 h 24 min


Bonjour,

Vous êtes sur Mac ou Windows ?

Réponse

Wissam sur 2 janvier 2018 à 15 h 13 min


Bonjour, je suis sur MAC.

Réponse

Lydia sur 2 janvier 2018 à 15 h 14 min


Microsoft n’a apparemment pas ajouté l’option
pour Excel 2016 sur Mac.

Réponse

Wissam sur 3 janvier 2018 à 13 h 00 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 68/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

D’accord, merci pour votre réponse.


Donc pas de moyen de le faire sur MAC ?

Réponse

Lydia sur 3 janvier 2018 à 13 h 01 min


Pas à ma connaissance.

Réponse

Gwendoline sur 9 février 2018 à 19 h 25 min


Bonjour,
J’ai un problème avec mon Excel pour faire les codes de mon formulaire.
Ça me met « Erreur de compilation : variable non dé nie » quand je tape
F5 quand j’ai ni tous mes codes.

Réponse

Lydia sur 9 février 2018 à 19 h 26 min


Bonjour,

C’est que vous utilisez une variable qui n’a pas été dé nie au
préalable.
Exemple : dans votre code, vous utilisez L = ..., mais
auparavant vous n’avez pas indiqué le type de données de L (Dim
L As String par exemple).

Réponse

Patrick sur 24 février 2018 à 23 h 07 min


Bonsoir Lydia,
Votre formulaire fonctionne bien, j’ai rajouté une textbox date, tout
marche correctement et va se mettre dans ma feuille base. Et j’ai rajouté
pour que ça aille dans ma feuille journée, mais si je change ma date dans
ma feuille journée, les infos ne correspondent plus avec la date de ma
base. Là je bugue, merci de votre réponse.

Réponse

Lydia sur 24 février 2018 à 23 h 08 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 69/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Patrick,

Qu’avez-vous fait pour que « ça aile dans la feuille journée » ?

Réponse

Patrick sur 6 mars 2018 à 0 h 54 min


Bonsoir Lydia,
J’ai rajouté ce code en plus :
Sheets("Tableaudebord").Activate
Range("Tactive").End(xlUp).Select
Selection.Offset(1, 0)
ActiveCell.Offset(0, 0).Value = Tbon
ActiveCell.Offset(0, 1).Value = CbositeD
ActiveCell.Offset(0, 4).Value = CbolieuD
ActiveCell.Offset(0, 11).Value = Cbocategorie
ActiveCell.Offset(0, 14).Value = Cboproduit
ActiveCell.Offset(0, 20).Value = CBositeA
ActiveCell.Offset(0, 23).Value = CbolieuA
ActiveCell.Offset(0, 30).Value = Tpoid
Ça marche bien, mais ce qui se passe c’est que, dès que je
change de jour sur mon tableau de bord, ceci reste et non
les données de la journée en cours, peut-être qu’avec une
recherche, je ne sais plus. Merci.

Réponse

Lydia sur 6 mars 2018 à 0 h 55 min


Bonjour Patrick,

Je suis désolée, mais je ne comprends vraiment


pas ce que vous cherchez à faire.

Réponse

Patrick sur 10 mars 2018 à 10 h 34 min


Bonjour, en langage plus clair, je voudrais
que dans mon classeur « 1 » où se trouve
mon userform, que je compare mon
numéro de client ou la date avec un
classeur « 2 » et que je récupère les

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 70/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

données du 1 pour les exportées dans une


plage nommée du classeur 2.

Lydia sur 10 mars 2018 à 10 h 35 min


Bonjour, le plus simple si vous êtes
débutant est de programmer la sélection
de la ligne puis de la copier-coller :
https://forum.hardware.fr/hfr/Programma
tion/VB-VBA-VBS/copier-selectionnee-
feuille-sujet_131451_1.htm

Michel sur 28 février 2018 à 9 h 45 min


Bonjour Lydia,
Merci beaucoup pour ce tuto très intéressant.
J’ai cependant un petit souci, j’ai un classeur dans lequel j’ai plusieurs
feuilles de calcul, dont ma feuille « Base client » pour laquelle j’utilise
votre formulaire. Ce dernier est appelé à partir d’un bouton placé sur une
autre feuille de calcul.
Le souci est que lorsque j’ajoute un nouveau client, il me crée la ligne sur
la feuille de calcul en arrière plan (quelque soit la feuille de calculs) et non
sur la feuille « base client ».
Pourriez-vous m’aider ?
Merci.

PS : J’utilise Excel 2016 sur Windows 10.

Voici le code :
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau
contact ?", vbYesNo, "Demande de confirmation d’ajout") =
vbYes Then
L = Sheets("Base client").Range("A65536").End(xlUp).Row +
1 'Pour placer le nouvel enregistrement à la première
ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox2
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 71/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Range("G" & L).Value = TextBox5


End If
Unload Me
UserForm1.Show
End Sub

Encore merci.

Réponse

Lydia sur 28 février 2018 à 9 h 46 min


Bonjour Michel,
Il faut activer la feuille avant avec Sheets("Base
clients").Activate à placer soit après la ligne If soit après la
ligne L.

Réponse

Matthi sur 3 août 2018 à 11 h 40 min


Bonjour Lydia,

Super Tuto !
Mais je n’arrive pas à le faire fonctionner :/

Je suis parti d’un document vierge pour avoir ma base de données clients
(Code Client/Type/Nom/Adresse…) sur le 1er Onglet. Ensuite, je voudrais
reporter une partie de ces infos sur le 2nd onglet pour faire du suivi grâce
au code ou nom.

Mais pour l’instant, je n’arrive pas à entrer 1 seul nom malgré plusieurs
manips.

Erreur de compilation : Membre de méthode ou de données introuvable


–> (en jaune) Private Sub CommandButton1_Click() dans Nouveau
contact.

Une idée ?

Merci d’avance en tout cas pour ces tutos.


Bonne journée.

Réponse

Lydia sur 3 août 2018 à 11 h 41 min

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 72/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Matthi,
Est-ce que c’est seulement la ligne Private Sub
CommandButton1_Click() qui est en jaune ?

Réponse

Matthi sur 3 août 2018 à 23 h 10 min


J’ai refait le chier, ça venait des guillemets.
Merci d’avoir répondu aussi vite 🙂
Bonne journée.

Réponse

Rolando sur 10 août 2018 à 9 h 14 min


Bonjour Lydia,
Merci pour le tuto, j’ai vraiment aimé.
Pourriez-vous m’aider à la création d’un formulaire pour gérer les
bulletins de notes ?

Réponse

Lydia sur 10 août 2018 à 9 h 15 min


Bonjour Rolando,

Je vous invite à passer par une demande de devis.

Réponse

Nogues sur 21 septembre 2018 à 20 h 18 min


Bonjour et merci pour votre tuto.

Je rencontre un petit problème au niveau de la commande « modi er »,


en e et, je peux modi er mes 9 textbox, mais impossible de modi er la
civilité (passer de Mme à M.)… Pourtant, vous, ça fonctionne ! Pouvez-
vous m’aider s’il vous plait ?

'Correspond au programme du bouton MODIFIER


Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Etes-vous certain de vouloir modifier ce

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 73/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

produit ?", vbYesNo, "Demande de confirmation") = vbYes


Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si
pas de sélection
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 9
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
Next I
End If
End Sub

Réponse

Lydia sur 21 septembre 2018 à 20 h 19 min


Bonjour,

Votre boucle ne peut modi er que les textbox, or la Civilité n’en est pas
une.
Vous avez oublié cette ligne avant la boucle : Ws.Cells(Ligne, "B") =
ComboBox2

Réponse

Melissa sur 14 février 2019 à 11 h 22 min


Bonjour Lydia,
Tout d’abord merci pour cet article.

J’ai essayé de lire l’ensemble des remarques, mais, sauf erreur de ma


part, personne n’a évoqué un problème d’écrasement des données.

Je m’explique : en suivant votre code, je m’aperçois qu’à la création d’un


nouveau client ce dernier vient écraser le précédent ?

Je peux peut-être préciser que mon tableau ne comportait aucune


donnée à la base sauf la première ligne qui représente le nom de mes
colonnes.

C’est cette explication qui m’interroge « Pour placer le nouvel


enregistrement à la première ligne de tableau non vide », on souhaite
plutôt placer le nouvel enregistrement à la première ligne de tableau
VIDE, non ?

Merci d’avance pour votre aide.

Réponse
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 74/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante
p

Lydia sur 14 février 2019 à 11 h 23 min


Bonjour Melissa,

Oui, c’est à la première vide. La macro part d’en haut et va


s’arrêter sur la première ligne qu’elle trouve vide.
Avez-vous donc mis le +1 et votre colonne A n’est-elle pas vide ?

Réponse

Solo sur 24 juin 2019 à 16 h 41 min


Bonjour,

Dans Visual Basic, je veux convertir mes chi res en texte en nombre sur
Excel.

Réponse

Lydia sur 24 juin 2019 à 16 h 42 min


Bonjour,

En utilisant la fonction Val.

Réponse

Billy sur 8 juillet 2019 à 18 h 34 min


Bonjour Lydia.
S’il vous plaît, aidez-moi avec le code, car je ne sais pas l’avoir ou s’il y a
une procédure, j’aimerais que vous veniez à l’aide.
Merci pour la compréhension.

Réponse

Lydia sur 8 juillet 2019 à 18 h 35 min


Bonjour Billy,
Le code se trouve au bas de l’article initial.

Réponse

Laetitia sur 1 août 2019 à 15 h 51 min


www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 75/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Bonjour Lydia,
Merci pour ce beau tuto très bien détaillé.
J’ai créé un formulaire de base de données, mais mon formulaire se
bloque et m’indique une erreur 91. J’ai véri é le nom de la ComboBox2,
elle est correcte.
J’y suis depuis hier sur cette erreur et je n’arrive pas à la corriger.
Pourriez-vous m’aider ?
Merci pour votre précieuse aide.
Laetitia
***********************
'Pour la liste déroulante Programme
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B") <---l'erreur est ici en
jaune
For I = 1 To 12
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub

Réponse

Lydia sur 1 août 2019 à 15 h 52 min


Bonjour Laetitia,

Est-ce que ce ne serait pas plutôt Ws qui ne serait pas déclaré


(plus haut dans le module) ?

Réponse

Laetitia sur 2 août 2019 à 21 h 27 min


Bonsoir Lydia,
Merci pour votre réponse,
Voici le début de mon code. Merci, bonne soirée !

Option Explicit 'pour déclarer les variables


Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm1_Initialize()

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 76/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste déroulante
Prénom
ComboBox2.List() = Array()
Set Ws = Sheets("liste") 'Correspond au nom de votre
onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 12
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub

Réponse

Lydia sur 2 août 2019 à 21 h 28 min


Bonjour Laetitia,

Essayez de mettre quelque chose dans le Array et est-ce que la


ComboBox1 fonctionne correctement ?

Réponse

Laetitia sur 3 août 2019 à 12 h 43 min


Bonjour Lydia,
Je viens d’ajouter un nom de réalisateur dans Array, mais cela ne
fonctionne pas, cela génère la même erreur.

Dans la ComboBox1, il y a les noms des programmes, dans la


ComboBox2, le nom des réalisateurs. Dès que je sélectionne, le nom du
programme, cela génère l’erreur.

J’y perds mon latin,

Bonne journée.

Réponse

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 77/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Lydia sur 3 août 2019 à 12 h 44 min


Avez-vous essayé de copier-coller le code mis en n d’article chez
Excel-Plus ? Car à l’œil, je ne vois pas le problème, mais quand je
copie-colle votre code, mes listes deviennent vides.

Réponse

Fabien sur 16 août 2019 à 11 h 16 min


Bonjour et merci pour ce tuto qui permet de créer un formulaire
facilement pour un novice comme moi.
J’ai essayé de l’adapter pour créer un formulaire de prise en charge de
machine à réparer pour un SAV.

Toutefois, j’ai des problèmes qui apparaissent à la récupération d’une


che existante :
– quand je veux faire remonter une che déjà créée, les infos ne
remontent pas dans les bonnes cases
– quand on tape un numéro de prise en charge (par exemple le 33), les
infos du 3 remontent systématiquement

Pouvez-vous m’aider ?

Réponse

Lydia sur 16 août 2019 à 11 h 17 min


Bonjour Fabien,

Il faudrait essayer en remplaçant la boucle par une adaptation de


ce genre de code :
N_client = Ws.Cells(Ligne, "A")
Civilite = Ws.Cells(Ligne, "B")
Prenom = Ws.Cells(Ligne, "C")

Pour la saisie semi-auto, c’est la propriété MatchEntry (dont j’ai


parlé dans l’article) qu’il faut modi er.

Réponse

François-Breuls sur 6 novembre 2019 à 9 h 54 min


Bonjour,
Moi, également, j’ai rencontré le même problème que M. Marius le 7
juillet 2015 à 19 h 43 min : « erreur d’exécution ‘9’ l’indice n’appartient pas
à la sélection. S’il vous plaît, aidez-moi : comment aviez-vous surmonté
www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 78/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

cette erreur ? Signalons que j’ai copié-collé le code soigneusement, mais


l’erreur persiste.
Merci d’avance !

Réponse

Lydia sur 6 novembre 2019 à 9 h 55 min


Bonjour,

Il faut véri er le nom que vous avez donné à votre onglet et vos
contrôles pour savoir s’ils sont identiques aux miens.

Réponse

Asmae sur 19 avril 2020 à 15 h 08 min


Bonjour Lydia, j’ai également une erreur 9 (l’indice est en dehors du
tableau…) sur la ligne setPlanning. Je ne comprends pas pourquoi j’ai
cette erreur vu que, de base, ma macro fonctionne. Pourrais-tu m’aider
s’il te plait ?
Sub Macro2()
Dim DocPlanning As Workbook
Dim DocPv As Workbook
Dim SheetPlanning As Worksheet
Dim SheetPv As Worksheet
Dim FilePath As String
Dim nbLigne As Integer
MsgBox "Selectionner le planning"
Dim appExcel As Variant
appExcel = Application.GetOpenFilename("")
FilePath = CStr(appExcel)
MsgBox FilePath
'mon erreur est sur la ligne suivante : set SheetPlanning
Set SheetPlanning =
Workbooks(FilePath).Worksheets("Feuil1")
Debug.Print appExcel.Name
'Récupération du fichier PV
MsgBox "Selectionner le PV"
'Fonction d'ouverture du fichier Pv
Dim appExcel2 As Variant
appExcel2 = Application.GetOpenFilename("")
FilePath = CStr(appExcel2)

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 79/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

'Set SheetPv = ThisWorkbook.Worksheets("PV ETMX")


Set SheetPv = Workbooks(Dir(FilePath)).Worksheets("PV ")
MsgBox SheetPlanning.Range("A2").Value
MsgBox SheetPv.Range("I19").Value
'Récupère la dernière ligne nom vide
'le nb de ligne de la feuille
nbLigne = SheetPlanning.Range("A65536").End(xlUp).Row
MsgBox nbLigne
MsgBox "Je suis dans dataPlanning"
End Sub

Réponse

Lydia sur 19 avril 2020 à 15 h 09 min


Bonjour,

Cela veut dire que vous faites référence à un élément qui n’existe
pas, il faudrait véri er Filepath.

Réponse

Rejoignez les 7 450 abonnés !

INSCRIPTION GRATUITE

Inscrivez-vous pour devenir membre Votre Assistante et recevez :

Le calendrier 2019 Votre Assistante

6 astuces inédites

Votre accès aux chiers réservés aux membres


www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 80/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Le Mini-guide O ce et Adobe

L'ebook Votre meilleure astuce pour gagner du temps

L'ebook Les cadeaux des blogueurs 2016

Un e-mail lorsqu’un nouvel article, formation ou application est publié

(* = champs obligatoires)
Votre prénom (pas de pseudo) * :

Accents et tirets acceptés


Votre adresse e-mail * :

Préférez des adresses email webmail (gmail, yahoo...) plutôt que de nom de domaine d'entreprise par exemple qui

peuvent revenir en invalide en raisons de leurs ltres.

Mot de passe de votre choix pour accéder à l'Espace Membres * :

5 caractères minimum
Cochez les cases des logiciels dont vous souhaitez recevoir les articles et les
annonces de sortie d'applications et scripts * :
Word Excel
Access PowerPoint
Photoshop Illustrator

Comment avez-vous connu ce site ? *

-- Sélectionnez --

En m'abonnant à la newsletter, je reconnais avoir pris connaissance de la politique de


gestion des données personnelles et je l'accepte.

Je m'abonne

Pour connaître et exercer mes droits, notamment pour annuler mon consentement, je
consulte la politique de con dentialité.

Qui suis-je ?

Bienvenue sur Votre Assistante !


www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 81/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

Vous souhaitez utiliser les logiciels de la Suite O ce et Adobe avec plus d'aisance ? Ne
plus perdre de temps à chercher comment réaliser un publipostage, un
photomontage… ?

Je m'appelle Lydia Provin et je souhaite vous faire partager mon expérience de ces
logiciels à travers des tutoriels textes et vidéos. En savoir plus ?

Découvrez l’application mobile Votre Assistante

Liens
Magali Izard, écrivain public – Les mots en forme

Plume assistance

SOS PC 95 – Le Blog

Contact - Demandez un devis - Plan du site


Conditions Générales de Vente (CGV) - Mention Légales - Politique de
con dentialité
Toute reproduction totale ou partielle des textes et/ou vidéos est strictement interdite -
Tous droits réservés ©2013-2020

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 82/83
14/05/2020 Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel - Votre Assistante

  

www.votreassistante.net/explication-code-vba-utilise-dans-tutoriel-creer-formulaire-personnalise-saisie-donnees-excel/ 83/83

Vous aimerez peut-être aussi