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 :

Problème avec Set VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut Problème avec Set VBA
    Bonjour,

    j'ai un problème qui persiste sur ce bout de code :

    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
    Sub ouvrir_fichier()
     
        Dim TCD As Range
        Dim Plage As Range
        Dim wb, wb1, wb2 As Workbook
        Dim Fichier As String
        Dim plage1, plage2 As Range
     
        With Workbooks("tableau de bord.xlsm").Worksheets("Feuil1")
     
     
            Set wb = Workbooks.Open("C:\Users\\Desktop\pivot des zeros.xlsm")
     
            Set plage1 = Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").Range(.Cells(8, 8), .Cells(8, 11))
            Set plage2 = Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").Range(.Cells(10, 8), .Cells(10, 11))
    l'erreur est au niveau des "Set plage1" et "Set plage2", en effet le set va chercher une plage de données issue d'un autre fichier Excel mais pourquoi ça ne marche pas svp?

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Dans la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage1 = Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").Range(.Cells(8, 8), .Cells(8, 11))
    ".Cells(8, 8)" et ".Cells(8, 8)" se réfèrent au classeur "Workbooks("tableau de bord.xlsm")" puisqu'ils sont précédés par un ".". Or tu le adjoins au classeur ""pivot des zeros.xlsm"". Tu dois donc enlever les "." pour être cohérent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage1 = Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").Range(Cells(8, 8), Cells(8, 11))
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,
    Citation Envoyé par Daniel.C Voir le message
    ... Tu dois donc enlever les "." pour être cohérent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage1 = Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").Range(Cells(8, 8), Cells(8, 11))


    il n'est pas cohérent d'utiliser Cells sans le "." !! car alors le fonctionnement du code dépend de la feuille active ... mieux vaut laisser le "." mais modifier le with afin que les objets range et cells porte sur la même feuille :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1")
        Set plage1 =  .Range(.Cells(8, 8), .Cells(8, 11))
    end with
    ainsi le code fonctionne quelque soit la feuille active

    il serait plus simple d'utiliser les adresses style A1 pour définir ta plage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set plage1 =Workbooks("pivot des zeros.xlsm").Worksheets("Feuil1").range("H8:K8")

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    au passage lorsque tu écris Dim plage1, plage2 As Range, seul plage2 est typé Range. plage1 est Variant.

    eric

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

Discussions similaires

  1. problème avec set
    Par ayarikhaoulakoukou dans le forum VBScript
    Réponses: 10
    Dernier message: 01/06/2011, 18h38
  2. Problème avec Split VBA ACCESS
    Par mmmxtina dans le forum VBA Access
    Réponses: 7
    Dernier message: 05/06/2009, 08h31
  3. Problème avec Set compliance level
    Par bassem-ca dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 19/02/2009, 21h17
  4. [E-03] Problème avec Set de worksheet
    Par drakkar_agfa dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/12/2008, 21h44
  5. [E-00] problème avec set
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2008, 14h07

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