XL 2010 exporter onglet dans classeur fermé

  • Initiateur de la discussion Initiateur de la discussion mix770
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mix770

XLDnaute Impliqué
re bonjour,

je recommence à zéro.

j'ai la macro suivante qui fonctionne quand les 2 classeurs sont ouverts, cela copie l'onglet.

Sub Copie_feuille_resultats_janvier()
Sheets("resultats_janvier").Select
Sheets("resultats_janvier").Copy After:=Workbooks("collecte_AA").Sheets(1)
End Sub

j'essaie modifier pour qu'il fasse la même chose sans ouvrir le classeur et cela bloque sur:

Workbooks("D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\collecte_AA.xlsx").Activate

je tourne en rond depuis hier et cela me rend GRRRR


Sub Copie_feuille_resultats_janvier()
Sheets("resultats_janvier").Select
Workbooks("D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\collecte_AA.xlsx").Activate
Sheets("resultats_janvier").Copy After:=Workbooks("collecte_AA").Sheets(1)
ActiveWindow.Close
ThisWorkbook.Activate: Range("A1").Select
End Sub

si quelqu'un a une idée

merci à vous
 
RE Bonjour à tous,
Cette fois je viens de testé et corrigé ma macro que voici.
Bruno
VB:
Sub Copie_feuille_resultats_janvier()
On Error Resume Next 'gère l'error
Sheets("resultats_janvier").Select
Workbooks("collecte_AA.xlsx").Activate
If Err > 0 Then
Err.Clear
chemfich = "D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\collecte_AA.xlsx"
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "fichier non trouvé": Exit Sub
End If
ThisWorkbook.Sheets("resultats_janvier").Copy After:=Workbooks("collecte_AA.xlsx").Sheets(1)
Workbooks("collecte_AA.xlsx").Save
Workbooks("collecte_AA.xlsx").Close
ThisWorkbook.Activate: Range("A1").Select
End Sub
 
bonjour à vous,

je tourne en rond et vois pas pourquoi ça marche pas.

mon fichier de saisie est nommé "Parka_suivi compte exploitation" et est hébergé sur le "D:\Applis\Bordereau présence Exploitation"
mon fichier de destination nommé "collecte-AA" hébergé sur le "D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation"
de mon fichier de saisie doit être envoyé tous les mois l'onglet "resultats exploitation" et chaque mois l'onglet "resultats_janvier; resultats_fevrier; etc..
je bloque déja pour collecter un onglet et m'interroge pour les autres, il faudra une macro par onglets ?
merci à vous
je craint d'être un peu lourd je m'en excuse
 
Bonjour mix 🙂, le Forum 🙂

de mon fichier de saisie doit être envoyé tous les mois l'onglet "resultats exploitation" et chaque mois l'onglet "resultats_janvier; resultats_fevrier;

Là je ne comprends pas très bien, vu que tous les mois et chaque mois c'est la même chose. 🙄
Tu veux copier "resultats exploitation" et le sauvegarder sous le nom de "resultats_janvier; resultats_fevrier etc??
 
Re

Lone-wolf à dit: Tu veux copier "resultats exploitation" et le sauvegarder sous le nom de "resultats_janvier; resultats_fevrier etc??

Sinon, voici un classeur test avec les feuilles nommées "resultats_janvier; resultats_fevrier" etc. La feuille est sauvegardée sur le bureau.

Code pour ceux qui seraient interéssés

VB:
Option Explicit

Sub test()
Dim Ws As Worksheet, Mois As String, NomMois As String
Dim Chemin As String, NomSortie As String

    Mois = MonthName(Month(Date))
    Chemin = ThisWorkbook.Path & "\"
    Application.ScreenUpdating = False
  
    For Each Ws In ThisWorkbook.Worksheets
        NomMois = Right(Ws.Name, Len(Ws.Name) - 10)
        If NomMois = Mois Then
            Ws.Activate
            ActiveSheet.Copy
            NomSortie = ActiveSheet.Name & ".xlsx"
            Application.DisplayAlerts = False                                                                 'Format .xlsx"
            ActiveSheet.SaveAs Filename:=Chemin & NomSortie, FileFormat:=xlOpenXMLWorkbook
        End If
    Next Ws
    ActiveWorkbook.Close True
    ThisWorkbook.Sheets(1).Activate
End Sub
 

Pièces jointes

Dernière édition:
Pour lone-wolf
Je tente direct d'activer le fichier qui peut être fermé
si il est fermé cela fait une error (c'est géré par on error resume next)
si error(Err>0) j'efface l'error(Err.clear) et tente d'ouvrir le fichier
si encore error message fichier non trouvé(on quitte)
si pas d'error on copy l'onglet
cela ne fait pas doublon Err>0 ou Err<>0
Il est mieux en effet de mettre chaque fois Err<>0 car le N° de l'error peut varier
Bruno
 
pour être clair dans ma réflexion, j'ai besoin d'une confirmation.

je n'y arrive pas, je comprends pas.


le classeur de destination est sur le D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation / nommé Collecte_AA
le classeur source (ou sont faites les saisies) est sur le D:\Applis\Bordereau présence Exploitation / nommé Parka_suivi compte exploitation.
avec un onglet qui se met à jour à chaque fin de mois et un onglet par mois (Resultats_Janvier; Resultats_fevrier; etc..)

si je comprends bien il faut une macro par mois ?

merci
 
Bonjour Lone_Wolf.

pour répondre à ta question
j'ai un onglet qui reprend tous les résultats de l'année (resultats_exploitation) qui est donc à remettre à jouir chaque mois
puis un onglet par mois qui lui affiche les éléments consolidés avec un affichage du budget.
c'est bien 2 onglets par mois à mettre à jour.
espérant être clair 😉
 
Bonjour mix

D'accord, j'ai compris(enfin je crois 🙄). Voici un mix entre la macro de Youky(BJ) et la mienne.

VB:
Sub Copie_feuilles()
Dim Ws As Worksheet, Mois As String
Dim chemfich As String, NomMois As String

    On Error Resume Next    'gère l'error
    'Sheets("resultats exploitation").Select
    Workbooks("collecte_AA.xlsx").Activate
    If Err > 0 Then
        Err.Clear
        chemfich = "D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\collecte_AA.xlsx"
        Workbooks.Open chemfich
        If Err <> 0 Then MsgBox "fichier non trouvé": Exit Sub
    End If
    ThisWorkbook.Sheets("resultats exploitation").Copy ActiveWorkbook.Sheets(1).Range("a1")
    Mois = MonthName(Month(Date))

    Application.Wait(Now + TimeValue("0:00:01"))

    For Each Ws In ThisWorkbook.Worksheets
        NomMois = Right(Ws.Name, Len(Ws.Name) - 10)    'resultats_janvier; resultats_fevrier etc
        If NomMois = Mois Then
            Ws.Activate
            ActiveSheet.Copy After:=ActiveWorkbook.Sheets(1).Range("a1")
        End If
    Next Ws
    ActiveWorkbook.Close True
    ThisWorkbook.Sheets(1).Activate
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
659
Retour