Copie d'une feuille dans un autre fichier

Résolu
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai un fichier que j'ai nommé de la manière suivante:

ActiveWorkbook.SaveAs Chemin3 + Semaine3 + Espace1 + NomFichier3 + Espace1 + Centre3

Je souhaite inclure une feuille dans ce fichier, voilà ce que j'ai écrit et qui ne fonctionne pas:

Windows("Bénéficiaires hiver 15-16").Activate
Sheets("Interface").Activate
ActiveSheet.Copy after:=Workbooks(Chemin3 + Semaine3 + Espace1 + NomFichier3 + Espace1 + Centre3).Sheets(1)

Je suis persuadé que quelqu'un aura une petite idée.
Merci d'avance
Cordialement

A voir également:

53 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
C'est du code boiteux... !
Pouvez-vous indiquer :
le nom exact du classeur y compris son extension........
le chemin exact de ce classeur ....
Dans quel classeur se trouve la procédure......

0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
En effet le code est sûrement boiteux à l'image de mon inexpérience !
Je reprends une partie plus longue de la procédure
La feuille "Bilan du centre" appartient à un fichier "Bénéficiaires hiver 15-16" d'extension "xlsm" et qui porte la procédure.

Sheets("Bilan du centre").Activate
ActiveSheet.Unprotect Password:="sotser"
ActiveSheet.Copy
Dim Semaine3 As String
Dim Chemin3 As String
Dim NomFichier3 As String
Dim Centre3 As String
Chemin3 = "C:\Bilans du centre hiver 15-16\"
NomFichier3 = "Bilan du centre de"
Semaine3 = Range("T5").Value
Semaine3 = Right("S" + Semaine3, 3)
Centre3 = Range("B3").Value
ActiveWorkbook.SaveAs Chemin3 + Semaine3 + Espace1 +
NomFichier3 + Espace1 + Centre3
Range("A1").Select
Sheets("Bilan du centre").Activate
ActiveSheet.Select
Range("A1:X51").Select
Range("A1:X51").Activate
ActiveSheet.Protect Password:="sotser", DrawingObjects:=True, Contents:=True, _
Scenarios:=Ttrue
Range("T23").Select
ActiveWorkbook.Save

Dans ce fichier créé et enregistré je veux ajouter une feuille "Interface" qui appartient, elle aussi au fichier "Bénéficiaires hiver 15-16".

Windows("Bénéficiaires hiver 15-16").Activate
Sheets("Interface").Activate
ActiveSheet.Copy after:=Workbooks(Chemin3 + Semaine3 + Espace1 + NomFichier3 + Espace1 + Centre3).Sheets(1)

Je ne suis pas allé jusque là mais je pense qu'il faudra couper les liaisons avec le fichier "Bénéficiaires hiver 15-16".
En effet dans le fichier "Bénéficiaires hiver 15-16" la feuille "Interface" est renseignée par le feuille "Bilan du centre".
Je n'ai pas besoin de l'extension "xlsm" pour le fichier qui est créé sous le nom de "Chemin3 + Semaine3 + .."

J'espère avoir répondu aux différentes interrogations

Cordialement
0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Je me rends comte que j'ai une erreur dans l'extrait de procédure:

Il faut supprimer les lignes:

ActiveSheet.Select
Range("A1:X51").Select
Range("A1:X51").Activate

Merci
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour le code partiel (le complet serait préférable .... Mais bon ...).
Cependant ceci manque :
le chemin exact de ce classeur ....

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense que le classeur concerné est le classeur "Bénéficiaires hiver 15-16", son chemin complet est:

C:\AD63 hiver 15-16\Bénéficiaires hiver 15-16.xlsm
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci, donc chemin différent pour le nouveau classeur [C:\Bilans du centre hiver 15-16\], proposition va suivre en fin de journée.

Salutations.
Le Pingou
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pouvez-vous me fournir les valeurs qui se trouvent dans les cellules [T5] et [B3] de la feuille [Bilan du centre]...
Merci

0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
En attendant vous pouvez essayer cette procédure qui créer un nouveau classeur avec les 2 feuilles dont [Bilan du centre] garde la protection (MDP...).
La procédure :
Sub essai_zikey_ccm()
Dim clso As Workbook
Dim Chemin As String, NomFichier As String
Set clso = ActiveWorkbook
Chemin = "C:\Bilans du centre hiver 15-16\"
Application.ScreenUpdating = False
With Sheets("Bilan du centre")
    NomFichier = Right("S" & .Range("T5").Value, 3) & " Bilan du centre de " & .Range("B3").Value & ".xlsx"
    .Copy
    ActiveWorkbook.SaveAs Chemin & NomFichier
End With
clso.Sheets("Interface").Copy After:=Workbooks(NomFichier).Sheets(1)
Application.ScreenUpdating = True
Set clso = Nothing
End Sub

0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Tout d'abord merci pour votre aide précieuse.
T5 = N° de semaine donc avec "S" donne "S26"
B3= Nom du centre
En conclusion le chemin du fichier sauvegardé est:
C:\Bilans hiver 15-16\S26 Bilan du centre de Rochefort Montagne.
Par contre aujourd'hui je vais être sur la route et j'essaierai votre proposition demain matin.
Encore merci
Cordialement
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour les informations, c'est parfait.
En marge, dans les divers noms de répertoire, feuille et classeur, pour éviter des erreurs dans les programmes, il serait préférable d'éviter les espaces vides et de les remplacer par signe souligné ( _ ).
Exemple : [S26_Bilan_du_centre_de_Rochefort_Montagne] au lieu de : [S26 Bilan du centre de Rochefort Montagne]

0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Encore merci, comme annoncé je modifierai la procédure demain
Concernant les noms de fichier j'inclue "un espace", voir mon message du 25/02 à 8h 16
Je vous tiens informé demain
Cordialement
0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Je n'ai repris le clavier qu'aujourd'hui et malheureusement j'ai un message d'erreur.
"Erreur de compilation"
"Utilisation incorrecte de la propriété"

au niveau de la ligne
Application.ScreenUpdating = False

Merci pour votre aide
Cordialement
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Etrange, merci de préciser ce que vous avez modifier par rapport à ma proposition...!
0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
J'ai inséré la partie de procédure(20) que vous m'avez proposée à la suite de la partie suivante (19):

'19) Création du fichier "Sxx Bilan du centre Nom du centre".
'Protection de la feuille "Bilan du centre".
'Enregistrement du fichier "Sxx Bilan du centre Nom du centre"
'dans le dossier "Bilans du centre hiver 15-16".

Sheets("Bilan du centre").Activate
ActiveSheet.Unprotect Password:="sotser"
ActiveSheet.Copy
Dim Semaine3 As String
Dim Chemin3 As String
Dim NomFichier3 As String
Dim Centre3 As String
Dim Extension As String
Extension = ".xlsm"
Chemin3 = "C:\Bilans du centre hiver 15-16\"
NomFichier3 = "Bilan du centre de"
Semaine3 = Range("T5").Value
Semaine3 = Right("S" + Semaine3, 3)
Centre3 = Range("B3").Value
ActiveWorkbook.SaveAs Chemin3 + Semaine3 + Espace1 +
NomFichier3 + Espace1 + Centre3 + Extension
Range("A1").Select
Sheets("Bilan du centre").Activate
ActiveSheet.Select
Range("A1:X51").Select
Range("A1:X51").Activate
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect Password:="sotser", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
ActiveWorkbook.Save


'20) Copie de la feuille "Interface" du fichier "Bénéficiaires hiver 15-16" dans le fichier "Sxx Bilan du centre de...".

Dim clso As Workbook
Dim Chemin4 As String, NomFichier4 As String
Set clso = ActiveWorkbook
Chemin4 = "C:\Bilans du centre hiver 15-16\"
Application ScreenUpdating = False
With Sheets("Bilan du centre")
NomFichier4 = Right("S" & .Range("T5").Value, 3) & "Bilan du
centre de" & .Range("B3") .Value & ".xlsm"
.Copy
ActiveWorkbook.SaveAs Chemin4 & NomFichier4
End With
clso.Sheets("Interface").Copy after:=Workbooks(NomFichier4). _
Sheets(1)
Application ScreenUpdating = True
Set clso = Nothing
Sheets("Bilan du centre").Activate
Range("T23").Select

En vous souhaitant bonne lecture

Encore merci pour votre aide et votre patience

Cordialement
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Je pense que vous manipulez les lignes de codes sans bien vous rendre compte du fonctionnement.... !
Avant de poursuivre je vous prie d'essayer la procédure proposée (poste 8) et me dire si cela marche correctement.
En marge : lorsque vous insérez une procédure dans un message il est préférable de la formatée.., pour ce faire vous sélectionnez la procédure (ou les lignes de code) et ensuite clic sur l'icône (triangle pointe en bas) et clic sur [basic]
Exemple :
Sub essai_zikey_ccm()
Dim clso As Workbook
Dim Chemin As String, NomFichier As String
Set clso = ActiveWorkbook
........
........
Set clso = Nothing
End Sub

0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Comme je l'avais annoncé au début, je n'ai eu aucune formation sur VBA, j'ai appris seul en utilisant le développeur, les forums et un livre pour débutant.
D'ailleurs je suis à la recherche d'un autre livre me permettant de me "formater" au VBA.
Beaucoup de termes me sont inconnus.
Je comprends votre exaspération et je comprendrais très bien que vous souhaitiez de quitter cette discussion.
Je pense avoir compris votre dernière demande et je vais l'essayer de suite.
Cordialement
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour l'information.
J'attends donc la réponse pour être en mesure de poursuivre.
Dans la foulé, profitez-en pour une petite explication de l'ensemble de votre application (dans les grandes lignes).

0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Petit complément ; pour éviter toute confusion avec vos procédures, vous insérez un nouveau module et y copier ma procédure et ensuite vous la lancez... !

0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
C'est ce que j'ai fait mais j'ai toujours le même message au niveau de la ligne "Application", la première.
"Erreur de compilation"
"Utilisation incorrecte de la propriété".
Je vais prendre le temps de faire le ménage dans la macro pour tout recaler dans ma tête !
Je reprendrai ce dossier chez moi en fin d'après-midi.
En attendant, quelques explications au sujet de cette procédure:
Je fais partie de l'équipe informatique, pas de pro mais que des amateurs, de l'association départementale 63 des restos du coeur. Les 20 centres du département seront équipés du fichier "Bénéficiaires hiver 15-16" qui porte les différentes procédures.
Ce fichier est le fichier de base, il sert à relever les familles qui ont été présentes à la distribution hebdomadaire des centres, ceci permettant d'évaluer la quantité de nourriture distribuée afin de provoquer le ravitaillement par les entrepôts départemental et national.
Donc ce fichier comporte plusieurs feuilles dont 3 sont concernées par la macro
"Saisir les Présences", cette feuille en plus de saisies manuelles reçoit des informations de 2 autres feuilles et transmet des valeurs à la feuille "Bilan du centre". Cette feuille est enregistrée dans un fichier nommé "Sxx saisie des Présences" est enregistré dans un dossier "Présences hiver 15-16"
"Bilan du centre" est rempli par les autres feuilles et alimente la feuille "Interface".
La feuille "Bilan du centre" est enregistrée dans un fichier nommé "Sxx Bilan du centre de (nom du centre) stocké dans un dossier "Bilans du centre hiver 15-16".
Dans ce fichier créé on inclut la feuille "Interface", attention il ne faut copier que les valeurs.
Ce fichier est alors expédié par notre messagerie interne à 3 adresses pre définies.
Ensuite les 2 feuilles "Bilan du centre" et "Interface" sont imprimées.
La feuille "Interface" a été créée parce qu'il n'y a pas de passerelle entre Excel et le logiciel national.

Encore merci pour votre patience et votre aide

Cordialement
0
zikey Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,
J'ai réussi à faire fonctionner la procédure que vous m'avez donnée en dehors de la mienne.
Je vais continuer en l'intégrant.
Encore merci
J'attends une réponse éventuelle de votre part et ensuite je clôturerai cette discussion
Cordialement
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Je lirai l'autre message (19) demain.
Content pour vous que cela fonctionne.
Je suis curieux de connaitre la raison du problème .....("Utilisation incorrecte de la propriété")... !
Salutations.
Le Pingou
0