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-E] Erreur methode select classe range


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut [VBA-E] Erreur methode select classe range
    Bonjour,

    Quelqu'un saurait-il pourquoi des fois la méthodes select de l'objet range pose des soucis?
    Je m'en suis servi plusieurs fois sans souci mais je dois avouer que cette fois-ci çà me dépasse.

    La méthode copy de la classe Range a échoué
    Voici le code incriminé:

    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
    Private Function updateQoSATMAccès()
    
    Dim nameFile As String
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlSheet1 As Excel.Worksheet
    Dim xlSheet2 As Excel.Worksheet
    Dim nbUsedRows As Long
    
    nameFile = loadXLS
    Set xlApp = New Excel.Application
    Set xlBook = xlApp.Workbooks.Open(nameFile)
    
    xlBook.Worksheets("Stats1082").Activate
    
    nbUsedRows = xlBook.Worksheets("Stats1082").UsedRange.Rows.Count
    xlBook.Worksheets("Stats1082").Range("A1:I" & nbUsedRows).AutoFilter Field:=7, Criteria1:="NORD ET EST"
    
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Name = "Temporaire"
    
    xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).Copy Destination:=xlBook.Worksheets("Temporaire").Range("A1")
    
     ...
    Et, c'est la portion en rouge qui a des soucis. Pour faire un autre test, à la place de la ligne en rouge j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).select
    Et là c'était la méthode delect de la classe range a échoué.

    Merci d'avance,

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 35
    Points : 39
    Points
    39
    Par défaut
    Essaie d'activer la sheet en question ...


    ... parfois, un redemmarage de l'ordinateur corrige qqes problèmes du genre ...


    En espérant que cela suffira

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Bonjour Solkien,

    La sheet est bien activée dans le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    nameFile = loadXLS
    Set xlApp = New Excel.Application
    Set xlBook = xlApp.Workbooks.Open(nameFile)
     
    xlBook.Worksheets("Stats1082").Activate
     
    nbUsedRows = xlBook.Worksheets("Stats1082").UsedRange.Rows.Count
    xlBook.Worksheets("Stats1082").Range("A1:I" & nbUsedRows).AutoFilter Field:=7, Criteria1:="NORD ET EST"
     
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Name = "Temporaire"
     
    xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).Copy Destination:=xlBook.Worksheets("Temporaire").Range("A1")
    Donc à priori çà ne serait pas çà le problème. Par contre je vais essayer de redemarrer le pc et te tenir informé.

    Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Après un redémarrage rien n'a changé.

    Il ne me reste plus que de la persévérance.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    bonjour,
    l'adresse du range n'est pas valide, pour contourner ce probème je n'ai trouvé que la solution...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a$ = "A2:I" & nbUsedRows
    xlBook.Worksheets("Stats1082").Range(a$).Copy Destination:=xlBook.Worksheets("Temporaire").Range("A1")
    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Bonjour LeForestier,

    Tu me demandes d'utiliser a$ et j'aimerais savoir de quel type serait a$ car j'utilise l'option explicit.

    Merci d'avance

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Bon ben décidément le petit excel me résiste. Même avec ta solution LeForestier, rien à y faire.

  8. #8
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    a$ est déclaré implicitement comme un string ($)

    Commence avant tout par vérifier la valeur de nbUsedRows des fois qu'il soit null

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Bonjour DarkVader,

    En mode pas à pas, je vérifie bien qui nbUsedRows n'est pas null mais vaut 8181 comme le nombre de lignes contenues dans ma feuille de calcul Stats1082.

    Merci,

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour Kdestine,

    Toujours en pas à pas, après ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Name = "Temporaire"
    la feuille "Temporaire" est bien créée sur le 2ème fichier ?

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    J'ai testé ta fonction chez moi, en adaptant les noms et elle fonctionne normalement. j'ai juste changer autofilter par select.
    Mon avis qu'il faudrai faire un débug pas à pas et tester chaques variables.
    A+

  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par kdestine Voir le message
    Bonjour DarkVader,

    En mode pas à pas, je vérifie bien qui nbUsedRows n'est pas null mais vaut 8181 comme le nombre de lignes contenues dans ma feuille de calcul Stats1082.

    Merci,
    Vérifie que ta plage ne déborde pas. Le problème ne doit plus être bien loin.
    En mode pas à pas,
    debug.print xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).address, xlBook.Worksheets("Stats1082").cells.address

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Bonjour DarkVader et Jacques_Jean,

    Tout d'abord je tiens à remercier votre disponibilité.

    Oui Jacques_Jean, la feuille Tempraire existe bel et bien et lorsque je fais un test en mettant en commentaire la ligne de copie je la retrouve bien dans le fichieer excel.


    Alors j'ai essayé de faire comme tu m'as dit DarkVader en mode pas à pas mais curieusement, la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).address, xlBook.Worksheets("Stats1082").cells.address
    ne m'affiche rien du tout.

    Merci,

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    DarkVader désolé en cherchant un peu j'ai vu la fenêtre d'exécution qui m'affiche pour la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print xlBook.Worksheets("Stats1082").Range("A2:I" & nbUsedRows).address, xlBook.Worksheets("Stats1082").cells.address
    les valeurs

    Ce qui signife qu'iln n'y aurait effecvement aucun débordement si je ne me trompe pas.

  15. #15
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Je ne vois pas.

    Chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim xlBook As Workbook, nbUsedRows As Long, xlSheet As Worksheet
        Set xlBook = ActiveWorkbook
     
        '.../...
     
        nbUsedRows = xlBook.Worksheets("Feuil1").UsedRange.Rows.Count
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "Temporaire"
     
        xlBook.Worksheets("Feuil1").Range("A2:I" & CStr(nbUsedRows)).Copy xlSheet.Range("A1")
    fonctionne parfaitement.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Merci DarkVader,

    Je pense que c'est pas la peine que je continue à chercher pourquoi çà ne fonctionne pas. Peut être est-ce un bug interne (soit ma machine soit la suite microsoft).


Discussions similaires

  1. méthode select class range échoué
    Par PLH81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/08/2014, 17h03
  2. [XL-2010] erreur 1004 methode delete classe range échouée
    Par emi81 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/03/2013, 17h50
  3. [XL-2003] [VBA] Erreur 1004 - Delete Classe range
    Par mirmoleboss dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/07/2011, 16h53
  4. [XL-2003] Erreur sur la classe Range
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2010, 23h26
  5. la methode select de la classe range a échoué
    Par shrekos007 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 26/05/2007, 15h51

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