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

Bonjour

A tester

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 :

erreurvba

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

Francky69100 a écrit :

J'ai donc modifié le code et, après de nombreuse erreur, je crois y être arrivé.

il faut croire que non

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 ??
Dis moi si tu pense à quelque chose.

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

Rechercher des sujets similaires à "temps partiel planning activite"