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 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...
    1. 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. 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,

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

        Pour l'erreur, c'est dans le code de UserForm2 que ca cloche