Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC Copier, Exporter, Sauvegarder

nobodyuse

XLDnaute Occasionnel
Bonjour à tous

j'ai un classeur composé de plusieurs feuilles; 4 par Années comme suis (Janv2021, Mai2021, Sept2021 et Bilan2021, ....)
Depuis ma feuille Bilan2021 j'ai une macro qui convertie les résultats des formules en données afin d’être réutilisé a partir de Janv de l'année suivant ceci dans le but de pouvoir supprimer les feuilles de l'année passée

je cherche un moyen fiable d'automatiser au passage lors de l'utilisation de la macro de sauvegarder les feuilles Janv2021, Mai2021 et Sept2021 dans un nouveau classeur qui serai sauvegardé dans le même répertoire que le classeur initial (Sur serveur d'entreprise) et de supprimer les 3 feuilles précédemment de mon classeur actif.

en cherchant sur le forum j'ai trouvé quelques macro VBA que j'ai testé, mais soit elle me provoque une erreur 400, soit me crée et ouvre le nouveau classeur mais sans me le sauvegarder sans mon intervention dans mon dossier... pour l'instant pas de solution qui me conviennent.

voici la derniere macro en test (macro de copie te sauvegarde de Job75) mais j'ai une erreur 400

VB:
Sub ConvertFormulasToValuesInActiveWorksheet2021()
 ' protection de la macro par code
Dim strPw As String
strPw = "TOTO"

If InputBox("Saisissez le mot de passe", "Accès à la macro") <> strPw Then
MsgBox ("Mot de passe erroné")
Exit Sub
Else
MsgBox ("Mot de passe correct, les fonctions de sauvegarde et de conversion vont s'exécuter, cela peux prendre quelques minutes soyez patient !")
End If

'creation d'un nouveau fichier excel


Dim s As Object, lien, i&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(Array("Janv2021", "Mai2021", "Sept2021")).Copy
With ActiveWorkbook
  For Each s In .Sheets: s.DrawingObjects.Delete: Next
  lien = .LinkSources
  If Not IsEmpty(lien) Then
    For i = 1 To UBound(lien)
      .BreakLink lien(i), xlExcelLinks
    Next
  End If
  .SaveAs ThisWorkbook.Path & "\Saveconsigneapoints2021", 51
  .Close
End With
ActiveCell.Activate



 '---m---
    Application.ScreenUpdating = True
    MsgBox "le fichier de sauvegarde a été créer, la convertion des données vas debuter "


' Transforme les formules en valeur brutes
    Dim rng As Range
    For Each rng In ActiveSheet.UsedRange
        If rng.HasFormula Then
            rng.Formula = rng.Value
        End If
    Next rng
    
     Application.ScreenUpdating = True
    MsgBox "sauvegarde et convertion terminé merci d'avoir patienté "
End Sub
 

nobodyuse

XLDnaute Occasionnel

Vous etes au top

oui oui en effet c’était voulu de supprimer les feuilles une fois archivées
tu a utilisé une technique a priori plus simple si j'ai bien compris car ton code les déplaces, méthode plus rapide
dommage que ça ne fonctionne pas comme il faut mais je pense que mon fichier est ptet en cause car trop gros, cela me semble être un casse tête!
a moins d'arriver a faire marcher le code du post #4

je vais déjà proposer mon idée sans l'archivage des pages qui me semble bien compliqué le principal était déjà de figer les formules en données brutes ce qui permet la suppression des pages anciennes
 

Staple1600

XLDnaute Barbatruc
Re

Je ne peux pas t'en dire plus car
1) Je ne suis pas Maciste
2) Je n'ai pas ton fichier original sous les yeux
(ni même une copie allégée et anonymisée déposée sur le forum)

Tout ce que je sais, et ça je la sais (comme chantait Jean Moncorgé au siècle dernier) , c'est mes codes et mon fichier exemple fonctionnent sur mon PC.
 

nobodyuse

XLDnaute Occasionnel
Je n’en doute je ne permettrai pas de mettre les compétences des autres (que je n’ai pas) en doute !
J’avais pour un autre post essayer de mettre mon fichier original mais il est trop gros et ne passe pas !
Selon les retours que j’aurai de la proposition je reviendrai vers vous avec une version allégée
En tous cas un grand merci comme toujours !
vous êtes au top

ps: question bête un bouquin à conseiller pour débuter en VBA pour un novice ?
 

Staple1600

XLDnaute Barbatruc
Re

Le premier conseil
1) L'enregistreur de macros
2) la touche F1 qui désormais mène ici
3) le world wide web (notamment anglophone puis le VBA se cause dans la langue de William S.)


NB: Qui dit version allégée, dit version sans les cochoncetés d'usage
images, bordures, couleurs etc...
On juste besoin des feuilles avec une vingtaine de lignes par feuilles
(et le projet VBA actuel en incluant les UserForms si il y en a)
Et ne pas oublier de zipper le classeur avant de le joindre dans la discussion.
 

nobodyuse

XLDnaute Occasionnel
Bonjour Stapple
bien que j'ai abandonné l'idée de sauvegarder les feuilles dans un autre fichier
je me rend compte que mon fichier est trop volumineux et de ce fait lent
sans doute que j'ai trop de formules liées entre elle, la mise en page y est peut être aussi pour quelques chose, je voulais soumettre mon fichier pour juste une année de manière a ce que tu puisse voir et me donner des conseils mais la encore il semblerai qu'il reste trop "volumineux" même zippé (4,8mo)
étant novice je m'y suis sans doute mal pris quelque part dans la création de mes feuilles :/

je te joint quand même a défaut du fichier une image si par cas tu avais une idée


oui je sais c'est un autre sujet... pas taper sur moi
 

Discussions similaires

Réponses
10
Affichages
551
Réponses
6
Affichages
432
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…