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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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...
si non Je vais prendre un moment de repos pour me concentrer davantage sur ce sujet. À cette heure, je pense qu'il serait difficile de réfléchir efficacement, d'autant plus que je dois me préparer mentalement pour la journée de travail qui m'attend demain.
NB: Je tiens à exprimer ma gratitude envers chacun d'entre vous pour cette précieuse discussion.
 
Je suis tout à fait d'accord si cela est réalisable. Comme je l'ai mentionné précédemment, si nous devons revoir ce code, je suis prêt à le faire. Je vous remercie pour votre aide et vos suggestions par avance
Ben moi je n'aide pas vraiment ici, je cherche surtout à comprendre comment ça fonctionne les UserForm... et du coup je ne suis pas près de faire une suggestion. 😕
 
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 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

Mais l'utilisation d'un seul UserForm avec les images et une tempo doit être mieux.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
247
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
10
Affichages
281
  • Question Question
Réponses
7
Affichages
324
Réponses
4
Affichages
177
Réponses
4
Affichages
461
Retour