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]problème d'indice pour macro dans perso.xls


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [VBA-E]problème d'indice pour macro dans perso.xls
    Bonjour,

    J'ai créé une procédure dans VBA pour extraire des données d'un classeur vers un autre.

    Sachant que je vais devoir employer ce code pour extraire des données de plusieurs fichiers différents, j'ai décidé de la mettre dans une macro du classeur perso.xls.

    Depuis lors, cela ne fonctionne plus: le problème se situe dès le début.

    Alors que la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With workbooks(1).Worksheets("donnees_generales")
    fonctionnait, maintenant, je reçois le message "L'indice n'appartient pas à la sélection".

    J'ai tenté de contourner le problème avec workbooks(count) mais cela ne fonctionne toujours pas.

    Je ne peux pas mettre le nom du fichier car celui-ci est variable.

    Merci de votre coup de main,

    Frédéric

  2. #2
    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 040
    Points
    20 040
    Par défaut
    et censé représenté quel classeur ..? perso.xls..?

    voir peu-être vba : Quelle différence entre ActiveWorkbook et ThisWorkbook ?



  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.

    Voici la configuration:

    - un classeur intitulé par exemple 20070501_203412.xls (le nom change suivant la dernière sauvegarde).
    - une macro dans le fichier perso.xls

    Dans la procédure "macro2", je voudrais faire référence au premier classeur (celui intitulé 2007...) en cliquant sur un bouton auquel j'ai associé "macro2". Sachant que je l'ouvre en premier (ou en deuxième après perso.xls), je voulais faire workbooks(1), mais j'ai un problème "l'indice n'appartient pas à la sélection".

    Je ne vois donc pas comment résoudre le problème.

    Merci,

    Frédéric

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Quand tu ouvres tes fichiers, tu peux récupérer leurs noms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fich1 = Activeworkbook.name
    Fich2 =......
    Il ne te reste plus qu'à paramétrer ta procédure placée dans Perso.xls et d'envoyer les noms de fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Laprocédure(Fich1, Fich2)
    et dans la procédure...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Laprocédure(Fich1, Fich2)
    '...
        With workbooks(Fich1).Worksheets("donnees_generales")
        '... etc.

  5. #5
    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 040
    Points
    20 040
    Par défaut
    Et le bouton il est ou ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Parce que s'il y a un bouton, c'est par lui qu'il faudra ouvrir les fichiers, sinon le code que je t'ai passé ne fonctionnera pas

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut,

    Le bouton est dans la barre d'outils et non pas dans la feuille. La logique d'utilisation est la suivante:

    1. Je rentre mes données dans un document excel.
    2. Le document est sauvegardé avec un nom qui est la date et l'heure de la sauvegarde.
    3. Je clique sur le bouton de la barre d'outils pour exporter les données dans un autre document excel.

    Je ne comprends vraiment pourquoi workbooks(1) ne fonctionne pas. J'ai pourtant un seul document ouvert avant de cliquer sur le bouton.

    Merci,

    Frédéric

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir


    Que te renvoie cette macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
    MsgBox Workbooks.Count
    End Sub

    perso.xls étant un fichier masqué, as tu essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With workbooks(2).Worksheets("donnees_generales")

    Remarque:
    comment feras tu s'il y a d'autres classeurs ouverts en même temps?


    bonne soirée
    michel

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Merci pour la solution => apparement, le premier workbook est perso.xls. Il fallait donc mettre workbooks(2).

    Par contre, il est vrai que je n'ai pas pensé à l'ouverture d'autres classeurs. Je peux toujours limitier l'utilisation en ajoutant un test sur le nombre de classeurs ouverts.

    Le top, serait de trouver un moyen pour demander à l'utilisateur de choisir la feuille dont il souhaite exporter les données. Mais cela, c'est une autre affaire.

    Merci sincèrement pour votre aide. J'espère que mes compétences en VBA vont augmenter pour pouvoir aider à l'avenir.

    Frédéric

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

Discussions similaires

  1. Ajouter automatiquement une macro dans perso.xls
    Par s.n.a.f.u dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/09/2008, 00h56
  2. Réponses: 9
    Dernier message: 10/05/2007, 10h56
  3. [VBA-E]Problème de longueur de macro sous VBA [E]
    Par titou8383 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/04/2007, 19h00
  4. [VBA-Excel] Problème de syntaxe pour lien hypertexte
    Par matt8-5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2007, 11h23
  5. [VBA-E]Problème d'éxécution de macros à l'ouverture d'éxcel
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/04/2006, 18h02

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