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 :

VBA me met une erreur quand j’utilise Worksheets ou Feuil


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut VBA me met une erreur quand j’utilise Worksheets ou Feuil
    Bonjour,

    Microsoft Office standard 2010 pour Excel
    Et Microsoft Visual basic pour Applications 7.0 VBA Retail 7.0.1627
    Mon Excle est un 2010 et Je travaille sur un classeur ecrit avec 2007 que je rends compatible

    Quelquefois je deviens chèvre avec la façon d’appeler les feuilles
    Dans ma fenêtre Project la feuille en question apparait sous le nom de <<Feuil2 (Dernière Extract)>>
    Dans le cas ci-dessous je remplis la feuille en question avec un tableau()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Dernière Extract").Range(Cells(2, 1), Cells(UBound(tab_traiter, 1), UBound(tab_traiter, 2))) = tab_traiter
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range(Cells(2, 1), Cells(UBound(tab_traiter, 1) + 1, UBound(tab_traiter, 2))) = tab_traiter
    Quelque fois VBA me mets une erreur quand j’utilise Worksheets ou Feuil2

    Quel différence entre ces deux façon d’écrire ?
    Comment faire un choix définitif entre ces deux façon d’écrire ?
    Je ferme mon Excel, je reprends une ancienne version du classeur et c’a repart, enfin n’importe quoi !

    Merci de votre expérience sur le sujet
    Henri

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Il faut que tu t'assures que chaque instruction fait bien référence à la feuille requise.
    Dans ton code, ce n'est pas le cas pour Cells(2, 1) et Cells(UBound(tab_traiter, 1), UBound(tab_traiter, 2))
    J'opterais pour une de ces 2 solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("Dernière Extract")
    .Range(.Cells(2, 1), .Cells(UBound(tab_traiter, 1), UBound(tab_traiter, 2))) = tab_traiter
    End with
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Feuil2.Range(Feuil2.Cells(2, 1), Feuil2.Cells(UBound(tab_traiter, 1) + 1, UBound(tab_traiter, 2))) = tab_traiter

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Bonjour

    Au prochain plantage j’appliquerai l’une des deux solutions
    Ceci a-t-il à voir avec le fait de travailler avec un Excel 2010 sur un classeur 2007 ?
    Est-ce une erreur de débutant ?
    Ou une erreur de langue entre feuil2 et Worksheet ?

    Merci qFZT82 pour votre solution,
    Henri

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Au prochain plantage j’appliquerai l’une des deux solutions
    Je te conseillerais plutôt de l'appliquer dès maintenant pour éviter de futurs plantages

    Ceci a-t-il à voir avec le fait de travailler avec un Excel 2010 sur un classeur 2007 ?
    Non, c'est simplement dû au fait que si tu ne spécifies pas la feuille à laquelle se rattache ton instruction, tu risques une incohérence.
    Exemple :
    Si la feuille active est Feuil1 et que j'écris le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Worksheets("Feuil2").Range(Cells(1, 1), Cells(2, 2)).Address
    Excel aura du mal à indiquer l'adresse de la plage A1:B2 de Feuil1 qui se situe dans Feuil2.

    Cordialement.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    C’est pour cette raison que c’a ne plante pas systématiquement, c’a dépend de la feuille active,
    Sinon c’est déjà corrigé

    Merci des conseils.
    Henri

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2008, 14h57
  2. Comment éviter d'afficher une erreur quand table vide
    Par lelapinrusse dans le forum Langage
    Réponses: 6
    Dernier message: 16/05/2008, 19h00
  3. [EasyPHP] une erreur quand j'ouvre mon dossier : il m'est demandé de modifier register_globals
    Par sasaas dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 10/05/2007, 16h34
  4. Réponses: 7
    Dernier message: 25/08/2006, 14h15
  5. [VBA-E]message d'erreur quand déplacement d'un tableau
    Par el.meyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2006, 16h15

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