UserForm de Modification, Gérer un Doublon de nom

cut

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous afin de continuer à progresser sur les UserForm.
Mon problème est le suivant:
J'ai mis en place une Base de données destinée à être complétée régulièrement.
Pour la compléter, j'ai mis en place un bouton formulaire d'insertion des données et bien entendu un second bouton de modification.
Mon problème vient de ce dernier.

En effet quand celui-ci est activé, il me recherche la ligne en fonction du nom, hors dans ma BDD, je suis amené à avoir régulièrement les mêmes noms qui reviennent, et je n'ai pas de valeur unique pour chaque ligne.

Ainsi je souhaiterai pouvoir, à l'aide d'un bouton dans mon userform, relancer la recherche dans ma BDD pour qu'il me propose les autres lignes avec le même nom.

Je ne sais pas si je suis très clair... :? Et si ma requête est réalisable, bien entendu si vous pensez à d'autres solutions équivalentes n'hésitez pas :)


Je vous remercie d'avance pour votre aide dans tous les cas.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : UserForm de Modification, Gérer un Doublon de nom

Bonsoir.
Pourriez vous joindre un classeur un peu nettoyé ? J'ai eu plusieurs fois "Nombre de format de cellules différents trop élevé" et pour finir une réparation où il était question d'un fichier trop endommagé, mais … un restant à ramasser à la petite cuillère, sans aucun format de cellule et projet VBA purement et simplement viré !
 

cut

XLDnaute Nouveau
Re : UserForm de Modification, Gérer un Doublon de nom

Bonjour,

Je vous renvoi le fichier, peut-être celui-ci fonctionnera-t-il un peu mieux?
Merci d'avance pour votre aide en tout cas.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : UserForm de Modification, Gérer un Doublon de nom

Même résultat. Simplifier vraiment la présentation. Enlevez la plupart des couleurs, mettez à peu près identiques partout les bordures, les tailles de police. Chaque sous-caractéristique qui diffère c'est un autre format de cellule. Leur nombre a donc tendance à être le produit des nombres de sous-caractéristiques différentes utilisées.
 

Dranreb

XLDnaute Barbatruc
Re : UserForm de Modification, Gérer un Doublon de nom

Cette fois le Projet VBA est intact. Mais la mise en forme est toujours fusillée.
Je regarde …
À +

Je propose de remplacer les TextBox du Userform7 par des ComboBox. Ça vous irait ? Risque t-il vraiment d'y avoir encore des doublons sur ces 2 informations ?
Je vais être obligé de mettre des boutons de formulaire pour afficher les Userform. Le convertisseur de .xlms en .xls pour ma version d'Excel laisse quelque chose d'inachevé pour les boutons de commande implantés dans les feuilles (impossibilité de sortir du mode création).

Mais… est-ce qu'on ne peut pas faire ça dans l'Userform8, quitte à y ajouter un 3ième ComboBox pour le matricule ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : UserForm de Modification, Gérer un Doublon de nom

Peut-il encore y avoir des doublons sur l'ensemble des 3 informations, Nom, Prénom et Matricule ?

Bon je suppose que oui, et j'ai un début. J'ai du refaire un classeur, je ne pouvais exploiter le votre à cause des boutons de commande dans la feuille.
 

Pièces jointes

  • CbxLiéesCut.xls
    195 KB · Affichages: 26
Dernière édition:

cut

XLDnaute Nouveau
Re : UserForm de Modification, Gérer un Doublon de nom

Dans ce tableau une même personne pourra y apparaitre plusieurs fois ainsi leurs noms, prénoms et matricules reviendra, la différence apparaitre plus nettement selon le dispositif et la date de demande.

Pour tout mettre dans l'Userform 8 cela ne pose pas de souci, l'idée est avant tout que cela soit fonctionnel.

En tout cas je vous remercie pour votre aide :)
 

Dranreb

XLDnaute Barbatruc
Re : UserForm de Modification, Gérer un Doublon de nom

Je vous livre encore cette procédure qui pourrait vous être utile :
VB:
Sub ÉcrireDonnées(ByVal L As Long)
Dim I&
If LCou = 0 Then
   For I = 1 To CL.Count
      With CL.Item(I)
         VLgn(1, .Col) = .CBx.Text
         End With: Next I: End If
VLgn(1, 9) = CDbl(ComboBox1.Value)
VLgn(1, 10) = TextBox1.Value
VLgn(1, 12) = TextBox2.Value
VLgn(1, 11) = TextBox3.Value
On Error Resume Next
Err.Clear: VLgn(1, 13) = CDate(TextBox4.Value): If Err Then VLgn(1, 13) = Empty
Err.Clear: VLgn(1, 14) = CDate(TextBox5.Value): If Err Then VLgn(1, 14) = Empty
Err.Clear: VLgn(1, 15) = CDate(TextBox6.Value): If Err Then VLgn(1, 15) = Empty
Err.Clear: VLgn(1, 16) = CDate(TextBox7.Value): If Err Then VLgn(1, 16) = Empty
Err.Clear: VLgn(1, 17) = CDate(TextBox8.Value): If Err Then VLgn(1, 17) = Empty
Err.Clear: VLgn(1, 18) = CDate(TextBox9.Value): If Err Then VLgn(1, 18) = Empty
Err.Clear: VLgn(1, 20) = CDate(TextBox10.Value): If Err Then VLgn(1, 20) = Empty
On Error GoTo 0
VLgn(1, 19) = Choose(1 - 2 * OBnOui.Value - OBnNon.Value, Empty, "Non", "Oui")
CL.PlgTablo.Rows(L).Resize(, 25).Value2 = VLgn
CL.Actualiser
End Sub
À tester, adapter, mettre au point.

Pour un ajout copier une ligne existante, insérez la devant elle même puis appelez cette procédure en lui précisant le L de la copie ou mieux: de l'original.
CL.PlgTablo.Rows(N) est toujours la Nième ligne entière de la base.
Ne vous amusez pas à taper dans Worksheets("1—Sanction").Range(… End(xlUp) et tout ça, c'est inutile et source d'erreur, n'utilisez que CL.PlgTablo: il est fait pour ça !
Si vous voulez connaitre la dernière ligne c'est CL.PlgTablo.Rows.Count
Mais n'ajoutez rien après cette dernière ligne, sinon cette nouvelle ligne ne fera plus partie de CL.PlgTablo: Insérez en d'abord une copie devant elle même, alors seulement vous pourrez travailler sur la nouvelle dernière ligne.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves