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 :

Copier onglet sur un autre fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Bonjour

    Voilà je suis en stage pour mes études et j'ai besoin de développer une macro. J'en ai jamais trop fait donc je galère un peu.

    Je cherche a créer une macro qui me permette de mettre un jour un onglet de mon fichier excel à partir d'un nouveau fichier qui est crée toutes les semaines.
    Du fait que c'est un nouveau fichié, je pense pas que je peux automatiser la mise à jours (exemple utiliser la fonction données externe) et donc l'opérateur qui utilisera par la suite mon outil devra toutes les semaines sélectionner le fichier qui correspond à la bonne semaine. Heureusement, ils sont tous enregistré sur le même dossier.

    J'ai crée une macro en automatique, assez basique ( voir ci-dessous) et donc j'aurais besoin de rajouter le code pour faire apparaitre une fenetre qui permet à l'opérateur de sélectionner le bon fichier et de l'ouvrir.

    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
    Macro1 Macro
    '
     
    '
        Range("C20").Select
        Workbooks.Open Filename:= _
            "Y:\ORDOLORETTE\Planning-Ordo\HEBDO MINOS\HEBDO LO 2013\Hebdo Lorette S39 2013.xls" _
            , UpdateLinks:=0
        Application.WindowState = xlMinimized
        Sheets("SEMAINE").Select
        ActiveWindow.SmallScroll Down:=-21
        Cells.Select
        Selection.Copy
        Windows("Version finale.xlsx").Activate
        Cells.Select
        ActiveSheet.Paste
    End Sub
    Je ne sais pas si il y a d'autre moyen de faire, je reste ouvert à toutes vos remarques.

    Je vous remercie par avance pour votre aide

    J'ai oublié de vous demander: est ce qu'il existe un moyen qui permet juste de copier/coller les cellules de l'onglet sans même ouvrir le fichier?

    Merci Merci

  2. #2
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    voir l'aide de la méthode GetOpenFilename par exemple pour sélectionner un fichier …

    Oui on peut accéder aux données d'un autre classeur mais pas évident pour un débutant,
    mieux vaut simplement désactiver le rafraichissement de l'écran (voir ScreenUpdating) …

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Ok j' ai testé ca fonctionne.

    Par contre il y a des chance que mon fichier soit déjà ouvert lorsqu eje décide de l'ouvir.
    Est ec qu'il existe une fonction qui me permet en autre de faire???

    Si mon fichier est ouvert alors ouvrir en lecture seule

    Merci

  4. #4
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Nan, dans ce cas le mieux est d'uiliser le fichier vu qu'il est déjà ouvert !
    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
    Function IsOpen(Name$) As Boolean
             On Error Resume Next
             IsOpen = IsObject(Workbooks(Name))
    End Function
     
     
    Sub Macro1()
        Application.ScreenUpdating = False
        D$ = "Y:\ORDOLORETTE\Planning-Ordo\HEBDO MINOS\HEBDO LO 2013\"
        F$ = "Hebdo Lorette S39 2013.xls"
        If Not IsOpen(F) Then Workbooks.Open D & F, 0
        ActiveWorkbook.Worksheets("SEMAINE").Cells.Copy Workbooks("Version finale.xlsx").ActiveSheet.[A1]
        ActiveWorkbook.Close False
        Application.ScreenUpdating = True
    End Sub
    A toi de vérifier dans la ligne n°12 les classeurs & feuilles source & destination …

    Et d'y inclure la sélection du fichier …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que l'on ne sait pourquoi …

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Bonjour

    J'ai un peu avancé sur ma macro

    J'obtien quelque chose qui fonctionne

    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
    Sub Macro2_Mise_A_jour_LOR()
    '
    ' Macro2_Mise_A_jour_LOR Macro
    '
     
        Workbooks.Open Filename:=Application.GetOpenFilename("Excel Files (*.xls),*.xls"), UpdateLinks:=False, ReadOnly:=True
        Sheets("SEMAINE").Select
        Worksheets("SEMAINE").Cells.Select
        Selection.Copy
        Workbooks("Version finale.xlsm").Activate
        Sheets("Feuil1").Select
        Cells.Select
        ActiveSheet.Paste
     
     
     
    End Sub
    Je cherche maintenant à fermer le fichier ouvert avec getOpenfilename sans enregistrer.
    J'ai essayé avec Kill floder mais ca ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Kill ("Workbooks")
       Application.DisplayAlerts = True
    Quelqu'un aurait il une idée?

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.DisplayAlerts = False
    activeworkbook.close
    Application.DisplayAlerts = True

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Je suis désolé ca marche pas ta solution ENGUE ENGUE

    Comment je peux codé le fait de resélectionner le fichier ouvert avec GetopenFile?

  8. #8
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut
    Dimitri, soit dit en passant vite fait, il y a tout dans mon code …

    Notamment les lignes 12 & 13 et sans ces affreux ralentisseurs Activate & Select souvent source d'ennui !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Okay, c'est juste du fait de mon ignorance je comprend pas toutes les lignes donc je cherchais à le refaire par moi même pour essayer.... mais comme tu vois je galère....

    MARC-L merci pour ton aide, c'est vrai que ton fichier marche bien!

    par contre j'ai le même problème, comment je peux faire pour fermer le fichier ouvert avec getopenfile et ne garder que mon ficher "version final" ouvert?

  10. #10
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut
    Concernant les lignes 12 & 13 de mon code, j'applique juste les méthodes Copy et Close comme conseillé
    dans l'aide VBA intégrée que tout apprenti programmeur se doit de consulter afin de progresser.

    Je n'ai pas la science infuse VBA, le net ne m'a pas appris les bases (faut dire qu'à l'époque, y avait pas trop le choix !) …

    L'Enregistreur de macros peut être aussi un ami pour débuter, l'aide VBA venant ensuite peaufiner les découvertes.

    Suis OFF jusqu'en fin d'après-midi …

    Mea Culpa Dimitri !

    Il manque l'activation par exemple (entre autres) du classeur s'il est déjà ouvert, étonné que personne s'en soit aperçu …

    Montre-nous ton code (en utilisant l'icône # dédiée au code) afin de l'adapter …

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Ahhhh!!! Peut être je suis sauvé alors???

    Voici 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub bilan_navette()
    '
    ' bilan_navette Macro
    '
     
    '
     
        Workbooks.Open Filename:= _
            "X:\Tableaux de bord\Litiges\Navettes\Tbord Navettes 2013.xlsm", Notify:= _
            False, ReadOnly:=True
     
        Sheets("Indicateur_Dimitri").Select
        Range("B8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            CurrentPage = "S39"
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        Windows("Version finale.xlsm").Activate
     
    End Sub
    Comment faire alors pour venir lire la valeur de la cellule C2 (qui comprendra le numéro de la semaine Sxx) au lieu d'avoir "S39" dans le code?

    Merci merci Marc-L

  12. #12
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Cette cellule C2, où se trouve-t-elle ? La feuille, le classeur …

    Qui plus est tu n'y a pas intégré IsOpen


  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Ma cellule C2 elle se trouve sur un onglet appellé "Suivi activité" dans mon fichier excel "version final".

    Le Isopen je ne sais pas comment l'utiliser. En fait dans ma macro, j'ouvre un fichier excel ou se trouve le tcd et ou je filtre par rapport à ma cellule C2 de mon fichier sur lequelle je travail.

  14. #14
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Pourtant c'est en clair dans mon code ! …

    Autre point : le code se trouve dans quel classeur et dans un module normal ou de classe ?

  15. #15
    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 975
    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 975
    Points : 29 009
    Points
    29 009
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est de moins en moins clair pour moi.
    Que cherches-tu à copier finalement sur un autre classeur ?
    Est-ce une feuille contenant un tableau croisé dynamique, est-ce des données d'une certaine semaine se trouvant sur une feuille ?
    Ces données doivent elles se trouver à la suite l'une de l'autre sur une même feuille de cet autre classeur ou bien sur une nouvelle feuille ?

  16. #16
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Autre chose à vérifier Dimitri vu ta ligne n°10 : les pivots sont-ils modifiables sur un classeur ouvert en lecture seule ?

Discussions similaires

  1. [XL-2010] Appliquer Macro sur un autre fichier Excel
    Par Rageo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/05/2014, 23h26
  2. Copier un onglet sur un autre fichier excel
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/10/2013, 12h22
  3. [Toutes versions] Formule pour recuperer une valeur sur un autre fichier Excel
    Par bonilla dans le forum Excel
    Réponses: 2
    Dernier message: 26/06/2012, 12h19
  4. [XL-2007] se positionner sur un autre fichier excel
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 14/03/2012, 12h58
  5. [VBA-E] Pointer sur un autre fichier Excel
    Par Yop dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/12/2006, 20h43

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