Après avoir bien avancé sur un projet de planning que je tente de faire seul (un peu d'aide tout de même sur ce forum) et avant de le finaliser totalement, j'aimerai un coup pouce afin de vérifier, voir améliorer quelques procédures pour accélérer l'enregistrement.
Avant, il y a 2 ou 3 points à résoudre que je n'arrive pas à faire, Pourriez-vous m'aider la dessus ?
Dans Bouton "Valider" :
1) l'alerte de la Listbox1 non sélectionné ne fonctionne pas (alors que la listbox2 fonctionne).
2) la vérification de données dans la BDD ne fonctionne pas non plus (juste après le point 1 dans le code du bouton)
3) En gardant le même principe de fonctionnement du formulaire, j'aimerai, si possible, pourvoir enlever les Unload Me puis UF_Planif.Show après chaque enregistrement afin d'éviter la fermeture puis réouverture du formulaire à chaque manipulation.
Est-ce possible ?
Puis ensuite nous verrons pour la vitesse d’exécution des procédures.
Merci à vous.
Bonjour bebere,
Je reviens sur le soucis du calendrier qui s'affiche en décalé, j'essai de trouver pour remettre bien.
J'ai jeté un œil dans les codes et pas trop sur de moi, mais, me suis rendu compte dans l'Initialize que les variables on bougés comme :
Dim i As Long était en Integer avant et ce code en plus (a priori)
VB:
For Each Ctrl In Me.Frame1.Controls
If TypeOf Ctrl Is MSForms.Label And Left(Ctrl.Name, 1) = "J" Then
ReDim Preserve MesLabels(0 To i)
Set MesLabels(i).MesLabels = Ctrl: Ctrl.Tag = i + 1
i = i + 1
End If
Next Ctrl
que j'ai mis en suspens avec des ( ' ) remet bien les dates du calendrier dans le bonne ordre mais pouvons plus cliquer sur les Labels des dates comme ci ils étaient en Enabled = false.
Puis en Option Explicit, un autre Dim i& est en place également.
Je n'est regardé que ça pour le moment mais rien modifié.
Bonjour bebere,
Merci, j'essai de faire de mon mieux, à mon petit niveau de codeur Lol ...
Ok je regarde tranquillement et reviens te dire.
Merci, bon week-end
pompaero
Bonjour bebere,
Comme promis, de retour... lol
J'ai testé à plusieurs reprises le fichier qui fonctionne bien dans son ensemble. Quelques soucis et interrogations tout de même, comme :
j'ai voulu aménager la présentation du UserForm, ajouter une image et du coup il y a le ListBox1 qui ne se met plus a jour de ces items quand on passe des optionbutton "Modifier ou Supprimer" vers "Ajouter", sans toucher à aucun code !!! je comprends pas.
Sinon,
Le label1 ne se remet pas en noir au click du Listbox1 apres une alerte.
La multiselect de fonctionne pas lors de la suppression (efface qu'un seul item), mais ça à la limite se n'est pas grave.
Les combox1 et textbox1 sont il vraiment nécessaire en visible lors d'une "modification ou Suppression" ?
Oui il faut garder la recherche, mais est-il possible d'avoir la liste des dates inversé (date la plus récente en 1er) ?
Merci
Excuse de revenir, je me doute que tu dois être fortement occupé mais pourrai tu me dire pourquoi le Listbox ne se charge plus après l'avoir simplement changer de place, stp ?
J'aurai aimé pouvoir mettre en service ce fichier pour début juin. Merci de ta compréhension.
Excuse de revenir, je me doute que tu dois être fortement occupé mais pourrai tu me dire pourquoi le Listbox ne se charge plus après l'avoir simplement changer de place, stp ?
J'aurai aimé pouvoir mettre en service ce fichier pour début juin. Merci de ta compréhension.
Bonsoir
pompaero
Bonsoir le Fil (Bebere) ,le Forum
les deux procédures que j'ai modifié .
VB:
Public Sub AgentActif()
Dim a(), n As Long
With Sheets("Agent")
a = .Range("B2:D" & .[B65000].End(xlUp).Row).Value
End With
For i = LBound(a) To UBound(a)
If a(i, 1) = "Actif" Then
n = n + 1
ReDim Preserve Aactif(1 To n)
Aactif(n) = a(i, 2) & " " & a(i, 3)
End If
Next i
End Sub
VB:
'Chargement listbox1
Sub ChargeListBox1()
‘************
IniTbl
‘************
With UF_Planif
With .ListBox1
.ColumnCount = IIf(index = 1, 1, 5)
.Width = 140
.ColumnWidths = IIf(index = 1, "1", "0;80;30;0;0") 'mettre dernière colonne à 0
.MultiSelect = IIf(index = 1, fmMultiSelectMulti, fmMultiSelectSingle)
.List = IIf(index = 1, Aactif, Tbl)
.ListIndex = -1
End With
End With
End Sub
Merci de rentrer dans la danse Chti160, c'est cool. Je vais regarder tes propositions de mon côté, qui j'en suis sur son efficace.
Mais avant de modifier quoi que ce soit, je préfère voir avec Bebere, (normal, non ?) je ne vais pas démonter ce qu'il a fait en un click, ça s'appel le respect je crois, non.
Tu peux rester sur le fil sans soucis. Je regarde ça.
Bebere, as tu vu la proposition de ChTi160 en post23 ? par respect, je voulais en discuter avec toi. Pour ma part, il manque la mise jour du ListBox1 des agents encore dispo une fois une garde planifiée, (chose que j'aime bien dans tes codes, cela évite les doublons), si non ces codes semble identiques, mais plus allégé, c'est vrai (merci Chti160).
Si non, après test, cela me semble pas mal, mais, reviens avec une petite liste de bug et d'interrogation ?
1) Je ne vois pas l'utilité des TextBox1 et ComboBox1 lors d'une modification, pourrai-tu m'expliquer stp ? si non les mettre invisible.
2) J'ai supprimer tous les (jeux de lumières) changement de couleur des labels qui ne servent à pas grand chose au final.
3) J'ai ajouter l'activation de OptionButton1 à l'ouverture.
Côté Bug,
4) J'aimerai ajouter une image pour y inserer un logo mais cela bug ici (ligne en rouge) :
VB:
Private Sub Jour_Change()
Dim L As Control
Dim num As Variant
Dim j As Date
'Mise à jour des n° de jour
'code effacé ici pour l'exemple
'Mise à jour de la semaine
For Each L In Me.Controls 'on passe en revue l'ensemble des controls
num = Val(L.Tag)
[COLOR=rgb(184, 49, 47)] If num = 1 And L.ForeColor = &H80000011 Then 'le jour est dans le mois[/COLOR]
sem1.Caption = NOSEM(CDate(Day(Jour.Value) & "/" & Month(Jour.Value) & "/" & Year(Jour.Value)))
ElseIf num = 1 Then
sem1.Caption = NOSEM(CDate(Day(Jour.Value) & "/" & Month(Jour.Value) - 1 & "/" & Year(Jour.Value)))
End If
Next
End Sub
5) Lors d'une modification si l'on click le ListBox2 avant le ListBox1 cela bug ici (ligne en rouge) :
Code:
Private Sub ListBox2_Click() 'sigle
If index = 2 Then
Me.ListBox1.List(Me.ListBox1.ListIndex, 2) = Me.ListBox2
If Left(Me.ListBox2, 1) = "G" Then
Me.ListBox1.List(Me.ListBox1.ListIndex, 3) = Mid(Me.ListBox2, 2)
Else
Me.ListBox1.List(Me.ListBox1.ListIndex, 3) = ""
End If
End If
End Sub
Voilà c'est tout ce que j'ai rencontré en bug, donc pour moi, c'est pas mal, bon boulot.
Bonsoir pompaero
Bonsoir le Fil ,le Forum
En attendant Bebere Lol EDIT: C'était trop simple Lol
problème si multi sélection !
j'ai modifié la procédure :
With Sheets("BDD")
L = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
.Range("A" & L).Value = MaDate
.Range("A" & L).NumberFormat = "dd-mm-yy"
.Range("B" & L).Value = ListBox1.List(i)
.Range("C" & L).Value = ListBox2
If Left(Me.ListBox2, 1) = "G" Then .Range("D" & L).Value = Val(Mid(Me.ListBox2, 2))
L = L + 1
ListBox1.RemoveItem (i) '<----------- ICI supprime la ligne dans ListBox 1
End If
Next i
End With
La compétition est lancé !!!! ...... Je plaisante bien sûr, bien au contraire c'est cool d'avoir divers avis.
Pourquoi cette modif dans la procédure du Private Sub CB_Valider_Click(), ça correspond à quoi ?
Je viens de tester, ça bug sur
bonjour
pompaero il manque le logo et l'endroit où il se trouve à moins qu'il se trouve dans le fichier
textbox et combobox sont là pour changer le nom utile ou non
à toi de décider
le code de Jean Marie est intégré
pour les agents la liste est controlée via bouton ok, à chaque changement de date
je t'envoye le fichier dès que le code du logo est fait