Erreur d'éxecution 75 objet spécifié introuvable

Résolu
Bonjours les experts,
Grace à l’aide de certains d’entre vous que je remercie encore, j’ai pu réaliser un outil pour gérer la caisse de mon association.
Globalement il fonctionne bien, mais de temps en temps apparait l’erreur d’exécution 75 « objet spécifié introuvable »
La macro s’arrête sur la ligne « userform 2 schow modal »
Voir macro ci-dessous.
Si quelqu’un pouvait m’aider à remédier à ce problème je lui en serai gré.
Merci par avance.

Sub OuvrirCaisse()
    Sheets("caisse").Unprotect
    Sheets("caisse").Visible = True
    Sheets("caisse").Select
     Cells.Select
    Range("o1").Activate
    Selection.EntireColumn.Hidden = False

UserForm2.Show modal
    
Columns("A:N").Select
Selection.EntireColumn.Hidden = True
 Columns("Aa:aa").Select
  Selection.EntireColumn.Hidden = True
  Columns("Ac:ac").Select
    Selection.EntireColumn.Hidden = True
    Columns("AF:ah").Select
    Selection.EntireColumn.Hidden = True
    Columns("Ai:ai").Select
    Selection.EntireColumn.Hidden = True
     Range("J1").Select
    Selection.Copy
    Range("J2:J40").Select
    ActiveWindow.SmallScroll Down:=-18
    Range("J2:J40,L2:L40").Select
    Range("L2").Activate
    ActiveWindow.SmallScroll Down:=-21
    Range("J2:J40,L2:L40,N2:N40").Select
    Range("N2").Activate
    ActiveSheet.Paste
    Range("O1").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

5 réponses

  1. Bonjour,

    UserForm2.Show modal
    Qu'entendez vous par ce modal ???

    Pour l'erreur, c'est dans le code de UserForm2 que ca cloche
    1. J'ai oublié de rajouter quelques lignes au code modifié ci-dessus.

      Sub OuvrirCaisse()
      Dim C As Worksheet
      Set C = Sheets("caisse")
      C.Unprotect
      C.Visible = True
      UserForm2.Show modal
      C.Select
      C.Cells.EntireColumn.Hidden = False
      C.Columns("A:N").Hidden = True
      C.Columns("AA:AA").Hidden = True
      C.Columns("AC:AC").Hidden = True
      C.Columns("AF:AH").Hidden = True
      C.Columns("AI:AI").Hidden = True
      Range("J1").Select
      Selection.Copy
      Range("J2:J40").Select
      ActiveWindow.SmallScroll Down:=-18
      Range("J2:J40,L2:L40").Select
      Range("L2").Activate
      ActiveWindow.SmallScroll Down:=-21
      Range("J2:J40,L2:L40,N2:N40").Select
      Range("N2").Activate
      ActiveSheet.Paste
      Range("O1").Select

      C.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
      End Sub

      Merci de me donner ton avis.
      1. Bonjour VDB, F,

        J'avais déjà inclus ces lignes mais en supprimant la partie inutile ça donnait :
        C.Range("J1").Copy C.Range("N2")

        Et je préfère ouvrir l'UserForm à la fin, une fois que la mise en forme est terminée.
        Sinon, je n'utilise pas modal qui est la valeur par défaut...

        Comme F894009, je pense que si tu as une erreur elle se trouve dans le code d'initialisation de ton UserForm. C'est ce code que tu dois faire tourner pas à pas pour voir où se situe l'erreur...
      2. @ThauThemeBonjor ThauTheme,

        je n'utilise pas modal

        Surtout que c'est
        VBModal 
        ou
        VBModeless

        UserForm2.Show modal
        donne la meme chose que
        UserForm2.Show VBModeless

        de meme que ceci:
        UserForm1.Show azerty
    2. Bonjour Thau Theme et merci pour ta réponse.

      Ta macro s'arrête à la ligne "userform2 show"
      Je me suis permis d'y apporter une petite modif. Pour le moment ça fonctionne mieux qu'auparavant, vu ta simplification.

      Ci dessous pour avis ton code modifié.

      Sub OuvrirCaisse()
      Dim C As Worksheet
      Set C = Sheets("caisse")
      C.Unprotect
      C.Visible = True
      UserForm2.Show modal
      C.Select
      C.Cells.EntireColumn.Hidden = False
      C.Columns("A:N").Hidden = True
      C.Columns("AA:AA").Hidden = True
      C.Columns("AC:AC").Hidden = True
      C.Columns("AF:AH").Hidden = True
      C.Columns("AI:AI").Hidden = True
      C.Range("J1").Copy C.Range("N2")
      C.Range("O1").Select
      C.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
      End Sub
      1. Bonjour VDB, bonjour le forum,

        Peut-être comme ça :

        Sub OuvrirCaisse()
        Dim C As Worksheet
        
        Set C = Sheets("caisse")
        C.Unprotect
        C.Visible = True
        C.Select
        C.Cells.EntireColumn.Hidden = False
        C.Columns("A:N").Hidden = True
        C.Columns("AA:AA").Hidden = True
        C.Columns("AC:AC").Hidden = True
        C.Columns("AF:AH").Hidden = True
        C.Columns("AI:AI").Hidden = True
        C.Range("J1").Copy C.Range("N2")
        C.Range("O1").Select
        C.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        UserForm2.Show
        End Sub


        En règle générale évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code...