Problème de macro qui ne fonctionne qu'avec des points d'arrêts

Bonjour,

Je me permets de solliciter l'aide de ce forum pour un problème d'exécution de macro.

Le but de cette macro est de :

-Créer un nouveau classeur Excel (.xlsm) dans le dossier ici appelé "CHEMIN" avec comme nom de fichier la valeur de la cellule "Outillage" issue de la feuille(4) du classeur BASE

-Déplacer la feuille(4) du classeur BASE pour la mettre dans le nouveau classeur crée et supprimer la feuille vierge

-Fermer en enregistrant le nouveau classeur Excel

Voici le code en question :

Sub Aide()

Dim NomFichier

NomFichier = Workbooks("BASE.xlsm").Sheets(4).Range("Outillage")
Workbooks.Add.SaveAs Filename:=CHEMIN & NomFichier, FileFormat:=52

Workbooks(NomFichier & ".xlsm").Close

Application.DisplayAlerts = False

Set classeurFermé = Workbooks.Open(CHEMIN & NomFichier & ".xlsm")

    Workbooks("BASE.xlsm").Sheets(NomFichier).Move Before:=classeurFermé.Sheets(1)

    Sheets("Feuil1").Delete
    Application.DisplayAlerts = True
    classeurFermé.Close savechanges:=True

End Sub

Mon problème mon code ne fonctionne qu'en mettant des points d'arrêts sur les lignes :

Set classeurFermé = Workbooks.Open(CHEMIN & NomFichier & ".xlsm")

    Workbooks("BASE.xlsm").Sheets(NomFichier).Move Before:=classeurFermé.Sheets(1)

    Sheets("Feuil1").Delete
    Application.DisplayAlerts = True
    classeurFermé.Close savechanges:=True

Si le besoin s'en fait sentir que pourrais préparer un fichier test pour vous le diffuser.

D'avance je vous remercie de l'attention que vous porterez à ma demande,

Lunta

Bonjour,

Il y a plusieurs soucis dans votre

-Créer un nouveau classeur Excel (.xlsm) dans le dossier ici appelé "CHEMIN" avec comme nom de fichier la valeur de la cellule "Outillage" issue de la feuille(4) du classeur BASE

- Il faudrait connaitre où se trouve votre dossier "Chemin".
- Savoir aussi si votre fichier contenant la feuil4 à copier dans le nouveau fichier se trouve dans le dossier CHEMIN ou non
- Il vaut mieux nommer votre feuille 4 par son nom. Il suffirait que vous déplaciez l'onglet 4 dans votre fichier pour que sheets(4) soit un autre onglet

Merci pour votre réponse,

-Je l'ai renommer "CHEMIN" pour des questions de confidentialités, mais il s'agit d'un dossier dans mon OneDrive d'entreprise.

-Il s'agit toujours de la feuille(4) du classeur "BASE", son nom n'est pas fixe il est incrémenté.

Lunta

-Je l'ai renommer "CHEMIN" pour des questions de confidentialités, mais il s'agit d'un dossier dans mon OneDrive d'entreprise.

Hum.. pas facile. Je vais essayer de me faire comprendre

Depuis le code de votre fichier BASE
- vous créez chaque fois un nouveau fichier que vous nommez selon la valeur cellule outillage (exemple : Toto)
- dans ce fichier "Toto" vous ajoutez la feuil4 de votre fichier BASE
- vous sauvegardez dans le dossier CHEMIN créé sur le Onedrive de votre société

NB : CHEMIN reprend aussi l'adresse pour accéder à Onedrive --> exemple --> "c:\Lunta\nom du Dossier\"

Ai-je bien saisi ?

Dan,

C'est exactement ça !

Lunta

Re

Veillez à compléter le profil de votre compte en y indiquant la version excel (2007, 2013, 2019, MAC2011, .....) plutôt que VBA. C'est toujours plus facile pour celui qui doit vous répondre.


essayez le code comme ceci

Sub aide()
Dim NomFichier As String, chemin As String

With Workbooks("BASE.xlsm")
    NomFichier = .Sheets(4).Range("Outillage").Value
    chemin = "l'adresse de votre répertoire sur onedrive" 'c:\users\.......
    .Sheets(4).Copy
    With ActiveWorkbook
        .SaveAs Filename:=chemin & NomFichier, FileFormat:=52
        .Close
    End With
End With
End Sub

Dans la ligne Chemin = .... mettez le lien complet vers le onedrive y compris le dossier de destination. Ce lien doit être placé entre guillemets et se teriminer par un \

Si ok pensez à

Cordialement

Dan,

J'ai complété mon profil.

Cela fonctionne très bien, je ne saisie pas entièrement pourquoi la fonction "Activeworkbook" permette de créer un nouveau classeur.

Est-il possible de ne par laisser la feuille(4) du classeur "BASE" ? faire une sorte de Couper/Coller avec la feuille.

Lunta

pourquoi la fonction "Activeworkbook" permette de créer un nouveau classeur.

Ce n'est pas l'activeworkook qui crée le classeur mais la ligne COPY.
Vous pouvez faire cela sans code pour tester.
- Faite un clic droit sur l'onglet à copier dans un nouveau classeur
- choisissez l'option "déplacer copier"
- dans la rubrique "dans le classeur" choisir "nouveau classeur"
- cochez la case "créer une copie" si vous voulez copier la feuille vers le nouveau classeur
Par défaut le classeur actif sera le nouveau classeur dans lequel la feuille copiée se trouve. Ce qui correspond à Activeworbook en VBA

Est-il possible de ne par laisser la feuille(4) du classeur "BASE" ? faire une sorte de Couper/Coller avec la feuille.

Oui, dans le code vous remplacez simplement l'instruction COPY par CUT

Dan,

Merci beaucoup pour vos explications, mon problème est résolu.

Je clôture le sujet.

Bonne continuation,

Lunta

Rechercher des sujets similaires à "probleme macro qui fonctionne points arrets"