Je rencontre un problème sur l'enchainement des notes...
Actuellement j'ai un userform avec plusieurs textbox, les cases à cocher sont OK, elles fonctionnent.
Le problèmes actuellement avec ce code des textbox à la toute fin, je ne peux, par exemple, pas ajouter de note via le textbox2 (T2) si je n'ai pas rempli le textbox1(T1) et ainsi de suite.
re
ce que j'ai modifié en fonction de ce que j'ai compris Lol
VB:
Private Sub UserForm_initialize()
For i = 3 To 33
'Garder la case cochée dans userform si case égal X & la note dans le textbox
If Cells(4, i) = "X" Then Me.Controls("J" & i - 2) = True
Me.Controls("J" & i - 2).Enabled = IIf(Me.Controls("J" & i - 2) = True, False, True)
'Si une cellule contient une note alors on la récupère dans le formulaire
If Not Cells(4, i).Comment Is Nothing Then Me.Controls("T" & i - 2) = Cells(4, i).Comment.Text
Me.Controls("T" & i - 2).Enabled = Me.Controls("J" & i - 2).Enabled
Next i
End Sub
J'aimerai garder le système du bouton si ça ne vous dérange pas.
Etant débutant, j'aimerai garder les codes comme j'avais pu les faire (case par case, textbox par textbox & case à cocher par case à cocher) même si cela fait lourd à vos yeux. C'est pour moi m'y retrouver facilement et m'aider à comprendre.
J'ai testé et malheureusement, les données peuvent être retirées et je souhaite qu'une fois les données enregistrées alors on les retrouve dans l'userform mais elles ne sont plus modifiables.
Et je suis également obligé de remplir la case à cocher pour qu'il y ait la note et j'aimerai que cela soit séparé, d'avoir 2 choses distinctes
Bonjour le Fil
à première vue, tu n'as que des mois de 31 jours, il n'y a pas de Choix de mois à faire ni de Base de Données ?
Bonne journée
Jean marie
Pour le moment j'ai fait une unique page et seulement après je vais créé les autres mois.
Le choix du mois n'est donc pas à faire, lorsque j'ai copié la feuille, la macro fonctionne sur toutes les pages.
Pour le moment j'ai fait une unique page et seulement après je vais créé les autres mois.
Le choix du mois n'est donc pas à faire, lorsque j'ai copié la feuille, la macro fonctionne sur toutes les pages.
Je pense que c'est pas le meilleur choix (Version soft pour dire que c'est un mauvais choix) La Ma logique c'est une feuille :
==> Mois voir si possible seulement une feuille juste du mois en cours avec un feuille modèle ou si 12 feuilles (1 par mois)
==>BDD
==>Paramètre avec par exemple liste des mois/année, jours fériés, liste des primes et montants etc....
==>Liste des personnes et encore cette liste peut être avec les paramètres
Après il peut y avoir d'autres variantes d'organisation du fichier
Normalement à la création on réfléchit au cahier des charges à ce que l'on veut faire, pourquoi, but et moyen, comment je vais m'en servir, ergonomie, ordre de grandeur de la/les BDD etc....
Je sais que vous auriez pratiqué d'une autre manière.
Mais à force de m'acharner sur des codes basiques j'ai quand même trouvé la solution est la voici dans le fichier ci-contre.
4 lignes de codes et 2 lignes de commentaires suffisent au lieu de 290 lignes et tu ajoutes au début
Option Compare Text comme cela si tu mets x ou X en majuscule ou en minuscule cela fonctionnera
VB:
Option Compare Text
Private Sub UserForm_initialize()
For i = 3 To 33
'Garder la case cochée dans userform si case égal X & la note dans le textbox
If Cells(4, i) = "X" Then Me.Controls("J" & i - 2) = True
'Si une cellule contient une note alors on la récupère dans le formulaire
If Not Cells(4, i).Comment Is Nothing Then Me.Controls("T" & i - 2) = Cells(4, i).Comment.Text
Next i
End Sub
et idem pour 4 lignes au lieu de 220 lignes
VB:
Private Sub OK1_Click()
Application.ScreenUpdating = False
Dim i&
For i = 3 To 33
'Ajoute valeur à une cellule après cochage ou non d'une case à cocher
If Me.Controls("J" & i - 2) = True Then Cells(4, i) = "X" Else: Cells(4, i) = ""
Next i
Unload Me 'fermeture de la fenêtre après appui Ok
End Sub
De plus ton code ne permet pas d'enlever des croix mais seulement d'en rajouter
J'ai rectifié cela dans mon le code
Si tu ne veux pas cette amélioration tu remplaces
'Ajoute valeur à une cellule après cochage ou non d'une case à cocher
If Me.Controls("J" & i - 2) = True Then Cells(4, i) = "X" Else: Cells(4, i) = ""
4 lignes de codes et 2 lignes de commentaires suffisent au lieu de 290 lignes et tu ajoutes au début
Option Compare Text comme cela si tu mets x ou X en majuscule ou en minuscule cela fonctionnera
VB:
Option Compare Text
Private Sub UserForm_initialize()
For i = 3 To 33
'Garder la case cochée dans userform si case égal X & la note dans le textbox
If Cells(4, i) = "X" Then Me.Controls("J" & i - 2) = True
'Si une cellule contient une note alors on la récupère dans le formulaire
If Not Cells(4, i).Comment Is Nothing Then Me.Controls("T" & i - 2) = Cells(4, i).Comment.Text
Next i
End Sub
et idem pour 4 lignes au lieu de 220 lignes
VB:
Private Sub OK1_Click()
Application.ScreenUpdating = False
Dim i&
For i = 3 To 33
'Ajoute valeur à une cellule après cochage ou non d'une case à cocher
If Me.Controls("J" & i - 2) = True Then Cells(4, i) = "X" Else: Cells(4, i) = ""
Next i
Unload Me 'fermeture de la fenêtre après appui Ok
End Sub
De plus ton code ne permet pas d'enlever des croix mais seulement d'en rajouter
J'ai rectifié cela dans mon le code
Essaye ceci
Fais les tests UNIQUEMENT sur le jour 1
VB:
Private Sub T1_Change()
'Ajoute en note le commentaire mit dans un textbox et ne pas le modifier une fois ajouté
If T1.Value = "" Then Range("C4").Comment.Delete: Exit Sub 'Si T est vide on supprime le commentaire et on sort
If Not Range("C4").Comment Is Nothing Then
'Si je change d'avis la nouvelle note sera enregistré
OldComment = Range("D4").Comment.Text
NewComment = T1.Value 'Commentaire modifié
Range("C4").Comment.Delete
Range("C4").AddComment (NewComment)
Range("C4").Comment.Visible = True
Else
Range("C4").AddComment T1.Value
Range("C4").Comment.Visible = True
End If
End Sub
Et regarde les modifs des commentaires se font en live
Après on va essayer de faire une version courte .......
Essaye ceci
Fais les tests UNIQUEMENT sur le jour 1
VB:
Private Sub T1_Change()
'Ajoute en note le commentaire mit dans un textbox et ne pas le modifier une fois ajouté
If T1.Value = "" Then Range("C4").Comment.Delete: Exit Sub 'Si T est vide on supprime le commentaire et on sort
If Not Range("C4").Comment Is Nothing Then
'Si je change d'avis la nouvelle note sera enregistré
OldComment = Range("D4").Comment.Text
NewComment = T1.Value 'Commentaire modifié
Range("C4").Comment.Delete
Range("C4").AddComment (NewComment)
Range("C4").Comment.Visible = True
Else
Range("C4").AddComment T1.Value
Range("C4").Comment.Visible = True
End If
End Sub
Et regarde les modifs des commentaires se font en live
Après on va essayer de faire une version courte .......