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 :

Comment expliquer cette erreur ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut Comment expliquer cette erreur ?
    Bonjour,

    J'aimerai, si possible avoir une explication sur l'erreur de fonctionnement suivant :

    Si j'écris ceci, ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a = Sheets.Count
    Sheets("Feuil1").Copy After:=Workbooks(nomfichier).Sheets(a)
    Si j'écris cela, ça me provoque l'erreur 9 (l'indice, n'est pas dans la sélection)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("Feuil1").Copy After:=Workbooks(nomfichier).Sheets(Sheets.Count)
    Merci de vos réponses....

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans avoir testé, je ne vois pas la raison du mauvais fonctionnement de la deuxième procédure par rapport à la première
    En revanche il y a un problème dans votre instruction Sheets.count parce-que vous n'avez pas précisé son parent (le classeur) or d'après votre ligne de code, la feuille source ne se trouve pas dans le même classeur que la cible donc si le nombre de feuille n'est le même, il y aura forcément une erreur.

    Ce code irait mieux (non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Workbooks(nomfichier)
      Sheets("Feuil1").Copy After:=.Sheets(.Sheets.Count)
    End With
    En supposant que la feuille nommée feuil1 se trouve dans le classeur actif (il est bien entendu préférable de préciser son parent (le classeur ThisWorkbook ?)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut
    Oui, en effet, dans mon programme, j'ai bien le classeur actif qui contient la Feuil1

    l'autre classeur est ouvert mais pas actif

    Ca donne quelque chose comme cela :
    celui-ci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Workbooks.Open (chemin & "\" & nomfichier)                                         'on ouvre le fichier excel de sauvegarde
    a = Sheets.Count
    Workbooks("météo.xlsm").Activate                                                         'j'active le fichier qui contient Feuil1 à copier
    Sheets("Feuil1").Select                                                                          ' sélection de la feuille qui possède les données
    Sheets("Feuil1").Copy After:=Workbooks(nomfichier).Sheets(a)                'On copie la feuil origine dans le fichier de sauvegarde
    Celui la ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Workbooks.Open (chemin & "\" & nomfichier)                                         'on ouvre le fichier excel de sauvegarde
     
    Workbooks("météo.xlsm").Activate                                                         'j'active le fichier qui contient Feuil1 à copier
    Sheets("Feuil1").Select                                                                          ' sélection de la feuille qui possède les données
    Sheets("Feuil1").Copy After:=Workbooks(nomfichier).Sheets(Sheets.count)                'On copie la feuil origine dans le fichier de sauvegarde
    Merci encore, je vais tester vos solutions

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut
    Enfin, j'ai compris l'erreur.

    Le "Sheets.Count" qui se trouve en fin de la ligne copie, ne compte pas les feuilles du classeur cible, mais bien celui du classeur source.
    Ceci explique bien que, si le nombre de feuilles dans le classeur source est supérieur au nombre de feuille du classeur cible, il ne peut pas faire la copie.

    Merci encore
    Je ferme ce fils de discussion, je mets résolu.

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

Discussions similaires

  1. Comment capturer cette erreur ?
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 01/05/2010, 11h12
  2. Réponses: 5
    Dernier message: 22/01/2009, 17h19
  3. comment regler cette erreur: AXIS error?
    Par DebutantWS dans le forum Services Web
    Réponses: 3
    Dernier message: 19/09/2008, 15h45
  4. Réponses: 4
    Dernier message: 11/01/2008, 21h37
  5. Comment corrigez cette erreur
    Par rawanex dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2006, 12h58

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