XL 2013 (RESOLU) Erreur d'exécution "50289"

chaelie2015

XLDnaute Accro
Forum Bonsoir
Lorsque je protège le code VBA, du mon classeur je rencontre systématiquement une erreur d'exécution "50289" indiquant qu'il est impossible d'effectuer certaines opérations tant que le projet VBA est protégé.
Je suspecte que le module ci-dessous soit à l'origine de ce problème, car il fonctionne correctement lorsque le VBA n'est pas protégé, mais affiche cette erreur lorsqu'il est protégé.
Voici le module
VB:
Sub AffichageUserForm()
   Dim USF As Object
  Dim Target As Range
  'Set Target = ActiveSheet.Range("AM6") ' Vous pouvez spécifier une autre feuille ou une autre cellule si nécessaire
  Set Target = ThisWorkbook.Sheets("CRT").Range("AM6")
 If Intersect(Target, Range("AM6")) Is Nothing Then Exit Sub
    With Sheets("Jours fériés")
        For I = 2 To 46
            If .Range("I" & I) = Target Then
                NomUsf = .Range("J" & I)
                For Each USF In ThisWorkbook.VBProject.VBComponents
                    If USF.Name = NomUsf Then
                        VBA.UserForms.Add(NomUsf).Show
                    End If
                Next USF
            End If
        Next I
   End With
End Sub
Pourriez-vous m'apporter votre assistance dans la résolution de ce problème ? Seriez-vous en mesure de m'éclairer sur l'origine de cette erreur ?
A+
 
Dernière édition:
Solution
Je cherche toujours à comprendre le truc, car je ne connais pas du tout ces manipulations de UserForm. :(
Mes questions sont donc, non pas des conseils, mais bien de vraies questions dont je n'ai pas les réponses.

Pourquoi scanner tous les UserForm jusqu'à trouver celui qui porte le nom désiré, puis afficher le UserForm qui porte ce nom ?
Vu qu'on a déjà le nom, autant l'afficher tout de suite. Non ?

Ca donnerait ça :
VB:
Sub AffichageUserForm()
'
'Dim USF As Object
Dim Target As Range

'    Set Target = ActiveSheet.Range("AM6") ' Vous pouvez spécifier une autre feuille ou une autre cellule si nécessaire
    Set Target = ThisWorkbook.Sheets("CRT").Range("AM6")

'    If Intersect(Target, Range("AM6")) Is Nothing Then Exit Sub
    With...

chaelie2015

XLDnaute Accro
Bonsoir
Pourriez-vous fournir davantage d'explications concernant cette observation, s'il vous plaît ?
NB: À titre informatif, il semble que vous ayez une expertise dans ce domaine. Si je remplace ce code par un autre et que je protège le VBA, il devrait fonctionner. Je tiens à noter que j'ai déjà tenté une approche différente en le désactivant, et cela a fonctionné sans afficher de messages d'erreur.
 
Dernière édition:

chaelie2015

XLDnaute Accro
Re
J'ai créé des images dédiées pour chaque jour férié de l'année, chacune étant intégrée dans un UserForm spécifique.
Le défi principal que je rencontre lors de l'exécution est d'afficher ces images via les UserForms, d'autant plus que plusieurs jours fériés peuvent survenir au cours d'un même mois.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je ne suis pas certain de bien comprendre, d'une part le code, et d'autre part le but dudit code.

VB:
NomUsf = .Range("J" & i)

For Each USF In ThisWorkbook.VBProject.VBComponents
    If USF.Name = NomUsf Then VBA.UserForms.Add(NomUsf).Show
Next USF

L'instruction VBA.UserForms.Add(NomUsf).Show crée-t-elle un nouveau UserForm ?

Si oui, ça ne me semble pas logique de scanner tous les UserForm existant et quand on en trouve un qui porte le nom désiré, alors on crée un nouveau UserForm avec ce nom ?!?...

Les UserForm ne sont-ils pas déjà tous créés ?
 

chaelie2015

XLDnaute Accro
Bonjour,

Je ne suis pas certain de bien comprendre, d'une part le code, et d'autre part le but dudit code.
Bonsoir
Ce code a pour objectif d'afficher dynamiquement un UserForm en fonction de la valeur d'une cellule spécifique de la feuille de calcul "CRT" donc ce code recherche un mois spécifique dans la feuille "Jours fériés" en fonction de la valeur de la cellule "AM6" de la feuille "CRT". Si un mois correspondant est trouvé, il extrait le nom de l'UserForm associé et l'affiche. Le code s'arrête s'il n'y a pas de correspondance ou si la cellule "Target" est différente de AM6.est ce que c'est clair ?
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78