VBA - Insertion ligne depuis formulaire et affichage ligne depuis une feuil

Bonjour à tous,

Meilleurs voeux 2022.

Je me permets de solliciter vos connaissances pour un petit soucis. Je dois créer un fichier Excel de contrôle d'équipements (casques, gants, ...). J'ai une feuille par type d'équipement.

En première page, j'ai un "formulaire" qui, une fois rempli, devrait pouvoir remplir le tableau correspondant au type d'équipement.

Egalement en première page, j'aimerais pouvoir rechercher une ligne spécifique selon un critère et afficher la ligne en entier. Petite difficulté, il se peut qu'un équipement fasse parti d'un lot (1 casque avec 2 gants par exemple). J'aimerais qu'en affichant 1 équipement, les équipements du même lot s'affichent en même temps.

Je joins un exemple de mon fichier et reste à votre disposition !

Merci beaucoup à tous

Juju_ski

9classeur1.xlsx (23.01 Ko)

Re-bonjour à tous,

J'ai réussi à un peu avancer. J'ai créer l'userform qui me permet d'ajouter un produit.

Malheureusement, je rencontre 2 problèmes :

1/ Je ne sais pourquoi rien ne s'affiche quand je valide...

2/ Je ne sais pas quel code prévoir pour rechercher la feuille qui correspond au type d'EPI.

Merci par avance :)

juju_ski

3suivi-epi.xlsm (41.69 Ko)

Bonsoir Juju_ski, bonsoir le forum,

Il y a plein de choses que je ne comprends pas dans ton code :

• Pourquoi ces lignes pour les codes obligatoire alors que la propriété [Tag] de tous les contrôle est vide ?

On Error Resume Next
'VERIFICATION DES SAISIES
    For Each Ctrl In Me.Controls
        If Ctrl.Tag = "Obligatoire" Then
            If Ctrl.Text = "" Then
                If ChampsManquants <> "" Then ChampsManquants = ChampsManquants & ", "
                ChampsManquants = ChampsManquants & Ctrl.Name
            End If
        End If
    Next Ctrl
    If ChampsManquants <> "" Then
        MsgBox "Les champs suivants sont nécessaires à l'application et n'ont pas été remplis:" & vbCrLf & ChampsManquants, vbOKOnly + vbInformation, "Champs manquants ou incorrects"
        Exit Sub
    End If

• pourquoi insérer une ligne ?

    'Dernière ligne du tableau
    Ln = .Range(" C" & Rows.Count).End(xlUp).Row
      ' ------------- Trouve la fin de plage pour insérer une ligne puis effectuer le tri --------------
        For Each c In .Range("C" & DebPlage & ":C" & Ln)

            If DebPlage >= Ln Then
                DebPlage = c.Row + 1
                ' Fin de plage
                FinPlage = c.Row + 1
                'Insertion d'une ligne
                Rows(FinPlage).Insert Shift:=xlDown
                Call Ecriture
                Exit For
                End If
        Next c

Tu parle d'effectuer le tri. Je ne vois aucun tri. Ne pourrais-tu pas simplement écrire dans la première ligne vide du tableau ?

Sinon, je te propose un code différent dans ton fichier modifié en pièce jointe. J'ai défini la propriété [Tag] = "Obligatoire" uniquement sur les contrôles Cbbtype et Txtnserie. Il te faudra la définir ainsi pour tous les champs que tu veux rendre Obligatoire.

Le service pour déposer un fichier en pièce jointe étant pour le moment indisponible je réessaierai plus tard

Je regarde pour ton problème numéro 2...



Bonsoir ThauThème,

Merci pour ton message.

En réalité, j'ai repris un code que j'ai trouvé et j'ai essayé de l'adapter à mon cas. Mon objectif est bien de remplir la première ligne vide.

Je n'ai pas encore défini les "cellules" obligatoires, mais quasiment toutes le seront.

Le tri, je cherche un code simple, qui tri chronologiquement selon la colonne U.

Mais quand j'en serai là ... :)

Merci beaucoup !

Ca fonctionne parfaitement :) Juste 2 remarques.

a.On copie le format de la ligne 7. Or, la ligne supérieure de la ligne 7 est en "gras". Serait-il possible de remplacer cela par une ligne standard ? J'ai peur qu'avec 60/70 lignes, ça fasse lourd le gras sur chaque ligne.

b.J'ai rajouté le code suivant pour supprimer le croix de la colonne A.

RF.Columns(1).ClearContents

Ensuite, pour mon soucis 2 (la recherche), je pensais créer un nouvel userform avec 7 possibilités d'éléments à remplir pour effectuer la recherche et ensuite afficher toutes les lignes qui répondent à la recherche à partir de la ligne 20. Qu'en pensez-vous ?

Belle journée à vous,

juju_ski

Re,

J'ai corrigé les problèmes de bordures et la croix...

Pour la recherche, je pensais aussi à un système de ce style. Je pense d'ailleurs pouvoir utiliser le même UserForm. Ta recherche pourra-t-elle être multi-critères ?

Je ne pourrai voir ça que ce soir après le boulot...

J'ai imaginé le formulaire ci-joint, qui peut être multicritères en effet. Sans être spécialiste, j'aurais dit qu'il faille lister l'ensemble des possibilités dans la feuille donnée, mais vous saurez mieux que moi ...

Merci beaucoup pour votre aide :)

juju_ski

1suivi-epi.xlsm (49.75 Ko)

Bonsoir Juju_ski, bonsoir le forum,

Est-ce que le numéro de série peut :
1. Contenir des doublons dans le même onglet. Oui/non ?
2. Se retrouver dans des onglets différents. Oui/non ?

À quoi sert le Lot et pourquoi n'apparaît-il pas dans l'UserForm ?

Re,

En pièce jointe la version 03. Un seul UserForm. Les TextBoxes d'identification ont été remplacées par des ComboBoxes, c'est mieux pour la recherche...

Pour effectuer une recherche, choisit ou tape une valeur dans le ou les champs qui te servent de critères (c'est multi-critères) puis clique sur le bouton Rechercher. Un Nouvel UserForm (UserForm1) affiche la liste des lignes trouvées correspondant à ta requête (ou un message s'affiche en disant qu'il n'a rien trouvé). Attention, des lignes peuvent êtres en doublon si elles contiennent les valeurs demandées de plusieurs critères. Si tu veux utiliser la recherche uniquement dans un onglet particulier, sélectionne le, sinon la recherche se fait sur tous les onglet quand la Combobox [Cbbtype] est vide
Dans cet UserForm1, il suffit de double-cliquer sur une ligne pour l'attendre...

À tester...

Re,

Une version 04 vraiment multi-critères...

Bonjour :)

Désolé de mon retour tardif. J'allais envoyer une réponse ce matin, mais entre la rédaction et l'envoi, bug d'ordi, obligé de tout recommencer.

Pour répondre à vos questions :

- le n° de lot permet une association entre plusieurs produits : un harnais est associé à 2 mousquetons par exemple. Donc que je cherche le numéro de série du harnais, j'ai automatiquement les mousquetons qui apparaissent :)
- le n° de série devrait être unique. Après, je ne garantie pas à 100% que le numéro de série d'un harnais ne soit pas le même, par hasard, qu'un casque.

Concernant la recherche, c'est top ! Est-ce qu'on peut supprimer certains éléments dans le résultat dans l'userform ? Je n'ai pas besoin d'avoir l'ensemble des notes (sur 10) dans cette recherche. Je préférerais d'ailleurs avoir le bilan, le nom du contrôleur et la date du contrôle :)

A ce propos, le bilan est censé être le résultat d'un calcul. Je pensais intégrer une formule dans la colonne correspondante de chaque feuille, mais j'ai peur que l'ajout, par l'userform, d'une ligne supprimer la formule. Qu'en pensez-vous ? Peut-être est-ce possible (surement d'ailleurs), de prévoir directement la formule lors de l'ajout de la ligne ?

1000 mercis !

Belle journée

Re,

En pièce jointe la version 5. Pour le Bilan, j'ai mis une formule bidon dans la cellule R7 de l'onglet Harnais. Elle est recopiée à la validation. Donc, rajoute ta propre formule dans R7 de chaque onglet pour que ce soit valable partout.

N'oublie pas que pour rendre un champ obligatoire il te faut le sélectionner dans VBE (Visual Basic Editor)et modifier sa propriété [Tag] qui doit être égale à : Obligatoire.

Il y avait un bug sur la 05, une boucle supprimée mais un Exit For gardé... La 06 ci-dessous :


Bonjour Juju_ski, bonjour le forum,

Quelques bugs corrigés dans la version 07. Notamment au double-clic pour atteindre la ligne dans UserForm1 qui n'était pas fonctionnel.

Tu avais demandé un tri par rapport à la colonne U, il est fait. Mais comme la Date du prochain contrôle ne fait pas partie des champs de l'UserForm, le tri ne s'effectue qu'après le rajout d'une ligne par le bouton Valider.

Bonjour :)

Merci ! C'est fluide, c'est parfait !

Je vais rajouter une case lot dans l'userform je pense, je vais essayer de me débrouiller ! Si j'ai un soucis, je reviens ici ^^

Merci encore !

Au besoin, la dernière version avec MFC et formule à jour :)

4suivi-epi.xlsm (71.20 Ko)
Rechercher des sujets similaires à "vba insertion ligne formulaire affichage feuil"