IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bug sur workbook open


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut Bug sur workbook open
    Bonjour le forum,
    J'ai encore un souci depuis hier, cette fois avec le mot de passe (1234). Soit çà bug et plante Excel sur la macro qui rentre le mot de passe, soit çà prend le 2eme mot de passe (4321) destiné à la sauvegarde, dont la macro est masquée
    La macro crée bien un clone du fichier et doit dézoomer un peu l'image en mosaique présentée et valider le mot de passe saisi. Si vous voyez pas le cadenas (c'est normal ), il est en C5 et intègre 2 images groupées en "groupe5", mais je ne vois pas la macro être affectée à ce groupe.

    Reparation gest pieces V multipostes Demo.xlsm

    Nom : 1.png
Affichages : 148
Taille : 5,8 Ko
    Nom : 2.png
Affichages : 146
Taille : 25,7 Ko
    Nom : 3.png
Affichages : 142
Taille : 5,9 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     Sub cadenasOF()
        Dim rg As Range, ws As Worksheet
        'image mosaique
        ' 200, 200, 70, 70 posit à gauche, en ht, etir à droite, etir en bas
         'Shapes.AddPicture "E:\Users\FRANCK\Documents\FRANCK\EXCEL\JOB\réparations\photos\" & "mosaique repar GP.jpg", True, True, 200, 30, 900, 370
        'Le cadenas est ouvert
        'si zone non protégée on la protège
        If wsAcceuil.ProtectContents = False Then
                Application.Visible = False
                Set rg = wsAcceuil.Range("A1:S8")
                     ActiveWindow.Zoom = 100
            wsAcceuil.Shapes("Img_protect").Visible = msoTrue 'cadenas ferme visible
            wsAcceuil.Shapes("Img_unprotect").Visible = msoFalse
            With ActiveWindow
                .DisplayHorizontalScrollBar = False 'ascens H invisible
                .DisplayVerticalScrollBar = False 'ascens V invisible
                .DisplayWorkbookTabs = False 'onglets invisibles
                .DisplayHeadings = False 'entetes invisibles
            End With
           ' rg.Select
            wsAcceuil.ScrollArea = rg.Address
            ActiveWindow.Zoom = True 'zoom sur la sélection
            wsAcceuil.Cells(1, 1).Select
            wsAcceuil.Select
            wsAcceuil.Protect wsAcceuil.Range("password") 'on prend le mdp dans la cell. du champ nommé.
        Else
        'Le cadenas est fermé
        'zone protégée on la déprotège
            On Error Resume Next
            wsAcceuil.Unprotect
            If wsAcceuil.ProtectContents = False Then 'si zone protégée
                Application.Visible = True
                    Set rg = wsAcceuil.Range("A1:S8")
                    ActiveWindow.Zoom = 100
                wsAcceuil.Shapes("Img_protect").Visible = msoFalse
                wsAcceuil.Shapes("Img_unprotect").Visible = msoTrue 'cadenas ouvert visible
                With ActiveWindow
                    .DisplayHorizontalScrollBar = True 'ascens H visible
                    .DisplayVerticalScrollBar = True 'ascens V visible
                    .DisplayWorkbookTabs = True 'onglets visibles
                    .DisplayHeadings = True 'entetes visibles
                End With
              '  rg.Select
                wsAcceuil.ScrollArea = "" 'on vide la zone
            Else
                Exit Sub
            End If
        End If
        Set rg = Nothing 'on vide la zone
        'Application.FormulaBarHeight = 1 'barre de formule limitée à une ligne
        'X1cShortcutOnDesk "Icon", "Mono-poste", "mono-ico" 'raccourci sur le bureau
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR[""Ribbon"",False)" 'cache le menu d'excel 'ruban menu excel
        'Application.WindowState = xlMaximized 'max de l'appli avec l'écran
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Commence par virer tous ces Application.ScreenUpdating et autres parasites, histoire de voir ce qui se passe.
    L'optimisation, s'il y a lieu, c'est à la fin du projet, quand on a obtenu les comportements désirés.

    On Error Resume Next
    Ensuite, écrit de gestionnaires d'erreur, au lien d'ignorer ces dernières

    Voila ce que j'ai obtenu en interceptant l'erreur levée par la fonction cadenasOF():
    Désolé... Nous avons trouvé une erreur dans cette formule. Essayez de cliquer sur Insérer une fonction sous l'onglet Formules. Vous pouvez également cliquer sur Aide pour obtenir plus d'informations sur les problèmes les plus fréquemment rencontrés dans les formules.

    Êtes-vous en train de taper une formule*?
    Lorsque le premier caractère est un signe égal (=) ou moins (-), Excel considère qu'il s'agit d'une formule*:

    • vous tapez*: =1+1, la cellule affiche*: 2

    Pour résoudre ce problème, tapez une apostrophe ( ' ) en première place*:

    • vous tapez*: '=1+1, la cellule affiche*: =1+1
    Et c'est la ligne suivante qui en est la cause:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR[""Ribbon"",False)" 'cache le menu d'excel 'ruban menu excel
    Je ne sais pas exactement ce que fait cette fonction, mais quand je voit la description sur Microsoft Learn: https://learn.microsoft.com/fr-fr/of...uteexcel4macro
    Je me dit qu'il faut la fuir, le plus vite possible.
    C'est probablement une fonction maintenue pour des raisons de compatibilité, qui n'a aucun droit de citer dans du code moderne.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Note supplémentaire:
    Quand tu modifies les contextes applicatifs (affichage / warnings ect ...),
    avec un gestionnaire d'erreur, s'il fait coin-coin, pense à revenir en arrière (il sert aussi à ça).

    Parce que la, tu as non seulement une application qui plante, mais qui en plus reste ouverte en arrière plan (avec toutes les mauvaises surprises qui vont avec).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Erreur 1004 sur "workbooks.open"
    Par pascalm73 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/12/2016, 09h17
  2. [XL-2003] Erreur 1004 - sur Workbook OPEN
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2013, 09h11
  3. Workbooks.Open Filename fonctionne bien sur excel 2000 ?
    Par emoiem dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/03/2008, 15h59
  4. [VBA-E] feuilles visibles = false sur le workbook open
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2007, 16h05
  5. [VBA-E] Workbooks.open sur .csv regroupe tout sur 1 colonne
    Par Yeti75_fr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/03/2007, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo