XL 2013 Fermeture d'excel lorsque l'on clique sur un label

Tony 87

XLDnaute Nouveau
Bonsoir,
J'ai construit, avec un collègue, un fichier sous excel 2013 professionnel pour mon entreprise. C'est un ficher de planning, qui permet d'affecter les agents à des tâches issues d'un calendrier prévisionnel à partir d'un formulaire.
Nous avons créé un autre formulaire de saisie qui permet de planifier d'autres activités et/ou de corriger les données précédemment saisies .
Pour y accéder, on clique sur un label à l'intersection d'un agent et d'une date, ici symbolisé en rouge :
1608316736473.png

C'est un label "transparent" positionné par dessus un bloc de neuf labels rappelant les données précédemment saisies.
Mon problème : lorsque l'on clique sur ce label transparent, immédiatement excel se ferme (Excel a cessé de fonctionner…). Sauf si le développeur est ouvert et le mot de passe VBA renseigné, et alors tout se passe bien.
Est-ce que quelqu'un a déjà rencontré ce problème?
A noter que je n'ai pas la main sur les mises à jour d'excel 2013 ou de Windows 10 puisque ce sont des versions entreprise.

D'avance, merci pour votre aide.
 

Tony 87

XLDnaute Nouveau
Avec mes excuses, voici le code concerné. Je ne peux pas mettre de fichier, il est trop volumineux (+ de 2,5Mo zippé)

D'abord le code d'un label, ici le lundi de la semaine. Il y a 56 labels (1 label par jour de la semaine x par 7 jours de la semaine x 9 agents possibles) :

Private Sub Im10_Click()
If Me.Im10.BackStyle = 0 Then
If Me.Controls("Lab" & 114).BackColor = RGB(255, 255, 50) Then
If Me.Controls("Lab" & 114).Caption = "Férié" Then
MsgBox "Attention, c'est un jour Férié, seule la vacation 3 est disponible!", vbExclamation + vbOKOnly
Call OuvPlanifAgent(1, 0, False)
End If
Else
Call OuvPlanifAgent(1, 0, True)
End If
End If
End Sub

Puis OuvPlanifAgent :
Private Sub OuvPlanifAgent(numobs As Byte, numj As Byte, total As Boolean)

Dim i As Byte
Dim Agent As String

Agent = Mid(Me.Controls("Labobs" & numobs).Caption, 3)
PlanifAgent.TboxAgent.Value = Agent
PlanifAgent.LabAAnt.Caption = Me.LabSAnt.Caption
PlanifAgent.LabAAnt.BackColor = Me.LabSAnt.BackColor
PlanifAgent.TboxDate.Value = Format(DateAdd("d", numj, Right(Me.CBoxSemaine.Value, 10)), "dddd dd/mm/yyyy")
'chargement des heures paramétrées pour cet agent
For i = 5 To 19
If ThisWorkbook.Sheets("Paramétrage").Cells(i, 3).Value = Agent Then
PlanifAgent.Tboxhburdm.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 13).Value, "hh:mm")
PlanifAgent.Tboxhburfm.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 14).Value, "hh:mm")
PlanifAgent.Tboxhburdam.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 15).Value, "hh:mm")
PlanifAgent.Tboxhburfam.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 16).Value, "hh:mm")
Exit For
End If
Next i
If total = False Then
PlanifAgent.FrVac1.Visible = False
PlanifAgent.FrVac2.Visible = False
PlanifAgent.Frbur.Visible = False
End If
PlanifAgent.Labligne.Caption = Tabligne(numobs, numj + 1)
'chargement des noms des autres agents dans les checkbox
Call PlanifAgent.AffichageAgents
PlanifAgent.Show

End Sub

Merci pour votre analyse.
 

Staple1600

XLDnaute Barbatruc
Re

Trop volumineux?
Pas un souci.
Exportes ton Userform
(Dans VBE=> Fichier->Exporter un fichier
Puis importes le *.frm obtenu dans un classeur vierge
(idem dans VBE =>Fichier->Importer un fichier
Joins alors ce classeur tout propre qui n'aura de confidentiel ;)

NB: Si difficultés, voir tutos sur le net (export/import Userform)
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

autre possibilité plus simple :
faire un cliqué-glissé du module Userform vers le projet d'un classeur neuf.
Il s'y copiera.
Ajouter un bouton pour l'afficher et préciser les manip (+ saisies ?) ç faire pour avoir l'erreur
eric
 

Staple1600

XLDnaute Barbatruc
Re

Bonjour eriiiic
Mais non, malheureux!
C'est volontairement que j'ai ignoré le plus simple ;)
Pour que le déconfinement se passe en douceur, faut occuper le chaland.
Donner du temps au temps. ;)

Me suis même chargé la mule ;)
VB:
Private Sub Im10_Click()
If Me.Im10.BackStyle = 0 Then
If Me.Controls("Lab" & 114).BackColor = RGB(255, 255, 50) Then
If Me.Controls("Lab" & 114).Caption = "Férié" Then
MsgBox "Attention, c'est un jour Férié, seule la vacation 3 est disponible!", vbExclamation + vbOKOnly
Call OuvPlanifAgent(1, 0, False)
End If
Else
Call OuvPlanifAgent(1, 0, True)
End If
End If
End Sub

Puis OuvPlanifAgent :
Private Sub OuvPlanifAgent(numobs As Byte, numj As Byte, total As Boolean)

Dim i As Byte
Dim Agent As String

Agent = Mid(Me.Controls("Labobs" & numobs).Caption, 3)
PlanifAgent.TboxAgent.Value = Agent
PlanifAgent.LabAAnt.Caption = Me.LabSAnt.Caption
PlanifAgent.LabAAnt.BackColor = Me.LabSAnt.BackColor
PlanifAgent.TboxDate.Value = Format(DateAdd("d", numj, Right(Me.CBoxSemaine.Value, 10)), "dddd dd/mm/yyyy")
'chargement des heures paramétrées pour cet agent
For i = 5 To 19
If ThisWorkbook.Sheets("Paramétrage").Cells(i, 3).Value = Agent Then
PlanifAgent.Tboxhburdm.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 13).Value, "hh:mm")
PlanifAgent.Tboxhburfm.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 14).Value, "hh:mm")
PlanifAgent.Tboxhburdam.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 15).Value, "hh:mm")
PlanifAgent.Tboxhburfam.Value = Format(ThisWorkbook.Sheets("Paramétrage").Cells(i, 16).Value, "hh:mm")
Exit For
End If
Next i
If total = False Then
PlanifAgent.FrVac1.Visible = False
PlanifAgent.FrVac2.Visible = False
PlanifAgent.Frbur.Visible = False
End If
PlanifAgent.Labligne.Caption = Tabligne(numobs, numj + 1)
'chargement des noms des autres agents dans les checkbox
Call PlanifAgent.AffichageAgents
PlanifAgent.Show

End Sub
 

Tony 87

XLDnaute Nouveau
Tant pis pour mon anonymat…
Voici le fichier complété de PlanifAgent et PlanifEtude.
Une chose que j'ai oublié de vous dire. Le fichier est placé sur Office 365/One drive. Je suis "propriétaire" du fichier et le partage avec des utilisateurs soit en écriture, soit en lecture. Les utilisateurs du fichier l'ouvrent bien dans Excel et non sur SharePoint. Pas sûr que çà ait un lien avec le bug.
Ce bug est instable et c'est très bizarre. Aujourd'hui, le fichier fonctionne cet après-midi, alors qu'il ne fonctionnait pas ce matin.
 

Pièces jointes

  • Classeur1.xlsm
    149.3 KB · Affichages: 5

eriiic

XLDnaute Barbatruc
C'est pas une récréation de recréer des feuille Staple ! :)
Pour ma part je bloque pour des composants non actifs sur mon PC, je ne pourrais aller bien loin.

Par expérience, tous les plantages ayant lieu dans un UserForm_Initialize() donnent lieu à cette fermeture brusque sans message. Je commencerai les investigations par là.
Je déplacerai le maximum de lignes de l'Initialize vers le Activate, quitte à vider ce qui doit l'être.
Plus de chance que le composant utilisé soit complètement chargé au moment où tu t'en sers.

En plus, comme tu parles de réseau, je demanderai à des utilisateurs coopératifs de télécharger le fichier sur le HD avant de l'ouvrir pour voir s'ils ont toujours le problème.
eric
 

Tony 87

XLDnaute Nouveau
Le problème a été résolu : excel n'accepte pas un label "transparent" positionné sur un groupe de labels.
Nous l'avons enlevé et créé un lien entre chaque label du groupe et le formulaire à ouvrir... et plus de bug.
Merci quand même pour votre expertise.
 

Discussions similaires

Réponses
4
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote