Temps partiel dans planning activité
bonjour Banzaï, et les autres,
voilà, j'ai apporté qq modif sur ton code car j'avais oublié deux ou trois choses.
tout d'abord, j'ai ajouté une dizaine de Chekbox car j'avais besoin d'une réserve (des activités pouvant être créées...). J'ai donc modifié le code et, après de nombreuse erreur, je crois y être arrivé.
J'ai aussi modifié la feuil "récap "lieu de vie"" car il me fallait une ligne 2 et 4 pour noter la personne qui encadre (un oubli bête je le reconnais...), là aussi je crois être arrivé à modifier le code. Par contre j'ai vue que dans l'USF2 quand on utilise la gomme ça n'enlève pas dans la feuille récap pour le lieu de vie !
Sinon, j'ai rajouté 5 Chekbox en bas de page de l'USF2 pour les temps partiels (et oui encore un oubli). j'ai, en regardant ton code, fait de nombreux essai, mais je n'y arrive pas. je voudrais que lorsque la case est coché que la journée (de la ligne 10 à 37) elle se remplisse d'une couleurs (15 par ex) avec la motion "Absent du CAJ".
merci d'avance,
Francky
merci Banzai,
c'est exactement ce que je voulais.
par contre, il y a une erreur quand je clique sur une activité, regarde l'image ci-dessous :
au fait, ne cherche pas les CheckBox qui ne servent pas, je les ai caché dans l'USF2, il suffit d'agrandir l'USF pour les retrouver...
sinon, dans ma feuille modèle, j'ai une image qui se met automatiquement lorsque le nom est en "D2", ça fonctionne mais que si je clique sur l'image, j'aurais voulu qu'elle se mette toute seul ?
voici le code :
Dim Chemin As String
Private Sub Image1_Click()
Dim Img As String
'pas oublier slach inverse au bout du chemin
Chemin = "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
If Range("D2") = "" Then
Image1.Picture = LoadPicture("")
Else
'adapter l'extention des fichiers images
Img = Chemin & [D2] & ".jpg"
If Dir(Img) <> "" Then
Image1.Picture = LoadPicture(Img)
Else
Image1.Picture = LoadPicture("")
End If
End If
End Sub
encore merci Francky
Bonsoir
il faut croire que nonFrancky69100 a écrit :J'ai donc modifié le code et, après de nombreuse erreur, je crois y être arrivé.
2 petits conseils (aucune obligation)
Ne places pas des contrôles en dehors des limites de l'userform, laisses les en vue mais rends les invisibles (soit par leur propriété, soit par le code)
Quand tu places un fichier dans ton message, changes son nom pour ne pas qu'il soit identique à un fichier précédent
J'ai adapté le code pour afficher l'image
A voir (un peu spéciale comme syntaxe)
Ok Banzai,
je prend bien note de tes remarque. Je teste l'incrustation des photos demain, car elle sont sur le serveur du travail (et donc pas chez moi).
Pour rendre invisible des checkbox ok pour la police (il suffit de mettre la même couleur que le fond) mais pour l'objet ?
à demain et encore merci,
au fait plus de bug...
Francky
Bonsoir
Francky69100 a écrit :Pour rendre invisible des checkbox ok pour la police (il suffit de mettre la même couleur que le fond) mais pour l'objet ?
NON
Tu as la propriété Visible qu'il faut placer à False
Ou alors dans le code (Userform_Initialize)
Me.CheckBox51.Visible = False
Et si tu en as plusieurs fais une boucle
bonjour Banzai,
ok, je note...
sinon, une erreur "52" pour la photo :
Private Sub UserForm_Activate()
Dim Img As String, Chemin As String
'pas oublier slach inverse au bout du chemin
'Chemin = "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
Chemin = ThisWorkbook.Path & "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
With F1
If .Range("D2") = "" Then
.OLEObjects("Image1").Object.Picture = LoadPicture("")
Else
'adapter l'extention des fichiers images
Img = Chemin & .Range("D2") & ".jpg"
If Dir(Img) <> "" Then
.OLEObjects("Image1").Object.Picture = LoadPicture(Img)
Else
.OLEObjects("Image1").Object.Picture = LoadPicture("")
End If
End If
End With
End Sub
' Dans le code de l'Userform
Private Sub UserForm_Initialize()
Dim Nb As Integer, Colonne As Integer, I As Integer
Dim Ctrl As Control
Dim Ligne As Long
Dim Numero As Integer
Dim Img As String, Chemin As String
'Chemin = "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
Chemin = ThisWorkbook.Path & "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
For Each Ctrl In Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
ReDim Preserve CBox(Nb)
Set CBox(Nb).Kase = Ctrl
Nb = Nb + 1
End If
Next Ctrl
With F1
' If .Range("D2") = "" Then
' F1.OLEObjects("Image1").Object.Picture = LoadPicture("")
' Else
' 'adapter l'extention des fichiers images
' Img = Chemin & [.D2] & ".jpg"
' If Dir(Img) <> "" Then
' F1.OLEObjects("Image1").Object.Picture = LoadPicture(Img)
' Else
' F1.OLEObjects("Image1").Object.Picture = LoadPicture("")
' End If
' End If
j'ai essayé de mettre le chemin au deux endroit qui me semblait bon !
Francky
Bonjour
Utilises seulement ton chemin
l'autre était juste là pour mes tests
Private Sub UserForm_Activate()
Dim Img As String, Chemin As String
'pas oublier slach inverse au bout du chemin
Chemin = "U:\Gestion des personnes accueillies et des familles\Trombinoscope\BDD\"
With F1
J'avais oublié de nettoyer la macro Userform_Initialize
Remplaces la macro actuelle par celle-ci
Private Sub UserForm_Initialize()
Dim Nb As Integer, Colonne As Integer, I As Integer
Dim Ctrl As Control
Dim Ligne As Long
Dim Numero As Integer
For Each Ctrl In Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
ReDim Preserve CBox(Nb)
Set CBox(Nb).Kase = Ctrl
Nb = Nb + 1
End If
Next Ctrl
With F1
Encours = True
For Colonne = 2 To 8
For Ligne = 5 To .Cells(Rows.Count, Colonne).End(xlUp).Row
If .Cells(Ligne, Colonne) <> "" Then
If .Cells(Ligne, Colonne) = "Lieu de vie" Then
Numero = 46 + (Colonne - 2) * 2
If Ligne > 20 Then Numero = Numero - 1 ' L'après midi
Me.Controls("CheckBox" & Numero) = True
ElseIf .Cells(Ligne, Colonne) = "Orhophonie" Then '56
Me.ComboBox4.ListIndex = Colonne - 2
Me.ComboBox5.ListIndex = Ligne - 5
Me.ComboBox6.ListIndex = .Cells(Ligne, Colonne).Offset(1, 0).Row - 1 - 5
Me.CheckBox56 = True
Me.ComboBox4.Enabled = False
Me.ComboBox5.Enabled = False
Me.ComboBox6.Enabled = False
ElseIf .Cells(Ligne, Colonne) = "Psychomotricité" Then '55
Me.ComboBox1.ListIndex = Colonne - 2
Me.ComboBox2.ListIndex = Ligne - 5
Me.ComboBox3.ListIndex = .Cells(Ligne, Colonne).Offset(1, 0).Row - 1 - 5
Me.CheckBox55 = True
Me.ComboBox1.Enabled = False
Me.ComboBox2.Enabled = False
Me.ComboBox3.Enabled = False
ElseIf .Cells(Ligne, Colonne) = "Absent du CAJ" Then
Me.Controls("CheckBox" & 57 + (Colonne - 2)) = True
Else
For I = 1 To 44
If Me.Controls("CheckBox" & I).Caption = .Cells(Ligne, Colonne) Then
Me.Controls("CheckBox" & I) = True
Exit For
End If
Next I
End If
End If
Next Ligne
Next Colonne
Encours = False
End With
End Sub
merci,
maintenant ça fonctionne, par contre, chaque fois que je clique sur un Checkbox il y a un petit temps (je dirais un diziaime de seconde) avant qu'il s'active, j'ai l'impression que l'image s'initialise à chaque fois !
je te met le fichier.
Francky
Bonjour
La macro a de la cuisine à faire
Je ne m'en rends pas compte
Et le fait d'écrire dans une page à toujours été long
Pas mieux
ok Banzai, en fait j'ai fait plusieurs test et finalement ce n'est pas si long que ça... désolé.
bon, je reviens juste sur un dernier point qu'on a déjà abordé. C'est le "récap activité". Volontairement j'ai créé 4 planning avec trois activités communes. Comme tu le vois, dans la feuille récap, les nom se mettent pas les uns en dessous des autres. Merci de me dire s'il n'y a pas de solution.
Encore merci,
Francky
Bonjour
Francky69100 a écrit :Merci de me dire s'il n'y a pas de solution.
Il y a toujours une solution (sinon il n'y a pas de problème)
Il faut employer la même solution que pour l'autre page
A tester
Génial, je garde les deux car le "récap activité" d'avant peut permettre d'avoir le nombre de participant...
je vais donc valider, mais, et oui il y a même deux "mais" :
- tout d'abord concernant la lenteur, je voulais te dire que j'avais trouvé une raison majeur. Je suis allé voir la taille des photos dans le répertoire et oups ! certaine fond plus de 3 Mo, donc je te laisse imaginer la taille du fichier au bout d'une dizaine de planning. Du coup je réduit leur taille et je pense ainsi réduire le temps.
- le second "mais", c'est juste une histoire de mise en page. En fait, lorsque la couleur de l'activité est foncée le texte ne se voit pas très bien. Je me demandais comment faire pour que la police soit blanche si la couleur est foncée ??
Encore un grand merci pour ta participation et, oui, je sais, va falloir que je m'y mette à ce VBA qui apporte tant dans les outils Excel !
Francky
Bonjour
Francky69100 a écrit :Dis moi si tu pense à quelque chose.
Ne mets pas d'activité en foncé
A tester
malgré toutes mes demandes, je vois qu'on a encore de l'humour !
encore un grand merci à toi,
Francky