Crée un formulaire Excel pour remplir un tableau

36
129325

Crée un formulaire Excel pour remplir un tableau n’est pas difficile à faire.
C’est pourquoi je vous invite a suivre les étapes affin de pouvoir les réaliser.

1. Création du formulaire.

Avant tout il faut contrôler si nous avons l’onglet développeur, si ce n’est pas le cas il faut aller dans fichier la dans le menue de gauche cliquer sur Option.
Une nouvelle fenêtre c’est ouvert. Ici cliquer sur personnaliser le ruban, puis dans la partie droite coché la case développeur.
Désormais vous avez l’option développeur dans votre navigation.
Dans développeur sélectionner Visual basic puis sur la page de Visual Basic cliquer sur l’icône Ajouter Userform.

2. Changer le Titre du Formulaire.

Pour changer le nom de notre formulaire nous devons cliquer sur notre Formulaire, puis nous allons voir sur le coter les propriétés de notre formulaire. Si ce formulaire n’apparaît pas cliquer sur l’icône fenêtre de propriétés ou appuyer sur la touche F4

Dans ce menu nous allons pouvoir changer les propriétés de notre formulaire.
Pour changer le nom il nous suffit de faire un double clic sur l’option Captions, en double cliquant captions le texte UserForm1 devrais être sélectionner. Désormais nous pouvons changer le nom.

3. Changer la couleur de fond du formulaire

Pour changer la couleur de fond du formulaire, il nous suffit de cliquer sur le code couleur qui est afficher à coter du mot Backcolor de la propriété.

La nous avons deux options qui s’offre à nous :
– Système : sont les couleurs que nous allons retrouver sur le system.
– Palette : ici ça nous permet de choisir une couleur parmi une palette de couleurs.

4. Ajouter du texte a notre Formulaire (les Labels)

Désormais que nous avons défini les propriétés de notre formulaire nous il est temp d’ajouter du texte a notre formulaire.
À la création de notre formulaire nous avons reçu un nouveau petit menu qui se nomme « Boîte à outils ».

Si par mal chance nous avons fermé cette boîte à outils, pas de panique car nous pouvons la réactiver en cliquant sur l’icône boîte à outils dans la barre de navigation.

Pour ajouter du texte à notre formulaire cliquer sur intitulé.

Désormais dessiner un rectangle sur notre formulaire de te l’aille que nous souhaitons. Et voilà nous avons désormais notre premier texte sur notre formulaire mais il indique Label1. Ici tout comme le nom du formulaire nous allons faire un double clic sur captions et changer le texte Label1.
Il nous reste plus qua créer les autres textes besoin pour notre formulaire.

– Nom :
– Type :
– Date début :
– Date de fin :

5. Changer la taille du texte et le mettre en gras

Désormais que nous avons tous nos labels avec du texte nous pouvons changer la taille et le mettre en gras. Pour cela nous allons sélectionner toutes nos labels, dans les propriétés cliquer 2x sur font et là nous allons accéder au Polices.

Alors ici nous pouvons changer la police, mettre notre texte en gras, oblique ou oblique et gras et bien sûr changer la taille de notre texte.

6. Changer la taille de notre label

Si notre texte est plus grand que notre label nous pouvons l’agrandir en cliquant sur notre label et en étirant le label.

Si nous voulons que tous nos labels soient de la même taille alors on sélectionner tous nos labels et l’agrandissons ainsi tous les labels Auron la même taille.

7. Ajouter des zones de texte.

Nous avons vu comment ajouter du texte dans notre formulaire mais l’utilisateur ne pourra pas interagir avec cette zone de texte. Donc si nous voulons que les utilisateurs puisent indiquer des informations nous allons devoir leurs donné la possibilité en ajoutant des zones de texte.
Cliquer dans la boîte d’outils sur le bouton zone de texte.

Et ajouter une zone de texte à coter du label Nom, Date début et Date de fin

8. Tester le formulaire.

Désormais nous allons tester notre zone de texte et pour se faire nous allons cliquer sur le bouton exécuter sub/userform ou cliquer sur la touche F5.

Notre formulaire fonctionne et nous pouvons ajouter du texte dans la zone de texte.
Pour fermer notre formulaire nous devons cliquer sur le petit X de notre formulaire dans le coin supérieur droite.

*option : si nous souhaitons changer la police ou la taille du texte nous pouvons le faire de la même façon que nous avons changé la police de notre label.

9. Limité la saisie de caractère dans la zone de texte.

Comme nous avons 2 zones de textes qui devrons contenir des dates nous allons devoir sécurité cela que nos utilisateurs ne pourront que placer des dates dans la zone.
Alors la première chose que nous allons faire c’est de bloquer toute les touche du clavier qui ne continent pas les valeurs numériques suivante :
/ 0 1 2 3 4 5 6 7 8 9
Pour faire sella nous allons faire une double clic sur la zone de texte de la date d’entrée sur notre formulaire pour ouvrir la page de code.
La nous voyons que notre zone de texte qui est définit par le code suivant :

Private Sub Textbox2_change()

End Sub

Tout ce que nous allons coder entre ces deux lignes vont changer la zone de texte.
Comme nous voulons empêcher les utilisateurs d’appuyer sur les touche no numérique nous allons devoir a quel moment notre code devra être appliquer et nous voulons que ça se fais au moment où ils appuient sur une touche donc il faut changer le change en keypress.

La nous aurons le code suivant qui apparaît.

Nous allons donc ajouter le bout de code suivant entre ces deux lignes de code.

Private Sub Textbox2_keypress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 and KeyAscii < 58)) then

KeyAscii = 0

End if

End Sub

*ici nous avons demandé au code que pour chaque pression sur une touche du clavier qui se fait dans la zone de texte, qui ne correspond pas au code clavier 47 au 57 alors on affiche rien.

Le KeyAscii représente les caractères en nombre. Ça veut dire que si je touche sur le bouton / de mon clavier il envoie un nombre 47 au programme qui va donc comprendre qu’il a besoin d’afficher le symbole « / »

Il est temps de tester cela en exécutant note formulaire et tenter d’introduire notre nom dans la zone de texte de date de début. Normalement ça ne devrait pas fonctionner.

10. Limiter le format date courte dans la zone de texte.

Désormais que nous avons limiter les caractères qui peuvent être introduite dans la zone de texte nous allons définir le format de cette zone de texte au format de date courte.

Lancer le formulaire avec le bouton exécuter sub ou la touche F5 et indiquer désormais le nombre suivant dans la zone de texte de date de début : 42960

Hmm on a bien le nombre que nous avons introduit mais pas de date. Pas de panique nous allons arranger cela en changeant le format de la zone de texte.

Fermer le formulaire et faite à nouveau un double clique sur la zone de texte date début.

Désormais nous voulons qu’après avoir introduit nos donner dans le formulaire tous se place dans un format date courte.
Donc on change l’évènement afterupdate

Pour avoir le code suivant.

Private Sub TextBox2_Afterupdate()

End Sub

Entre ces deux code on introduit le code suivant:

Private Sub TextBox2_Afterupdate()
Textbox2 = Format (TextBox2, “Short date”)

End Sub

Désormais nous allons à nouveau exécuter le formulaire et introduire a nouveau les chiffre suivant 42960 dans la zone de texte et appuyer sur la touche entrée.

Les chiffre se change automatiquement en date donc notre zone de texte est bien au format date courte.

11. Eviter les erreur d’une date invalide.

Désormais indiquer le chiffre suivant : 42960000 dans la zone de texte et valider avec la toucher entrée.

O.o nous avons une erreur qui s’affiche car nous voulons avec un format a date courte mais le problème c’est que ce nombre ne correspond pas a une date donc il nous affiche une erreur.

Pour éviter un telle erreur nous allons travailler avec la gestion d’erreur.

Dans notre code ou nous avons placer le format voulu nous allons ajouter le code suivant au début juste au-dessus de notre code de format et terminer avec Exit Sub en dessous de notre code de format.

Private Sub TextBox2_Afterupdate()
On Error GoTo mesageerreur
Textbox2 = Format (TextBox2, “Short date”)
Exit Sub
End Sub

Ici nous avons déclaré au moment qu’un mise a jour se fait dans la zone de texte de la date de début, quand il y a une erreur il faut aller à la ligne de code “messageerreur”.

Désormais nous allons coder notre « messageerreur » qui devrais donner une information à l’utilisateur qu’il a introduit un date invalide et qu’il doit l’introduire de la façon suivante jour/mois/année ainsi que recommencer d’introduire la date en vidant les données de la zone de texte grâce aux codes suivant :

Private Sub TextBox2_Afterupdate()
On Error GoTo mesageerreur
Textbox2 = Format (TextBox2, “Short date”)
Exit Sub
messageereur:
MsgBox (“le format introduit n’est pas valide, le format de date est Jour/Mois/Année !)
TextBox2=Empty
End Sub

Et voilà désormais nous pouvons tester si ça fonctionne en exécutant le formulaire et en introduisant à nouveau le nombre 42960000. Si tout fonctionne on aura notre message d’erreur qui s’affiche.

12. Indiquer le format voulu aux utilisateurs.

Il y plusieurs façons d’introduire une date mais chaque résultat n’est pas toujours le même. Exemple j’introduis l’année / jour / mois comme ceci 2017/10/08 ou je veux donc indiquer 10eme jour du mois d’aout et quand nous validons avec la touche entrée voilà le résultat que nous allons avoir : 08/10/2017 donc le 8 octobre 2017 et non pas le 10 Août 2017 !
Alors une chose que nous pouvons faire c’est d’informer l’utilisateur dans quel format nous voulons qu’il introduise les donner.
Pour se faire nous allons faire un double clic sur le formulaire et là nous allons changer l’éventent au moment qu’il initialise le formulaire.

Entre les codes suivant nous allons coder les choses suivants.

Private Sub Userform_Initialize()
Textbox2.Text = “jj/mm/aaaa”
End Sub

Ce qui donnera l’information suivante dans la zone de texte.

Le problème ici c’est que quand nous voulons ajouter la date il faut supprimer le texte et puis introduire la date et ça nous ne voulons pas nous voulons au moment que nous cliquons dans la zone de texte, que la zone se vide s’il y a indiquer jj/mm/aaaa.

Et ça ont le fait avec le code suivant apres avoir choisi l’évenement entrer().

Private Sub Textbox2_Enter()
If Textbox2 = “jj/mm/aaaa” Then
Textbox2=””
End if
End Sub

Nous allons tester si tout fonctionne en exécutant le code et au moment que nous allons cliquer sur la zone de texte le texte présent devra disparaître.

Comme nous n’aimons pas faire les choses à moitié nous aimerais aussi au moment où l’utilisateur quitte et n’a rien indiquer dans la zone de texte, nous voulons avoir l’information à nouveau.
Pour cela nous allons créer un nouvelle évènement pour la zone de texte qui sera Exit() et nous placerons le code suivant.

Private Sub Textbox2_Enter()
If Textbox2 = “” Then
Textbox2=” jj/mm/aaaa”
End if
End Sub

Il nous reste plus qua tester le tout et puis refaire la même chose pour la zone de texte de date de fin

13. Refaire le tout pour la zone de texte de date de fin.

Ici nous allons donc refaire la même chose pour la zone de texte de la date de fin.

Attendez ne commencer pas à coder il nous suffit de sélectionner tout le codage du Texbox2 (keypress et afterupdate) et de le coller plus bas. Puis de changer dans la partie coller tous les textes qui contienne textbox2 par textbox3.

Et n’oublier pas d’ajouter l’information dans la zone de texte pour la date de fin.

14. Création de la liste de choix

Nous allons ajouter à coter du label type : une combobox en la choisissant dans la boîte à outils.

Comme la zone de texte et les labels nous pouvons configurer la police de notre Texte dans le tableau de propriété

15. Alimenter notre liste de choix

Dans cette Combobox nous voulons indiquer les choix que les utilisateurs pour faire entre Vacance, Maladie et Récup

Nous allons faire un double clic sur notre formulaire et dans initialiser en dessous de l’info de notre zone de texte date de fin nous allons coder le code suivant :

Private Sub Userform_Initialize()
Textbox2.Text = “jj/mm/yyyy”
Textbox3.Text = “jj/mm/yyyy”
With Combobox1
.Additem “Maladie”
.Additem “Vacance”
.Additem “Récup”
End With
End Sub

Désormais nous allons exécuter le formulaire et dans la liste nous devrions retrouver les choix que nous avons indiqué.

Pour être sur que les utilisateurs ne peuvent utiliser les donner qui ce trouve dans la liste nous allons devoir le bloquer et cela ce fais par les propriété de notre combobox il suffit de faire un double clic sur matchrequired afin qu’il change de False en True

16. Création du bouton.

Désormais nous somme mesure de demander tous les information besoin à nos utilisateurs. Ce qu’il nous reste a faire c’est de valider les donner qu’ils irons introduire.

Et pour valider le tout nous avons besoin d’un bouton.
Dans la boîte à outils cliquer sur bouton de commande et placer le bouton sur votre formulaire.

Désormais nous pouvons changer le texte et la couleur de notre bouton grâce au menu de propriétés.
Pour accéder au code du bouton c’est comme tout le reste nous devons faire un double clic sur le bouton.

17. Controller si tout est bien rempli.

Le premier test que nous allons faire c’est de vérifier si tout est bien rempli avec le code suivant.

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox3 = «  » Then
MsgBox (« toute les information ne sont pas rempli »)
End If
End Sub

Le problème avec se code c’est que les utilisateurs savent valider le tous sans indisquer les date de début et de fin car elle ne sont pas vide est contienent le texte « jj/mm/aaaa » de base.
Donc pour palier à ce problème nous allons plus de condition pour textbox2 et 3 dans notre code comme suite :

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« toute les information ne sont pas rempli »)
End If
End Sub

18.    Contrôler si notre tableau et vide oui ou non.

Il nous reste plus qua remplir le tableau avec les données collecter. Et ça nous allons le faire en deux étapes.

Surtout ne rater pas la prochaine partie ou nous allons voir comment ajouter les résultat dans un tableau et ainsi vous saurez aussi comment crée un formulaire Excel de A – Z.D’abord nous allons contrôler s’il y a déjà des informations dans notre tableau si c’est le cas nous allons placer l’information de la zone de texte nom dans notre tableau. En plaçant le code suivant sur notre bouton juste après le MsgBox

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« touts les information ne son pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
End If
End If
End Sub

Par contre si il y a déjà quelque chose dans la cellule B3 alors ça veut dire que nous devons crée une nouvelle ligne.
Et ça on le fait avec le code suivant :

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« touts les information ne son pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End If
End If
End Sub

*ici nous avons demandé d’aller dans notre tableau qui se trouve sur la feuil1 avec la commande Sheets(“Feuil1”).LIstObjects(1) et d’ajouter une ligne avec la commande ListRows.Add

19.    Place les informations du formulaire dans le tableau

Nous somme fin prêt à placer les information dans le formulaire. Afin de faire cela nous allons devoir définir sur quel ligne du tableau il faut placer nos information.

Pour ça nous allons sélectionner la cellule la plus bas de la colonne B et puis remonter en haut de la même façon que si nous appuyons sur le bouton CTRL + flèche du haut et puis donner le numéro de ligne a une variable que nous allons nommer DLT à Dernière Ligne Tableau.

Et ça on le fait avec le code End.(xlUp)

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« touts les information ne son pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End IfDlt = Sheets(“Feuil1”).range(“D1048576”).end(xlup).rowEnd If
End Sub

il nous reste plus qua utiliser le numéro de ligne qui est placer dans dlt avec la colonne pour indiquer ou placer les information et ça nous allons le faire en combinent deux code

Sheets(“Feuil1”).Range.(“B”&dlt) = Textbox1

En Claire si dlt = la ligne 5 alors nous disons a Excel d’aller sur la feuil1 et dans la cellule B5 il faut placer les informations du textbox1 donc le nom.  Et ça nous allons le faire pour toute les informations.

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« toute les information ne sont pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End IfDlt = Sheets(“Feuil1”).range(“D1048576”).end(xlup).row
Sheets(« feuil1 »).Range(« B » & dlt) = TextBox1
Sheets(« feuil1 »).Range(« C » & dlt) = ComboBox1
Sheets(« feuil1 »).Range(« d » & dlt) = TextBox2
Sheets(« feuil1 »).Range(« e » & dlt) = TextBox3End If
End Sub

Et là nous pouvons tester le tous nous allons placer dans la date de début le 01/08/2017 et la date de fin 10/08/2017 en vacances cliquer sur valider et nous devrions voir quelque problème.

20.    Corriger les erreurs de saisie.

Malheureusement le transfert du textbox à une celle est parfais embêtante car ici il a placer les donner des date en format texte et pour éviter se problème nous allons devoir indiquer dans notre code que c’est une valeur que nous voulons placer.

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« toute les information ne sont pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End IfDlt = Sheets(“Feuil1”).range(“D1048576”).end(xlup).row
Sheets(« feuil1 »).Range(« B » & dlt) = TextBox1
Sheets(« feuil1 »).Range(« C » & dlt) = ComboBox1
Sheets(« feuil1 »).Range(« d » & dlt) = TextBox2.value
Sheets(« feuil1 »).Range(« e » & dlt) = TextBox3.valueEnd If
End Sub

Donc on change un peut notre code en ajoutant .value au textbox2 et textbox3:

L’autre problème que nous rencontrons c’est la conversion des dates du VBA a une cellule. Comme nous pouvons le voir la date du 1/8/2017 a changer en 8/1/2017 et la date de fin qui devrais être 10/8/2017 ces changer en 08/10/2017 chose que nous devons corriger et cella nous allons le faire de la manière suivante.

Avant de placer les donner dans la cellule nous allons formater les donner en disant de changer notre numéro de jour en mois et le numéro du mois en jour.

Comme suite.

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« toute les information ne sont pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End IfDlt = Sheets(“Feuil1”).range(“D1048576”).end(xlup).row
Sheets(« feuil1 »).Range(« B » & dlt) = TextBox1
Sheets(« feuil1 »).Range(« C » & dlt) = ComboBox1
Textbox2.value = Format(Textbox2,”mm/dd/yyyy”)
Sheets(« feuil1 »).Range(« d » & dlt) = TextBox2.value
Textbox3.value = Format(Textbox3,”mm/dd/yyyy”)
Sheets(« feuil1 »).Range(« e » & dlt) = TextBox3.valueEnd If
End Sub

21.    Mettre le formulaire à zéro et le fermer

Quand nous avons fini avec notre formulaire nous voulons le fermer et le remettre a zéro bien sûr pour la prochaine entrée. Avec une simple commande nous allons réaliser cela après avoir introduit toutes les informations dans le tableau.

Avec le code a la fin Unload Usreform1

Private Sub CommandButton1_Click()
If TextBox1 = «  » Or ComboBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa »  Or TextBox3 = «  » Or TextBox3 = « jj/mm/aaaa » Then
MsgBox (« touts les information ne son pas rempli »)
Else
If Sheets(“Feuil1”).Range(“B3”) = ”” Then
Sheets(“Feuil1”).Range(“B3”) = Textbox1
Else
Sheets(“Feuil1”).LIstObjects(1).ListRows.Add
End IfDlt = Sheets(“Feuil1”).range(“D1048576”).end(xlup).row
Sheets(« feuil1 »).Range(« B » & dlt) = TextBox1
Sheets(« feuil1 »).Range(« C » & dlt) = ComboBox1
Textbox2.value = Format(Textbox2,”mm/dd/yyyy”)
Sheets(« feuil1 »).Range(« d » & dlt) = TextBox2.value
Textbox3.value = Format(Textbox3,”mm/dd/yyyy”)
Sheets(« feuil1 »).Range(« e » & dlt) = TextBox3.valueUnload UserForm1End If
End Sub

22.    Un bouton pour ouvrir le formulaire

Bien sur nous ne voulons pas que notre utilisateur entre sur la page développeur et clique sur le bouton exécuter pour lance le formulaire, c’est pourquoi nous allons ajouter un bouton sur la page pour ouvrir notre formulaire.

Pour cela nous allons dans développeur insérer et cliquer sur un bouton dans contrôle ActiveX

Ia nous pouvons changer le format du bouton et la couleur de fond. Pour afficher les propriétés d’un bouton active x il faut faire un clic droit dessus et sélectionner propitier

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Puis nous devons faire un double clic sur le bouton pour ouvrir la page de code et indiquer le code suivant pour ouvrir le formulaire.
Pour activer le bouton il faut désélectionner mode création sur le ruban développeur.
Et désormais si nous cliquons sur le bouton le formulaire apparaît.

Voilà désormais vous avez vu comment crée un formulaire Excel Personnalisé et surtout comment remplir un tableau avec un formulaire. Surtout n’hésiter pas de poser des questions dans les commentaires et surtout de vous abonnez a la chaîne afin qu’on se revoie dans un autre tutoriel

36 Commentaires

  1. Un grand merci pour ce tuto, clair et précis!!! pouvez-vous m’aider? car je souhaite afficher tout si je ne tape pas de nom en particulier dans la cellule v2, comment puis-je faire pour voir une vue global dans le calendrier ?

  2. Super boulot!
    Merci beaucoup !!!!
    Avec ton tuto j’ai réussi à faire mon « Userform » de saisie d’interventions
    Petites remarques : Par défaut le Userform s’ouvre avec le champs de saisie sur la Textbox1 et donc je n’arrivais pas à faire apparaitre le « jj/mm/aaaa » car à l’ouverture le curseur était dedans 😉

    Egalement pour trouver la dernière ligne dans le tableau à remplir, j’ai fait comme ca :

    Dim Llg0 As Long

    Llg0 = Sheets(« Data »).Cells(Rows.Count, « A »).End(xlUp).Row ‘dernière ligne

    If TextBox1 = «  » Or TextBox2 = «  » Or TextBox2 = « jj/mm/aaaa » Or TextBox3 = «  » Or TextBox4 = «  » Or ComboBox1 = «  » Or ComboBox2 = «  » Or ComboBox3 = «  » Then
    MsgBox ( » Toutes les informations ne sont pas remplies »)

    Else
    Sheets(« Data »).Cells(Llg0 + 1, 1) = TextBox1
    Sheets(« Data »).Cells(Llg0 + 1, 2) = TextBox2
    Sheets(« Data »).Cells(Llg0 + 1, 3) = TextBox3
    Sheets(« Data »).Cells(Llg0 + 1, 4) = ComboBox1
    Sheets(« Data »).Cells(Llg0 + 1, 5) = ComboBox2
    Sheets(« Data »).Cells(Llg0 + 1, 6) = ComboBox3
    Sheets(« Data »).Cells(Llg0 + 1, 7) = TextBox4

    End If

    Quoi qu’il en soit je te remercie pour le temps que tu m’as fait gagner!!!

  3. Merci beaucoup Tuto de Rien.
    Je voudrais savoir s’il y a possibilité d’ajouter des conditions entre deux formulaire.
    Je prendre l’exemple user form.
    Je veux faire en sorte que quand je remplis un que les informations s’ajoutent dans un autre formulaire sur une autre feuille en attente de validation.

    Je prends l’exemple d’une validation de vente le caissier ayant remplie un formulaire pour vendre un produit et à livrer une facture au client je veux que sur la page qu’utilise le magasinier s’auto remplisse et est en attente avant que le client ne vienne afin d’être valider par le magasinier.

    Merci pour ton aide.

  4. Bonjour, merci pour votre tuto qui est très bien fait. En revanche, je rencontre un problème au niveau des dates une fois sur deux il inverse les jj avec les mm malgré que le code soit bon. De plus, serait il possible de savoir comment relier le tableau à mon calendrier sachant que ce dernier comporte plusieurs noms. En vous remerciant par avance

  5. Bonjour
    Deux grands merci :
    tout d’abord pour votre tuto clair et efficace, et donc pour le temps que vous nous consacrez
    Mais aussi pour avoir résolu un de mes problèmes avec mon userform :
    celui du format de date non reconnu une fois le bouton « Ajouter » pressé.
    Le .Value ajouté à la fin de la ligne (+ l’astuce de définir la date en « mm/dd/aaaa » me sauve la mise ! »

  6. Bonjour Daniel !
    J’ai un petit soucis que j’aimerais que vous m’aidiez.
    Depuis quelques temps, je suis abonné à votre chaîne Youtube et je vous suis régulièrement. Mais, je souhaite que vous m’aidiez à créer le formulaire en VBA (avec code source) dont les éléments sont les suivants :

    – Nom
    – province (liste déroulante)
    – ville
    – lieu du domicile
    – code 1
    – code 2
    – Mot de passe
    – Numéro de téléphone (+243…..)

    Deux boutons
    *Valider *annuler

    Merci de m’aider !

  7. Bonjour.

    J’ai suivi votre tuto, et tout fonctionne à merveille.
    Merci infiniment !

    Toutefois, j’aimerais désormais que le tableau généré, me permette de renseigner un calendrier, mais je n’arrive à mes fins en utilisant les mises en forme conditionnelles.
    En gros, j’aimerais que les cellules placées sous la date et en face du nom de chaque personne soient automatiquement colorées en vert, lorsque l’on renseigne une période de congés dans le tableau.

    Auriez vous une idée de comment y parvenir ? En utilisant une macro ?

    Merci d’avance de votre aide.

  8. Bonjour,

    Merci pour vos Tutos ils sont vraiment super!

    j’ai le même problème que beaucoup de monde, « L’erreur 9 »
    avec les parties If Sheets(« Feuil1 »).Range(« B3 ») = «  » Then…

    impossible de faire fonctionner ce cheminement, avez vous des solutions?

  9. Bonjour
    Très bon travail.
    Sauf que … EXCEL 2019 n’est pas « full compatible »
    L’onglet « FICHIER » n’existe pas, le panneau gauche non plus,
    La notion de « Formulaire » et de « UserForms » n’existe pas.
    J’en conclu que la suite Microsoft office n’est pas compatible avec Apple (Mojave 14.6)
    La raison « ActiveX » qui est propriété de Microsoft et que Apple ne peut pas (ou ne veux pas) utiliser.
    Tous ceux qui ont acquis celle-ci se sont faits floués, pour ne pas dire plus.
    Faites le savoir!
    Cordialement

    • bonjour bruno
      avez vous pu obtenir le fichier moi même j ai une erreur sur le nom impossible d y mettre (ex daniel)
      pouvez vous m envoyer le codage ? si vous l avez reçu

      ou si daniel peut faire qq chose pour moi

      MERCI

  10. Bonjour,

    J’ai un problème avec la ligne Sheets(“feuil1”).ListObjects(1).ListRows.Adds
    Ca me sort une erreur « 9: l’indice n’appartient pas à la sélection ».
    Comment faire pour régler cela svp ?

    Merci beaucoup 🙂

  11. Bonjour,
    J’ai un problème sur la formule Unload Usereform1 :

    Quand je la mets dans le programme, elle est surlignée en jaune et créer une erreur. Et dès que je l’enlève l’erreur n’existe plus par contre évidemment mon tableau saisie que sur la même ligne ?

    Réponse urgente SVP

    Formule :
    Private Sub CommandButton1_Click()
    If ComboBox1 = “” Or ComboBox2 = “” Or ComboBox3 = “” Or TextBox1 = “” Then
    MsgBox (« toutes les informations ne sont pas remplies »)
    Else
    If Sheets(« feuil1 »).Range(« B3 ») = «  » Then
    Sheets(« feuil1 »).Range(« B3 ») = ComboBox1
    Else
    Sheets(« feuil1 »).ListObjects(1).ListRows.Add
    End If
    Dlt = Sheets(« Feuil1 »).Range(« D1048576 »).End(xlUp).Row
    Sheets(« feuil1 »).Range(« B » & Dlt) = ComboBox1
    Sheets(« feuil1 »).Range(« C » & Dlt) = ComboBox2
    Sheets(« feuil1 »).Range(« D » & Dlt) = ComboBox3
    Sheets(« feuil1 »).Range(« E » & Dlt) = TextBox1.Value

    Unload (Usereform1)

    End If
    End Sub

  12. Bonjour,
    j’ai un soucis avec Sheets(« feuil1 »).ListObjects(1).ListRows.Adds.
    il m’indique une erreur 9: l’indice n’appartient pas à la sélection.
    Pouvez-vous m’aider ?

    • la même erreur m’arrive et je crois que la source d’erreur provient des tableaux figurant dans la « Feuil1 » lesquels tableaux sont liés aux données figurant dans la « Feuil2 » .
      j’espère que Mr Daniel nous éclaircit ces liaisons pour écarter cette erreur 9.
      Avec tous nos remerciements .

      • Bonjour,

        j’ai également le souci et je n’arrive pas à lier les 2 feuilles.
        j’ai créé une feuille FormulaireCandidats pour recevoir mes données, elle est en feuille 2, que j’indique son nom ou une autre info telle que (2), cela ne se corrige pas.
        Egalement, même quand j’indique que je souhaite remplacer les infos à partir de la ligne 3, c’est la ligne 2 qui se modifie car la ligne 3 est pleine, et quand celle-ci est vide, ce sont toutes les données en colonne A à partir de la ligne 2 qui sont modifiées.

        merci pour votre aide !

  13. Bonjour Daniel
    je souhaiterais savoir si c’est possible de remplir un tableau de la deuxième feuille pendant que le formulaire se trouve sur la première feuille. et comment faire?

  14. Bonjour Daniel,

    Merci pour ces tutos !

    Je rencontre un problème pour le format des dates.
    Malgré l’ajout de .Value ça n’y change rien.

    Merci pour ton aide

    Sheets(« feuil1 »).Range(« b » & dlt) = TextBox1
    Sheets(« feuil1 »).Range(« c » & dlt) = ComboBox1
    TextBox2 = Format(TextBox2, « mm/dd/yyyy »)
    Sheets(« feuil1 »).Range(« d » & dlt) = TextBox2.Value
    TextBox3 = Format(TextBox3, « mm/dd/yyyy »)
    Sheets(« feuil1 »).Range(« e » & dlt) = TextBox3.Value

  15. Bonjour, merci pour ce tuto
    cependant je ne comprends pas comment les informations (dates) du tableau que l’on remplie avec le formulaire se transfère directement dans le calendrier.Je ne vois pas ou dans les codes nous parlons de ce calendrier en feuille 2 sur le tuto. De plus comment gérer les couleurs et les symboles ?
    Merci

  16. Bonjour,

    Etant novice sur Excel j’ai suivi votre tutoriel et j’ai réussi à faire fonctionner le formulaire. Je tiens d’abord à vous en remercier. Cependant je suis bloquée car malgré le fait que les informations du formulaire se mettent dans le tableau, je ne sais pas comment afficher les couleurs sur le calendrier, de plus je ne sais pas comment faire changer le calendrier en fonction du salarié.

  17. Bjr
    Comment mettre en surbrillance la date du jour dans le calendrier d absence car je n y arrive pas en mise en forme conditionnelle ?
    Merci d avance
    Vos tutos sont très biens

  18. Bonjour,
    Tout d’abord permettez moi de vous offrir tous mes voeux pour cette nouvelle année. Je vous remercie pour vos tutos de qualité que je visionne et mets en application.
    D’ailleurs, j’ai utilisé votre tuto pour remplir un tableau de suivi de congés et déplacements mais je rencontre quelques problèmes. Dans la mesure du possible pouvez-vous m’aider et m’apporter quelques réponses. Je vous remercie par avance.
    – J’ai constaté un éventuel problème sur une erreur de saisie de la date de début ou de fin. effectivement, si une personne réalise une erreur de saisie en tapant la date en conservant le format demandé, exemple : 45/26/2018, cette dernière sera conservée. Est-il possible de palier ce problème ? J’ai tenté d’insérer un calendrier à côté des zones de texte des dates sans succès. Pour information je suis sous Excel 2010. Cela permettrait d’éviter toute erreur et si là encore vous avez une solution je suis preneur.
    Le mieux est peut être que je vous envoie mon fichier pour analyse, avec mes questions.
    Je vous remercie par avance de l’intérêt que vous porterez à ma demande.
    Cordialement

  19. c’est formidable et il répond parfaitement à un problème que j’ai personnellement je vous remercie infiniment pour votre travail,
    je souhaiterais si possible de pouvoir télécharger votre fichier ,, portez vous bien

  20. Bonjour Daniel
    Je souhaiterais savoir si vous pouvez m’aider sur un fichier que j’ai fait et je n’arrive pas a finir .
    Je ne trouve pas en vba comment remplir comme je le souhaite.
    Cordialement
    Thierry

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.