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 :

Méthode range de l'objet global a échoué


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 46
    Points
    46
    Par défaut Méthode range de l'objet global a échoué
    bonjour, je suis confronté à un certain problème, voire même à un problème certain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            With Range("A3:D3,A11:D11,A41:D41").Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 5287936
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
    voici le code qui pose problème. De façon totalement aléatoire, j'ai l'erreur "La méthode range de l'objet global a échoué", en surlignant la 1e ligne du code ci-dessus. Cela ne le fait pas régulièrement, mais quelque fois. Et à partir du moment où ça le fait, la seule solution, c'est de fermer Excel, de le relancer, et là tout remarche...

    Plus surprenant, c'est que quand ça merde, si je remplace les virgules dans la 1e ligne par des points-virgules, et bien ça remarche... ???!!

    Et pour info, si je remplace "A3 : D3, A11 : D11 , A41 : D41" par "A3 : D3", et bien cela marche.

    Bref, ce que je ne comprends pas, c'est le caractère hasardeux et aléatoire de ce message d'erreur. Qu'est-ce qui fait qu'au début je ne l'ai pas, mais qu'il fait son apparition par la suite ?



    Merci !!

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    A part indiquer la feuille, je ne vois pas d'erreur (je n'en ai pas)

    Ceci suffit je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("A3:D3,A11:D11,A41:D41").Interior.Color = 5287936

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse. En effet, je ne spécifie pas la feuille... mais cela peut être une source d'erreur tu penses, sachant qu'au tout début de mon code, j'ai mis un sheets("Feuil1").activate ?

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    C'est pour éviter des mauvaises surprises qu'il faut adresser les plages complétement.
    Les Activate, Select et Selection, ne font qu’alourdir le code et le rendent instable.


    Essaies ce petit code que tu mets dans le module de Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
     
    sheets("Feuil2").activate
    Range("D12")="toto"
     
    End sub
    Regarde où est écrit "toto"

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    j'ai essayé et ça le met bel et bien en celulle (12,4)...

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    de Feuil1 ou de Feuil2?

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    je n'ai pas de Feuil2 dans mon classeur, donc ça m'a mis une erreur
    en remplaçant Feuil2 par Feuil1, ça me le met en Feuil1

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu pouvais créer un classeur test. quel gâchis, tu as enlevé le sens à l'exemple.

    Je te donne le résultat du code qui est mis dans le module de Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
     
    Sheets("Feuil2").Activate
    Range("D12") = "toto"
    End Sub
    En principe tu aactive Feuil2 et tu écris toto dans D12 de Feuil2! (c'était ta logique avec Activate)
    Mains non! toto s'écrit dans D12 de Feuil1 même si Feuil1 n'est plus la feuille active.

    Pour pallier à ceci, n'utilise plus les Activate est quand tu veux appeler une cellule, mets son adresse complète

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
     
    Sheets("Feuil2").Range("D12") = "toto"
    End Sub
    toto s'écrit en D12 de Feuil2 quelque soit la feuille active

Discussions similaires

  1. la méthode range de l'objet global a échoué
    Par stéphane35200 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2014, 10h27
  2. la méthode range de l'objet global a échoué
    Par Adjabi dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/10/2013, 16h26
  3. Erreur "La méthode Range de l'objet global a échoué"
    Par Antony1812 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2013, 17h21
  4. Erreur "La méthode Range de l'objet global a échoué"
    Par Antony1812 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/03/2013, 16h57
  5. La méthode Range de l'objet global a échoué
    Par cline01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2010, 21h58

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