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 :

Appel macro erreur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut Appel macro erreur
    Bonjour à toutes et à tous,

    Il m'arrive quelque chose d'assez mystérieux, je vous le soumets !
    Après ouverture de mon classeur, j'exécute le code suivant pour "nettoyer" certaines cellules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub ReinitialiserTout()
    ActiveSheet.Unprotect ("test")
     
    With Range("A6:G21")
        .UnMerge
        .ClearContents
        .Interior.ThemeColor = xlThemeColorDark1
    End With
     
    ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    Une erreur 400 apparaît, au niveau de ".UnMerge" (ou ".ClearContents" si je mets Unmerge en commentaire).
    Maintenant, si je lance ensuite la macro suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub genererLignesDonnees()
    Worksheets(3).Protect Password:="test", UserInterfaceOnly:=True
     
    Call ReinitialiserTout
     
    [...]
     
    End Sub
    Je n'ai plus d'erreur associée à l'exécution de ReinitialiserTout!
    Enfin, si je continue à utiliser mon classeur et que je reviens "plus tard" lancer ReinitialiserTout, ça fonctionne impec'...

    Pourquoi donc cette erreur après ouverture du classeur, au lancement de la macro ?

    Si vous avez un avis, je suis preneur
    Merci d'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Pourquoi donc cette erreur après ouverture du classeur?
    Dans quelle évènement est appelé ReinitialiserTout() ?
    Dans Workbook_Open() du classeur ou bien sur un Worksheet_Activate d'une feuille ?

    Peut être que l'erreur est liée au fait que ligne 5 "With Range("A6:G21")", le Range n'est associé à aucune feuille.
    Est-ce qu'avec ce code ci-dessous, l'erreur est la même ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ReinitialiserTout()
        ActiveSheet.Unprotect ("test")
     
        With ActiveSheet.Range("A6:G21")
           .UnMerge
           .ClearContents
           .Interior.ThemeColor = xlThemeColorDark1
        End With
     
        ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    Est-ce que c'est volontaire de toujours utiliser la 3ème feuille dans genererLignesDonnees(),
    alors que ReinitialiserTout() travaille sur la feuille courante ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Merci pour ta réponse !
    Cette modification ne change pas l'erreur, mais rend le code plus cohérent.
    ReinitialiserTout() est appelé sur une feuille (à savoir la 3ème, tout comme genererLignesDonnees()) , après clic sur bouton.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    De manière assez mystérieuse, la commande suivante permet de se passer du message d'erreur:
    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub ReinitialiserTout()
    ActiveSheet.Unprotect ("test")
     [...]
     ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub ReinitialiserTout()
    Worksheets(3).Protect Password:="test", UserInterfaceOnly:=True
     [...]
    End Sub
    Si quelqu'un peut m'expliquer en quoi cela pouvait être source d'erreur..
    Merci

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

Discussions similaires

  1. [AC-2010] Appel macro sur MAJ : erreur 2485
    Par scrouet dans le forum IHM
    Réponses: 1
    Dernier message: 19/03/2013, 11h29
  2. Réponses: 2
    Dernier message: 31/03/2008, 12h27
  3. [Macro]Erreur de macro CopierVers
    Par gentoo dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/03/2007, 20h14
  4. [VB-E] PB macro erreur d'execution
    Par lolo_bob2 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/07/2006, 14h34
  5. [VBA-E] Appel macro Access depuis Excel en mode silencieux
    Par lordkoko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2006, 10h12

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