Microsoft 365 Amélioration du codage.

pompaero

XLDnaute Impliqué
Bonjour le forum,

J'aimerai de l'aide pour pouvoir améliorer mon formulaire "FormSequence" .
Ceci est un fichier de longue date mais qui me servir aujourd'hui sur un autre domaine.
1) améliorer l'alerte sur le Listbox1 (agent) qui aujourdhui des qu'il y a une date avec un nom d'agent cela lace un message comme quoi l'agent existe déjà.
- J'aimerai que cette alerte soit améliorée avec la dat, le nom de l'agent et la séquence pour que le message l'alerte s'affiche.
2) Ensuite, ajouter le fonctionnement du bouton supprimer et si possible le bouton modifier.

Classeur exemple joint.
Merci à vous.
Cdlt
pompaero
 

Pièces jointes

  • Suivi instruction pompaero v0.xlsm
    569.1 KB · Affichages: 14

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Une proposition de modification de la macro ListBox1_Change :
VB:
Private Sub ListBox1_Change()
    Dim cell As Range, cell1 As Range
   
    'Choix multiple vers résumé
     Label4.ForeColor = &H80000012
    
    With Me.ListBox1
        If Not .Selected(.ListIndex) Then Exit Sub
    End With
    
    '// contrôle existence de la sélection date/agent dans le tableau de la feuille BDD
    With Feuil1.ListObjects(1)
        Set cell = .ListColumns("Date").Range.Find(CDate(Me.TextBox1))
        If Not cell Is Nothing Then
            Set cell1 = cell
            Do
                With Me.ListBox1
                    If cell.Offset(, 1) = .List(.ListIndex) Then
                        MsgBox "Mouvement date/agent déjà enregistré " & vbCrLf & vbCrLf & _
                                Space(5) & "Date......... : " & cell.Value & vbCrLf & _
                                Space(5) & "Agent....... : " & cell.Offset(, 1).Value & vbCrLf & _
                                Space(5) & "Module.... : " & cell.Offset(, 2).Value & vbCrLf & _
                                Space(5) & "Séquence : " & cell.Offset(, 4).Value
                        With Me.ListBox1: .Selected(.ListIndex) = False: End With
                        Exit Sub
                    End If
                End With
                Set cell = .ListColumns("Date").DataBodyRange.FindNext(cell)
            Loop Until cell.Address = cell1.Address
        End If
    End With
End Sub
 

JM27

XLDnaute Barbatruc
Bonsoir
Et si tu commençais par renommer tes objets dans ton userform
par exemple TextBox1 ne veut rien dire mais TxtDate ca parle
CommandButton1 par CmbLancerUsfDate .
et ensuite ton code sera beaucoup plus compréhensible pour toi et ceux qui veulent t'aider.
Tu verras on s'y habitue très vite.
après cela tout sera plus facile.
et ensuite on pourra regarder ton pb avec attention ;)
 

pompaero

XLDnaute Impliqué
Bonjour TooFatBoy, JM27,

Tout d'abord, meilleurs voeux 2023 à vous et au forum.

TooFatBoy,
j'ai testé ton code, l'affichage du message est très bien (je garde) mais le souci reste quand il y a déjà une date et un agent dans la BDD, il n'ai plus possible d'inscrire à nouveau une entrée.

JM27,
Comme demandé, j'ai renommé tous les objets.

Merci à vous de votre retour.
CDLT
pompaero
 

Pièces jointes

  • Suivi instruction pompaero v0.xlsm
    553.7 KB · Affichages: 4

pompaero

XLDnaute Impliqué
Re,

L'alerte est très bien avec le message.
Ce que j'aimerai, c'est de pouvoir entrer une nouvelle donnée avec une même date mais sans la même séquence.
Ex :
DateAgentModuleséquence
02/01/2023Agent1E.Learning aeronautiqueLa structure d’un aérodrome
02/01/2023Agent2
E.Learning aeronautique
La structure d’un aérodrome
02/01/2023Agent3
E.Learning aeronautique
La structure d’un aérodrome
02/01/2023Agent1
E.Learning aeronautique
Les hélistations
Si par ex,
les 3 premières lignes sont enregistrées et que l'on veux de nouveau l'enregistrer à se moment la, le message d'alerte apparait.
Mais si l'on veux enregistrer des nouvelles données (comme la ligne 4), là il ne faudrait pas d'alerte et pouvoir entrer les données.
L'alerte devrait apparaitre seulement si les items des 4 colonnes sont déjà enregistrées dans la BDD.

Si mes explications sont pas assez claire, dis le moi.
Merci

Cdlt
pompero
 

TooFatBoy

XLDnaute Barbatruc
OK, donc tu veux un message d'alerte uniquement si tous les éléments sont identiques.

Ça me semble en effet plus cohérent, mais je m'en été tenu à ce qui existait déjà dans le code, pour ne pas modifier sa logique, et j'avais simplement modifié le message, comme tu l'avais demandé. 😉
[edit] mais j'avais mal compris ta question. :( [/edit]


Waouh ! Une réponse le jour même ! T'as pris une sacrée bonne résolution pour 2023 ! 😅
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Donc en fait, quand tu disais "J'aimerai que cette alerte soit améliorée avec la date, le nom de l'agent et la séquence pour que le message l'alerte s'affiche.", tu tu ne parlais pas du message de l'alerte, mais de la condition de déclenchement de l'alerte, si je comprends bien ???

Comme quoi, poser une question clairement est vraiment utile : ça évite de faire perdre son temps à tout le monde (demandeur et aideur). 😠
 

TooFatBoy

XLDnaute Barbatruc
Oui c'est ça "le déclenchement de l'alerte".
désolé pour la perte de temps.
Pardonné tu es, camarade ;)



Je suis en train de regarder, mais c'est bien compliqué pour moi... :(

Le calendrier ne fonctionne plus ???
Est-ce qu'il y a vraiment un intérêt d'utiliser la variable LeTxt, qui semble n'être utilisée qu'une seule fois (et pour rien apparemment) ?
Autrement dit, est-il prévu d'utiliser cette variable dans une évolution du code VBA ?

Chez moi il y a un pb avec ton dernier fichier : quand je valide une date dans le calendrier, ça ferme le formulaire "FormSequence", donc pas moyen de faire des tests. 😕
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Chez moi il y a un pb avec ton dernier fichier : quand je valide une date dans le calendrier, ça ferme le formulaire "FormSequence", donc pas moyen de faire des tests. 😕
Oui chez moi aussi!!!
Je viens de modifier le TextDate en TextBox1 et cela fonctionne.
Non, je voulais dire "après avoir corrigé TextBox1 en TextDate, ça fermait le FormSequence.
Je n'ai plus le problème, donc je suppose que ça venait du fait que j'avais deux versions différentes ouvertes en même temps.



Ce que tu demandes est très complexe pour moi. Il y a beaucoup de cas à vérifier. :(
 
Dernière édition:

pompaero

XLDnaute Impliqué
Re,

Ah mince !! je comprends, pas de soucis, c'est gentil tout de même de ta part de vouloir aider.
Je vais voir si il est possible de faire autrement, alors.

Euuuuh !! Si on repartaient de zéro avec la base de ce classeur !! ça peut le faire... à ton avis ?

Cdlt
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
pompaero
pas sûr d'avoir tout compris , mais voilà ce que j'ai fait
par exemple
on a dans la BDD
02/01/2023AGENT1 NomE.Learning aeronautiqueA1La structure d’un aérodrome.
si lors de la saisie on entre la même chose on a un message et la saisie n'est pas mise dans la ListBox "ListSeance"

Jean marie
 

Pièces jointes

  • Suivi instruction pompaero (Chti160).xlsm
    552 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 397
Membres
103 200
dernier inscrit
pascalgip