Formulaire VBA - pret de matériel

Bonjour,

Voici mes différents problèmes sur un fichier de prêt de matériel que j'ai repris ici pour ensuite l'adapter à mon besoin.

LE FICHIER :

_____________________

1) Liste dans formulaire

J'ai trouvé sur le net comment associer une liste à une ComboBox => il faut donner la plage nécessaire sur "listfillrange" dans les propriétés de la combobox. Cependant, je ne retrouve pas cela dans les propriétés des miennes.

image

Je veux associer "ComboBox4" aux cellules présentes dans la colonne "catégories" du tableau nommé "catégories" présent dans l'onglet "liste"

Je veux associer "Combobox5" aux cellules présentes dans le tableau nommé "etat_du_materiel" présent dans l'onglet "liste"

Attention : les informations présentes dans les colonnes citées peuvent varier, notamment par des ajouts

image

2) Textbox complété automatiquement dans le formulaire en fonction d'autre valeurs

A) Le "TextBox5" doit affiché une date en fonction de la date présente dans "TextBox4" + X jours. Ces X jours sont en fonction de la catégorie. Ce nombre de jour est visible dans la colonne "délai d'emprunt" du tableau nommé "catégories" présent dans l'onglet "liste"

B) Le "TextBox8" doit affiché, comme pour une rechercheV, le rayon associé à la catégorie que l'utilisateur remplira dans le formulaire. (le Rayon associé est visible dans la colonne "rayon" du tableau nommé "catégories" présent dans l'onglet "liste"

3) Débogue du bouton de validation du formulaire (et donc remise à zero du formulaire)

Je pense que la page d'erreur provient des noms des TextBox, mais même en les modifiants, j'ai encore ce soucis (que j'aurais surement aussi sur les ComboBox)

image

4) Erreur à la reprise du formulaire.

Le formulaire s'utilise 2 fois : 1 fois lors du pret de matériel, une fois lors du retour. Hors, quand je clique dessus après qu'une ligne soit integrée au tableau de l'onglet "SUIVI EMPRUNT", j'ai ce message d'erreur :

image

Le déboguage m'indique l'erreur, mais je ne vois pas pourquoi cela en est une :

image

5) le bouton de remise à Zéro du tableau présent dans l'onglet "SUIVI EMPRUNT"

à date, il supprime tout ce qu'il y a sur le tableau mais j'aimerai qu'il ne supprime que les lignes ou il y a de noté "remis" dans la colonne "suivi de l'emprunt", puis il doit peut-etre (je pense) ré-agencer le tableau pour que le formulaire fonctionne, je ne sait pas. Est-ce possible ?

Voila, c'est tout pour mes soucis actuel..

J'ai fait l'effort de comprendre comment tout marchait à partir du fichier d'origine, mais VBA n'est pas DU TOUT un sujet que je maitrise.. aussi, si une âme charitable pourrait m'aider.. cela sera vraiment chouette !

(Je ne pourrais pas forcément répondre à la minute, mais je devrais le faire au moins une fois par jour)

Bonjour,

En voyant vos 2 premières questions je pense que vous repartez d'un trouvé sur le site. non ?

Bon je vous réponds d'abord sur le point 1.


Je veux associer "ComboBox4" aux cellules présentes dans la colonne "catégories" du tableau nommé "catégories" présent dans l'onglet "liste"
.....

Je veux associer "Combobox5" aux cellules présentes dans le tableau nommé "etat_du_materiel" présent dans l'onglet "liste"

Oubliez cette manière de faire. Il vaut toujours mieux utiliser la méthode LIST ou ADDITEM

- Allez dans l'USF, Private Sub UserForm_Initialize()
- rajoutez les 2 lignes ci-dessous

Me.ComboBox4.List = Range("Categories").ListObject.ListColumns(1).DataBodyRange.Value
Me.ComboBox5.List = Range("Etat_du_materiel").ListObject.DataBodyRange.Value

Vérifiez si tout est ok pour vous

NB : le souci dans ce fichier c'est que vous n'avez pas de logique dans la numérotation des combox et textbox. Donc combo1, combo2...
Là les textbox 6 et 7 n'existe pas. D'où déjà votre erreur que vous signalez au point 2
Idem pour les combo. Vous n'avez pas de combo1...
Ce serait mieux de commencer par là avant de modifier ci et là

Bonjour Dan,

C'est effectivement ici que je l'ai trouvé, j'ai cité le post d'origine sur mon premier post qui lui ne convenait pas 🙂

Merci pour l'aide sur la partie liste, je vais tester cela dès demain.

Concernant le suivi des textbox/combox j'ai bien prévu de rendre cela propre car oui, ayant supprimé et ajouté certaines, cela ne se suit plus.

Concernant le suivi des textbox/combox j'ai bien prévu de rendre cela propre car oui, ayant supprimé et ajouté certaines, cela ne se suit plus.

Oui, on peut contourner pour la macro Effacer qui bugue mais vous allez devoir modifier à droite et à gauche...

Bref du boulot car lorsque vous allez renommer vos textbox et combo, il va falloir aussi adapter. Exemple si vous renommer Textbox4 et Textbox1 et que vous avez un code Textbox4_change il faudra le changer en textbox1_change. Idem dans les lignes de code où vous avez textbox4

Vous comprenez ?

Peut-être que ce serait pour vous plus facile de faire cela en dernier et donc une fois que tout est réglé au niveau de vos codes ?


EDIT :

A) Le "TextBox5" doit affiché une date en fonction de la date présente dans "TextBox4" + X jours. Ces X jours sont en fonction de la catégorie. Ce nombre de jour est visible dans la colonne "délai d'emprunt" du tableau nommé "catégories" présent dans l'onglet "liste"

Dans l'usform1 faites ceci
1. Juste en dessous de l'instruction Option compare Text, ajoutez cette ligne

Dim encours As Boolean

2. remplacez le code Private Sub TextBox4_Change() par celui ci-dessous

Private Sub TextBox4_Change() 'on calcule la date estimée de retour
Dim lig As Byte

If encours = True Then Exit Sub

If Me.ComboBox4.ListIndex = -1 Then
    encours = True
    Me.TextBox4 = vbNullString
    MsgBox "Veuillez d'abord choisir une catégorie", vbCritical, "Choix catégorie"
    encours = False
    Exit Sub
End If

Me.TextBox5 = vbNullString
With Range("Categories").ListObject
    lig = .ListColumns(1).DataBodyRange.Find(ComboBox4.Value, LookIn:=xlValues).Row - .HeaderRowRange.Row
    Me.TextBox5.Value = CDate(Me.TextBox4.Value) + .DataBodyRange(lig, 3).Value
End With
End Sub

3. rajoutez ce code qui agira en cas de changement de la combox catégorie

Private Sub ComboBox4_Change()
encours = True
With Me
    .TextBox4 = vbNullString
    .TextBox5 = vbNullString
End With
encours = False
End Sub

Bonjour

Votre dernier post est vide... quid ?

Ha mince !

Je vous remerciais dans un premiers temps et était en phase sur le changement des textbox ! Je devrais tester tout ca demain quand j'aurais un pc de dispo

Re,

Ok merci du retour

Pour votre code Effacer, vous pouvez déjà le remplacer par celui ci

Sub Efface()
Dim c As Control

encours = True
For Each c In Me.Controls
    Select Case TypeName(c)
        Case "TextBox"
            c.Value = ""
        Case "listbox", "ComboBox"
            c.Value = ""
            c.ListIndex = -1
    End Select
Next c
With Me
    .CommandButton1.Visible = True 'le bouton Ajouter devient visible
    .CommandButton3.Visible = False ' le bouton Modifier devient invisible
    .TextBox1.SetFocus ' on positionne le curseur dans le TextBox1
End With
encours = False
End Sub

Attention, vous devez avoir déclaré la variable Encours comme je vous l'ai indiqué dans l'EDIT de mon post précédent --> https://forum.excel-pratique.com/s/goto/1217006

Bonjour et bonjour @Dan,

Je suis actuellement entrain de modifier graçe à tes précieux conseils.

1) Je suis coincé au moment de vouloir cliquer sur le formulaire si le tableau a une ligne de rempli. Cela me note ce message d'erreur :

image

Le debogage me mène ici :

image

De ce que j'en comprends, le nom de mon userform n'irait pas ? pourtant c'est bien le même.. :(

__________________________________________________________

2) erreur sur date prévue de retour :

Lorsque je rempli le formulaire, j'ai bien la date de retour dynamique. Cependant, j'ai tout de même un message d'erreur :

image

(les textbox ne sont pas effacé car je dois modifier les noms de chacun pour que le code fonctionne)

Le débogage me mène ici :

image

J'avoue ne pas comprendre l'erreur..

Peux-tu à nouveau m'accompagner ? (merci, je sens que je progresse :) )

Bonjour

Peux-tu à nouveau m'accompagner ? (merci, je sens que je progresse :) )

Bien entendu

1) Je suis coincé au moment de vouloir cliquer sur le formulaire si le tableau a une ligne de rempli. Cela me note ce message d'erreur

C'est la même erreur que celle mentionnée au départ ...
Je ne comprends pas quand vous écrivez "cliquer sur le formulaire"....
Le message de dépassement de capacité est souvent dû à une variable mal déclarée.
Si vous cliquez sur le bouton en feuille Suivi, l'userform s'ouvre ou pas et sans erreur ?

2) erreur sur date prévue de retour

La textbox 4 et textbox 5, c'est quoi dans votre userform ?
Dans votre premier fichier:

- textbox 4 = date calendrier
- textbox5 = date retour
Là je ne vois pas de date en textbox pour date calendrier. Donc comment avez-vous l'erreur ?
Si c'est sur le changement de la l'info dans la combobox "catégorie", vérifiez que vous avez bien appliqué les 3 points décrit dans mon post précédent

(les textbox ne sont pas effacé car je dois modifier les noms de chacun pour que le code fonctionne)

Vous n'avez pas suivi ce que je vous ai écrit dans mon post précédent.Refaites le point sur les deux posts dans lesquels je vous écris quoi modifier.

NB : je suppose que vous utilisez bien le fichier que vous avez placé dans le fil ?

Bonjour Dan
Le fichier d'origine est une version que j'avais proposée en 2023. Merci d'avoir pris sur toi de l'adapter pour Azryell. Toujours très délicat comme opération dès l'instant où l'on change la structure du tableau d'origine.
Bon courage et Bon WE
Amitiés

Henri

https://forum.excel-pratique.com/excel/vba-tableau-de-suivi-d-emprunt-de-materiel-187938

Bonjour Henri

Oui je m'en doutais en voyant ce fichier et notamment les boutons (idem de ceux de Lulu1234... souvenirs... )
Question ... Azryell = Gumz ?

Toujours très délicat comme opération....

Tout à faire d'accord
J'attends son retour pour avancer

Bon WE !

Bonjour Dan et Azryell
Voici le fichier remis d'aplomb avec tes indications et mes propres rectifications. Il ne faut surtout pas MASQUER la colonne A.
Je n'ai pas toucher au bouton RAZ (effacement total de la base). J'ai ajouté un autre bouton: SUPPRESSION des emprunts terminés" qui supprime les enregistrements dont la colonne N (Suivi Emprunt) est égale à "Terminé" et qui ré-indexe les enregistrements restants.
Amicalement
Henri

Bonjour AFEH

Je me rend compte honteusement que je n'avais pas envoyé le message de remerciement.

Merci à toutes les personnes m'ayant aidé, cela m'a rajouter des compétences profitables :)

Rechercher des sujets similaires à "formulaire vba pret materiel"