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 :

Utilisation de différents classeurs (non enregistrés)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut Utilisation de différents classeurs (non enregistrés)
    Bonjour à tous,
    avant tout je tient à dire que je cherche depuis quelques temps sur des forums pour trouver la réponse mais il n'y a rien à ce sujet et je ne sais même pas si la solution existe.

    voila la situation :
    1 - j'effectue une extraction SAP qui se présente sous la forme d'un fichier Excel qui se nomme Classeur1
    2 - j'ai un deuxieme fichier Excel appelé Donne qui est ouvert
    3 - je copie des données de Classeur1 dans Donne

    en sois je sais faire toute la mise en forme etc...

    mon seul problème est de mettre Classeur1 comme le classeur actif
    j'ai déjà essayé Workbooks("Classeur1.xls").Activate et Windows("Classeur1.xls").Activate mais aucun des deux ne marche.

    merci d'avance

    PS : il est aussi possible qu'il est un problème avec le ".xls" comme il s'agit d'une extraction SAP mais j'ai essayé avec d'autres types et aucun ne fonctionne....

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    apparemment tu as ouvert plusieurs instances d'Excel (inutile à part gâcher des ressources) …
    Le code principal doit ouvrir le fichier généré par SAP dans la même instance.
    Et un bon code n'a rien besoin de sélectionner ni d'activer, il suffit juste de préciser la filiation de chaque objet …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Quand le "Classeur1" est ouvert, quel nom est indiqué dans le bandeau Excel ? Y a-t-il un ".xls" ou autre extension à la fin du nom ?

    Autre question qui ne va pas résoudre directement ton problème mais qui peut mettre sur le chemin de la solution : pourquoi activer le Classeur1 ?

  4. #4
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    Bonjour,
    Pour répondre à tes question, sur mon Classeur1 il n'y a en effet pas d'extensions.
    Je ne sais pas vraiment pourquoi j'active le classeur1 pour tout te dire, mais j'ai appris à changer de classeur de cette manière et je n'ai pas cherché d'autres solutions, mais s'il y a un moyen plus simple et plus efficace je suis preneur, et je doit simplement copié des lignes sur ce classeur1.
    Autre question, est 'il possible que la macro gère des procédure sur autre chose que Excel (ici SAP)

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par benamor59 Voir le message
    sur mon Classeur1 il n'y a en effet pas d'extensions.
    Donc : Workbooks("Classeur1").Activate ou Windows("Classeur1").Activate.

    Je ne sais pas vraiment pourquoi j'active le classeur1 pour tout te dire, mais j'ai appris à changer de classeur de cette manière et je n'ai pas cherché d'autres solutions, mais s'il y a un moyen plus simple et plus efficace je suis preneur, et je doit simplement copié des lignes sur ce classeur1.
    Il est possible d'indiquer le parent d'un objet en le mettant en épithète.
    Par exemple, pour copier la cellule A1 de l'onglet Feuil1 du classeur MonClasseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("MonClasseur").Worksheets("Feuil1").Range("A1").Copy
    Tout ça sans avoir fait de Activate ou Select sur ces objets.
    Ca donne un code plus sûr et une exécution plus rapide.

    Autre question, est 'il possible que la macro gère des procédure sur autre chose que Excel (ici SAP)
    Oui. Il suffit de sélectionner dans ton classeur la bibliothèque d'objets correspondante.
    Dans VBE > Menu Outils > Références

  6. #6
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    merci pour les réponses,
    malgres cela l'erreur "L'indice n'appartient pas à la selection" persiste à la ligne : Workbooks("Classeur1").Worksheets("PM - Catalog report").Columns("A:G").Copy

    voici une capture d'écran qui je l'espère pourra vous donnez une piste avec CR SAP mon fichier de bas et toujours le fameux Classeur1

    Nom : Capture pour Excel.PNG
Affichages : 468
Taille : 31,7 Ko

    il existe peut être une fonction spéciale autre que Workbooks pour gérer les classeurs non enregistrés ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Bonjour,

    Tu es sur du nom de ta feuille (à l'espace près)

    En cas d'erreur il peux être utile d'écrire ton code sur plusieurs ligne pour vérifier d'où vient le problème (mais une fois le problème identifié il plus judicieux de remettre tout sur une ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Classeur1").Worksheets("PM - Catalog report").Columns("A:G").Copy
    deviens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks("Classeur1").activate
    Worksheets("PM - Catalog report").activate
    Columns("A:G").Copy
    et suivant quel ligne renvoie une erreur tu sauras si le problème viens du nom de classeur ou du nom de la feuille.

  8. #8
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    salut halaster.
    Le problème provient bien du classeur, je rappel ce qui pour moi pose problème, c'est que ce classeur n'est pas enregistré sur l'ordinateur et na donc pas d'extension
    Si tu as une idée je suis preneur (sans me dire d'enregistrer le fichier bien entendu )

  9. #9
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Dans ce cas tu peux essayer de manipuler ton classeur avec l'enregistreur de macro allumé.
    Ensuite tu compares avec le code obtenu avec le tiens.

    ps: Pourquoi ce refus d'enregistrer ? tu pourrais enregistrer temporairement le fichier puis le supprimer quand tu n'en as plus besoin.

  10. #10
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    Si seulement, c'est ce que j'ai fait au tout début mais l'enregistreur de macro ne détecte pas le nouveau classeur, il n'enregistre rien du tout lorsque je me met sur Classeur1
    comme si ce classeur n'existai pas n'étant pas enregistré sur l'ordi ou peut être parce qu'il est dans une autre instance Excel.
    c'est un fichier qui es changé toutes les 4h et que différentes personnes peuvent êtres amenés a manipuler, le fait de ne pas enregistrer évite les erreurs de manips je pense

    edit1 : mais si personne n'a de solutions la comme ca je gérerai avec un enregistrement c'était surtout une question pratique

    edit2 : finalement l'enregistrement ne change rien au problème, le problème vient donc du fait que les fichiers soient ouverts dans 2 instances Excel distinctes (pour résoudre le problme il faudrait enregistrer classeur1, fermer la feuille puis la rouvrir)....

  11. #11
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Citation Envoyé par benamor59 Voir le message
    comme si ce classeur n'existai pas n'étant pas enregistré sur l'ordi ou peut être parce qu'il est dans une autre instance Excel.
    Je vote pour la deuxième hypothèse, j'ai déjà manipulé des classeurs non enregistré sans problème.

    c'est un fichier qui es changé toutes les 4h et que différentes personnes peuvent êtres amenés a manipuler, le fait de ne pas enregistrer évite les erreurs de manips je pense
    Tu peux protéger le classeur pour empêcher les modifs

  12. #12
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    Oui comme édité dans le message précédent cela vient bien du problème des différents instances Excel et c'est bien embêtant car si la personne enregistre avec un nom différent c'est mort....

  13. #13
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Visiblement c'est ton export sap qui ouvre une nouvelle instance d'Excel.
    Si tu n'as pas besoin que ton fichier contenant la macro soit ouvert avant celui de l'export, tu peux essayer de l'ouvrir depuis le fichier export, comme ça les deux seront dans la même instance et la macro trouveras bien les deux fichiers.

  14. #14
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2017
    Messages : 10
    Par défaut
    Merci à tous pour votre aide,
    j'ai trouvé la solution en regardant sur un autre topic, il suffit de faire ceci : GetObject("Classeur1").Worksheets("PM - Catalog report").Columns("A:G").Copy
    bonne journée et à la prochaine

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 05/06/2018, 09h36
  2. Modifier le FileFormat d'un classeur non enregistré
    Par Fischspoon dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 07/04/2017, 16h13
  3. [XL-2010] Se positionner sur un classeur Excel non enregistré ( fichier dqy )
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/06/2012, 10h08
  4. Travailler sur 1 classeur actif non enregistré
    Par pat_che dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/11/2007, 10h38
  5. [ToutlookApplication] Classe non enregistrée
    Par nico33410 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2005, 10h36

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