XL pour MAC Tableau liaison

CVINCE

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide pour la chose suivante svp

J'ai mon classeur excel avec 6 feuilles.

J'aimerai exporter seulement la première feuille de ce classeur dans un "nouveau classeur" et dans un nouveau dossier.

Pourquoi ? car certaines personnes ne doivent avoir accès seulement à la premier feuille. C'est à dire que lorsque je ferai mes mises à jour automatiquement la mise à jour ce fera dans l'autre classeur.

Dans cette première feuille il y a des valeurs, formats : couleurs etc. mais aussi ma formule que j'ai créé dans VBA : pour calculer les couleurs.

Avez-vous une solution pour que je puisse répondre à cette demande ?

Pour information, mon responsable ne veut mettre de mot de passe sur les autres feuilles.

Merci pour votre retour.

Belle journée :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cvince,
Un essai possible :
VB:
Sub ExportFeuille()
    Dim Nom$, Chemin$
    Set F = Sheets("Feuil2")                        ' Mettre le nom de la feuille à exporter
    Nom = "Essai"                                   ' Nom du nouveau fichier
    Chemin = ThisWorkbook.Path & "\" & Nom & ".xls" ' Adapter xls, xlsx,xlsm
    F.Select: F.Copy                                ' Copie, colle et ferme nouvelle feuille
    ActiveWorkbook.SaveAs Filename:=Chemin, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    ActiveWindow.Close
End Sub
J'ai supposé que votre VBA a mis les couleurs en "dur" et qu'aucune formule ne fait références à d'autre feuille.
J'ai laissé l'alerte si le fichier existe avant d'enregistrer. Le fichier est enregistré au même niveau que votre fichier principal.

Attention, sur MAC je crois que c'est "/" et non "\". A tester.
 

CVINCE

XLDnaute Nouveau
Je vous partage mon code :

Tout va se copier mais pas ma formule que j'ai créé dans VBA. Ca va me mettre #NOM

Sub Bouton1_Cliquer()

On Error Resume Next

Application.DisplayAlerts = False

'CHECK IF FILE EXISTS

Dim strFileName As String

Dim strFileExists As String

Dim strFileNameEND As String

Dim strFileExistsEND As String

strFileName = "/Chemin dossier/myFileName.xlsm"

strFileExists = Dir(strFileName)

If strFileExists <> "" Then

Kill strFileName

End If

'EXPORT SHEET

ThisWorkbook.Sheets(Array("Nom dossier")).Copy

ActiveWorkbook.SaveAs FileName:="Chemin dossier/myFileName.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

ActiveWorkbook.Close

MsgBox "Fichier exporté avec succès"

'COPY SPECIAL VALUES

'declare variables

Dim wb As Workbook

Dim ws As Worksheet

Dim wb2 As Workbook

Dim ws2 As Worksheet

Set wb = Workbooks.Open("/Chemin dossier.xlsm")

'open and activate the workbook

wb.Activate

Set ws = Worksheets("nom dossier")

'Copy special

ws.Range("A5:A7").Copy

'wb.Close

'Paste special

Set wb2 = Workbooks.Open("/Chemin dossier/myFileName.xlsm")

vb2.Activate

Set ws2 = Worksheets("Nom dossier")

'ws2.Range("A5:A7").Select

ActiveSheet.Paste Destination:=Worksheets("nom dossier").Range("A5:A7")

wb2.Close


'MOVE FILE

strFileNameEND = "/Chemin dossier nouveau /myFileName.xlsm"

strFileExistsEND = Dir(strFileName)

If strFileExistsEND <> "" Then

Kill strFileNameEND

End If

Name "/Chemin dossier /myFileName.xlsm" As _

"/Chemin dossier nouveau/myFileName.xlsm"

MsgBox "Fichier déplacé avec succès"


End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai supposé que votre VBA a mis les couleurs en "dur" et qu'aucune formule ne fait références à d'autre feuille.
C'était l'hypothèse. Evidemment si des formules sont calculées en VBA alors elles perdent leurs valeurs lors de l'exportation.
Il n'y a qu'une cellule qui contient une formule VBA ?
S'il n'y en a que quelques unes, on pourra faire un copier coller valeurs avant de fermer le fichier de sauvegarde.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Un essai mais sans l'avoir testé :
VB:
Sub ExportFeuille()
    Dim Nom$, Chemin$, MaCellule
    Set F = Sheets("Feuil2")                        ' Mettre le nom de la feuille à exporter
    Nom = "Essai"                                   ' Nom du nouveau fichier
    Chemin = ThisWorkbook.Path & "\" & Nom & ".xls" ' Adapter xls, xlsx,xlsm
    MaCellule = Range("A1").Value                   ' Mémorisation de la valeur calculée en VBA
    F.Select: F.Copy                                ' Copie, colle et ferme nouvelle feuille
    ActiveWorkbook.SaveAs Filename:=Chemin, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Range("A1").Value = MaCellule                   ' Collage de la valeur de la variable
    ActiveWindow.Close
End Sub
MaCellule = Range("A1").Value on mémorise la valeur avant de copier coller la feuille
Range("A1").Value = MaCellule on écrit cette valeur dans la feuille créee
 

Discussions similaires

Réponses
9
Affichages
319

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 185
dernier inscrit
Laurent.