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] copier une fiche active dans un autre classeur.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut [VBA-E] copier une fiche active dans un autre classeur.
    salut a tous

    bon voila mon soucis;
    j'ai un fichier excel qui, quand on le lance, active une interface graphique (créée en VB) et qui dialogue avec une base de données.

    Les infos recupérées de la base sont stockées dans le classeur.
    Une fois mises dans le classeur, on accede directement a l'apercu d'impression et on peut imprimer.

    Ce que je veux faire c'est lorsque je lance l'impression, quand l'interface graphique revient a l'ecran, il faudrait que ce que j'avai dans mon classeur se copie dans un autre fichier .xls quelque part sur le pc.

    Le pb lorsque j'utilisais des codes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Chemin = "D:\test\"
    Application.ActiveWorkbook.SaveCopyAs Chemin & "test.xls"
    Tout mon fichier principal, avec interface graphique et tout, se copiait ou je voulais.

    Moi je ne veux pas recuperer mon interface, mais juste les données que j'avais temporairement dans le classeur..

    Pouvez vous m'aider car je ne trouve pas trop de solution la.

    merci bcp par avance

    Cordialement

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Hello!
    Fais le "à la main" en enregistrant une macro: tu sélectionnes tout l'onglet, tu le copies, et tu le colles dans un onglet de ton nouveau classeur.
    Tu auras le code "de base" à adapter selon tes besoins exacts.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci de ton aide, je viens d'avoir le code de la macro, je vais tenter de l'adapter.

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ok.
    Et par expérience, essaie de virer les ".Select" suivis de "Selection.Gnagnagna". Utilise de préférence les références complètes à tes zones, c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(MonFichierExcel).WorkSheets(MonOnglet).Range(...
    Mais c'est un avis tout personnel...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    j'ai le soucis qu'il ne me créé pas le nouveau classeur et qu'il ne veut par conséquent, pas copier la selection.

    c'est assez bizarre car il me di que y a des éléments incorrects dans la sélection

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ton code, pleaaaaase.
    Sinon, on ne peut rien te répondre d'intéressant.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    tu vas pas aimer, y a des select ^^


    Alors la macro ma donnée ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cells.Select
    Selection.Copy
    Windows("Classeur1").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Range("E9").Select
    ActiveWindow.SmallScroll Down:=-15
    moi dans mon code j'ai laissé ainsi pr voir s'il allait fonctionner sans modif.

    j'ai vu que non, j'ai alors tenté a la place de "Classeur 1" de mettre un chemin d'acces avec une variable String. Mais toujours pas ca.

    Ca me donne tjs le meem message d'erreur:
    "Erreur d'exécution 9, l'indice n'appartient pas a la sélection."

    j'ai essayé de selectionner mes colonnes de facon différente, car j'ai pensé a ca au départ, mais ca ne changeait rien.

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Bon déjà, le smallScroll, tu peux l'enlever, c'est juste que tu as mis un coup de roulette de souris pendant l'enregistrement de la macro (sans doute pour vérifier que tu avais bien récupéré toutes tes données)
    Pour les "Select", ce n'est pas très grave, on verra après.
    Pour l'erreur:
    Tu as bien un classeur "Classeur1" déjà ouvert? C'est à dire que, dans Excel, dans le menu "Fenêtre", tu as bien "Classeur1" comme choix possible?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    justement j'essaie de ne pas devoir ouvrir de classeur moi meme avant.

    il faut que ce soit le programme qui "copie" le contenu de l'ancien classeur sur un autre et l'enregistre dans un dossier précis...

    pour le smallscroll c bien ce que je pensais mais bon...j'lai mis quand même

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ok, alors dans ton code, avant de coller les données, tu dois ouvrir le classeur cible.
    Une fois que tu as collé tes données, tu pourras enregistrer le classeur cible, puis le fermer.
    Là encore, tu peux le faire en enregistrant une macro pour avoir le code.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    bon j'ai fait suivant l'ordre désiré d'utilisation du programme.

    le code de la macro donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Workbooks.Add
    Windows("RAPPORT HEBDO.xls").Activate
    Range("A1:H100").Select
    Selection.Copy
    Windows("Classeur1").Activate
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ChDir "D:\test"
    ActiveWorkbook.SaveAs Filename:="D:\test\test.xls", FileFormat:=xlNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    ActiveWindow.Close

  12. #12
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Attention, dans ce code, tu n'ouvres pas le classeur "Classeur1". Tu ne fais que le mettre au premier plan, il était déjà ouvert.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    pourtant quand j'ai fait ma macro, j'ai ouvert moi même le classeur 1, je viens d'essayer le code sur mon appli et ca a l'air de fonctionner.
    me reste juste a faire que le nom du fichier .xls soit la date et l'heure .

    peut on mêler date et heure en meme temps? je suppose que oui, je pensais utiliser formatDateTime

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    si je met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_En_Cours = FormatDateTime(Date_En_Cours, vbShortDate)
    ca plante, je pense que ca vient du "Date_En_Cours" dans la parenthèse qui fou la zone.

    seulement je ne sais pas trop quoi mettre sinon...le date en cours, est le futur nom de mon fichier.xls

  15. #15
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Très franchement, je ne comprend pas comment ça peut marcher: ton code n'ouvre pas le fichier Excel dans lequel tu veux coller tes données. La preuve, il n'y a pas le chemin complet du répertoire dans lequel il se trouve, et VBA ne peut pas le deviner.
    Et pour récupérer la date du jour, la fonction
    existe. Et l'idée du Format() pour la mettre au format que tu désires est bonne.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Bon je viens de revoir un peu le code, en effet c'était aps créé, j'ai fait selon ce 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
      Heure = Time
     
      Date_En_Cours = Format$(Now, "ddmmyyyy")
      Heure_En_Cours = Format$(Time, "hhmmss")
     
      Heure_En_Cours = FormatDateTime(Heure, vbLongTime)
      NomFichierTemp = Date_En_Cours & Heure_En_Cours & ".xls"
     
      NomFichier = "D:\test\" & NomFichierTemp
     
      Windows("RAPPORT HEBDO.xls").Activate
      Range("A1:H100").Select
      Selection.Copy
     
      Workbooks.Add.Activate
     
      ActiveSheet.Paste
      Application.CutCopyMode = False
      ChDir "D:\test\"
     
      ActiveWorkbook.SaveAs Filename:=NomFichier, FileFormat:=xlNormal, _
            Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
      ActiveWindow.Close
    Seulement, ca plante maintenant a partir d' "ActiveWorkbook"

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Je viens de debugger un peu et de faire du pas a pas...ca vient de ma partie de conversion des dates et des heures, il n'a pas l'air d'aimer ce que je lui donne dans le fichier

    pourtant je ne met aucun caractere spécial, c'est que du chiffre...il devrait apprécié....

  18. #18
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Bonjour Little-Freud

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heure_En_Cours = FormatDateTime(Heure, vbLongTime)
    te donne un format d'heure--> hh:mm:ss
    mais les : ne sont pas acceptés dans les noms de fichiers:
    tout comme les \ / * ? " < > |
    @+

  19. #19
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    le pb est que je cherche le moyen de ne plus avoir ses ":" ^^

    si je prend un shorttime, ca devrait marcher non?

  20. #20
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    j'ai enlevé la ligne du formatdatetime, elle ne servait a rien en fait...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Déplacer une fiche cumul dans un autre classeur
    Par MAHITOUCK dans le forum Excel
    Réponses: 1
    Dernier message: 14/12/2011, 11h16
  2. copier une feuille graphique vers un autre classeur en vba
    Par rob1son76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/03/2011, 17h53
  3. [XL-2007] copier une ligne si dans un autre fichier
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2011, 22h38
  4. copier une ligne selectionne dans un autre onglet
    Par calvi2002 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2009, 12h09
  5. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46

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