XL 2010 exporter onglet dans classeur fermé

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
 

mix770

XLDnaute Impliqué
Lone_wolf; Youky

merci à vous pour votre patience et surtout vos compétences vous êtes des champions !!!!

ça fonctionne.

de mon coté, je vais changer de pseudo "boulet_Mix" :D
et j'aimerai avoir des cours en VBA.

Et surtout qu'elle dommage de ne pouvoir vous remercier que apr quelques mots
cela méritait une bouteille de champagne !!!
Merci beaucoup.
 

mix770

XLDnaute Impliqué
encore moi :rolleyes:

le but étant de collecter les "collectes_AA" de plusieurs sites AA BB CC et de les consolider

juste pour savoir si dans la macro il n'y a pas possibilité de donner une cellule de référence pour le nom du fichier de destination (qui lui sera évidemment nommer en cohérence en amont). car sinon cela implique de toucher à la macro à chaque fois.

merci à vous.
 

mix770

XLDnaute Impliqué
merci Youky,
je remet le tableau

autre question, dans la macro il envoie les résultats des 12 mois c'est OK, mais l'onglet "resultat exploitation est le même pour l'année, ce qui fait qu'il le renomme résultat_exploitation2; résultat_exploitation3;etc. y a t'il possibilité qu'il écrase l'onglet précédent à chaque mois.

merci pour tout

j'espère que je suis assez claire
 

Pièces jointes

  • Copie de EssaiPourMix.xlsm
    21.4 KB · Affichages: 22

youky(BJ)

XLDnaute Barbatruc
Je pige pas trop . . . .
Mets un fichier exemple avec simplement la structure et le nom des onglets, y a t'il des formules ?
résultat_exploitation2 > le 2 veux dire le N° du site ou le N° du mois
>>>écraser l'onglet précédent à chaque mois (supprimer l'onglet ou le vider )
Faut t'il copier qu'un onglet par site, je pense que Oui.
Je sais pas comment fonctionne le fichier !
Bruno
 

mix770

XLDnaute Impliqué
Bonjour Youky,

je vais te donner des détails, mais je viens de voir qu'il y a un problème, mon tableau source (celui qui envoie les onglets) est protégé par une macro) ce qui a pour conséquence de bloquer l'export avec un message.
je pense qu'il va falloir ouvrir et fermer la protection.
merci de ton aide

c'est la misère
le msg
upload_2018-3-20_14-25-48.png



et la macro de protection

Sub Locked()
' Protection automatique de toutes les feuilles du classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="Tidf94"
Next i
End Sub

Sub Unlocked()

' Déprotection automatique de toutes les feuilles du classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="Tidf94"

Next i
End Sub



merci beaucoup !!
 

Pièces jointes

  • upload_2018-3-20_14-25-37.png
    upload_2018-3-20_14-25-37.png
    31.1 KB · Affichages: 19

youky(BJ)

XLDnaute Barbatruc
Ajoute les lignes en gras.
La protection des onglets ne rentre pas en jeu c'est la protection du Classeur de destination qui bloc (voir si même MP)
Revoir le nom xlsm ou xlsx ou autre.........
Evite de mettre un MP en vue sur le forum...
Workbooks("collecte_AA.xlsm").Unprotect "Tidf94"
ThisWorkbook.Sheets(onglet).Copy After:=Workbooks("collecte_AA.xlsm").Sheets(1)
Workbooks("collecte_AA.xlsm").Protect "Tidf94"
Workbooks("collecte_AA.xlsm").Save
Bruno
 

mix770

XLDnaute Impliqué
Bruno,

Cela bloque sur la ligne en rouge, Le vrai nom du tableau de destination est "Consolidation_Exploitation.xls"
ta proposition est insérée
merci

Sub Copie_feuille_Active()
On Error Resume Next 'gestion de l'erreur
onglet = ActiveSheet.Name
If MsgBox("Envoyer " & onglet & " dans Consolidation_Exploitation ?", vbYesNo + vbExclamation, "COPIER L'ONGLET") = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks("Consolidation_Exploitation.xls").Activate
If Err > 0 Then
Err.Clear
chemfich = "D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\Consolidation_Exploitation.xls"
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "fichier non trouvé": Exit Sub
End If
On Error GoTo 0
' Workbooks("Consolidation_Exploitation.xls").Unprotect "AAA" 'ajout
ThisWorkbook.Sheets(onglet).Copy after:=Workbooks("Consolidation_Exploitation.xls").Sheets(1)
' Workbooks("Consolidation_Exploitation.xls").Protect "AAA" ' ajout
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
DoEvents 'reprise main windows
Workbooks("Consolidation_Exploitation.xls").Save
Workbooks("Consolidation_Exploitation.xls").Close
ThisWorkbook.Activate: Range("A1").Select
Application.ScreenUpdating = True
MsgBox onglet & " a été copié dans Consolidation_Exploitation !"
End Sub

cela bloque
 

mix770

XLDnaute Impliqué
j'ai une solution, peut être pas très académique :eek: mais ça marche apparemment.
en début de macro je déprotège et en fin de macro je protège la feuille active puisque le bouton est sur la feuille.

ça sent un peu la bidouille à Dudule :D

ActiveSheet.Unprotect ("AAA")
ActiveSheet.Protect ("AAA")

tu en penses quoi ?
 

youky(BJ)

XLDnaute Barbatruc
Je déprotège l'onglet après l'avoir copié afin d'ôter les formules
Attention on va en bug si on copie 2 fois le même onglet
Bruno
VB:
Sub Copie_feuille_Active()
On Error Resume Next 'gestion de l'erreur
onglet = ActiveSheet.Name
If MsgBox("Envoyer " & onglet & " dans Consolidation_Exploitation ?", vbYesNo + vbExclamation, "COPIER L'ONGLET") = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks("Consolidation_Exploitation.xls").Activate
If Err > 0 Then
Err.Clear
chemfich = "D:\Applis\Bordereau présence Exploitation\Collecte_Résultats_Exploitation\Consolidation_Exploitation.xls"
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "fichier non trouvé": Exit Sub
End If
On Error GoTo 0
ThisWorkbook.Sheets(onglet).Copy after:=Workbooks("Consolidation_Exploitation.xls").Sheets(1)
With Workbooks("Consolidation_Exploitation.xls")
.Sheets(onglet).unprotect "tonMP"
.Sheets(onglet).UsedRange.value=.Sheets(onglet).UsedRange.value
.Sheets(onglet).protect "tonMP"
.save
.close
End with
ThisWorkbook.Activate: Range("A1").Select
Application.ScreenUpdating = True
MsgBox onglet & " a été copié dans Consolidation_Exploitation !"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 345
Membres
102 868
dernier inscrit
JJV