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

Masquer l'execution d'une macro concernant la creation d'un nouveau classeur

  • Initiateur de la discussion Initiateur de la discussion jibdu64
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jibdu64

Guest
Bonjour,

j'ai un bouton sur ma feuille Excel qui lorsque on le déclenche crée un nouveau classeur Excel dans lequel il stocke certaines données. Ce code marche très bien.

Cependant, j'aimerais masquer l'exécution de ce code et donc que le nouveau classeur ne s'ouvre que a la fin de la macro, car si l'on clique sur le nouveau classeur quand il s'est généré pendant que la macro tourne, celle-ci se stoppe, ce qui me déclenche des erreurs car tout le code ne s'est pas exécuté.

j'ai essayé ce code :

Application.ScreenUpdating = False

Mais il ne masque rien, je suppose car c'est un nouveau classeur qui se crée ..

Auriez-vous une solution ?

Merci d'avance.
 
Re : Masquer l'execution d'une macro concernant la creation d'un nouveau classeur

Bonjour,

Plusieurs solutions s'offrent à vous :
-Spécifier dans votre code le classeur concerné (ThisWorkbook pour le classeur contenant ce code)
-Ne pas afficher le nouveau classeur qui se créé, avec la propriété .Visible = False, et donc ne pas oublier de repasser à True à la fin
-Après la création du second classeur, activer à nouveau le premier avec ThisWorkbook.Activate

Si les informations dans votre fichier ne sont pas confidentielles, il serait bien de le joindre avec votre demande, ou à défaut votre code.
 
Re : Masquer l'execution d'une macro concernant la creation d'un nouveau classeur

Oui désolé, voici mon code :

Private Sub CommandButton1_Click()

'################################################################################################################
' GENERATION NOUVEAU CLASSEUR
'################################################################################################################
'
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet



Call RépertoireExiste("J:\agent\" & ComboBox1.Value)
Call RépertoireExiste("J:\agent\" & ComboBox1.Value & "\" & ComboBox2.Value)



'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 7)
xlApp.SheetsInNewWorkbook = 7
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs ("J:\agent\" & ComboBox1.Value & "\" & ComboBox2.Value & "\" & ComboBox3.Value & " Feuille suivi VH")
'On rend le classeur visible
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Set xlSheet = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlSheet.Name = "Cycle 1"
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
Set xlSheet = Nothing
'
'
Set xlSheet = xlBook.Worksheets(2)
xlSheet.Name = "Cycle 2"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(3)
xlSheet.Name = "Cycle 3"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(4)
xlSheet.Name = "Cycle 4"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(5)
xlSheet.Name = "Cycle 5"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(6)
xlSheet.Name = "Cycle 6"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(7)
xlSheet.Name = "Cycle 7"

'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3



Set f = Worksheets("BD_saison")
Set g = Worksheets("BD_agents")
Set h = Worksheets("BD_centres")

n = WorksheetFunction.CountA(f.Columns(1))
m = WorksheetFunction.CountA(g.Columns(1))
o = WorksheetFunction.CountA(h.Columns(1))


'################################################################################################################
' REMPLISSAGE DU NOUVEAU CLASSEUR
'################################################################################################################

For i = 1 To m
If ComboBox3.Value = g.Cells(i, 2) & " " & g.Cells(i, 3) Then
For j = 1 To o
If h.Cells(j, 4) = g.Cells(i, 1) Then
team = h.Cells(j, 3)
End If
Next j
End If
Next i
 
Re : Masquer l'execution d'une macro concernant la creation d'un nouveau classeur

Impeccable, essaie donc ceci :

Code:
Private Sub CommandButton1_Click()

'################################################# ################################################## #############
' GENERATION NOUVEAU CLASSEUR
'################################################# ################################################## #############
'
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet



Call RépertoireExiste("J:\agent\" & ComboBox1.Value)
Call RépertoireExiste("J:\agent\" & ComboBox1.Value & "\" & ComboBox2.Value)



'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 7)
xlApp.SheetsInNewWorkbook = 7
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs ("J:\agent\" & ComboBox1.Value & "\" & ComboBox2.Value & "\" & ComboBox3.Value & " Feuille suivi VH")
'On rend le classeur visible **(Modif NQC)**
xlApp.Visible = False

'Modif NQC
For i = 1 To 7
  Set xlSheet = xlBook.Worksheets(i)
  xlSheet.Name = "Cycle " & i
Next

Set xlSheet = Nothing

'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3



Set f = xlBook.Worksheets("BD_saison") '**Modif NQC : ajout xlBook. **
Set g = xlBook.Worksheets("BD_agents")
Set h = xlBook.Worksheets("BD_centres")

n = WorksheetFunction.CountA(f.Columns(1))
m = WorksheetFunction.CountA(g.Columns(1))
o = WorksheetFunction.CountA(h.Columns(1))


'################################################# ################################################## #############
' REMPLISSAGE DU NOUVEAU CLASSEUR
'################################################# ################################################## #############

For i = 1 To m
If ComboBox3.Value = g.Cells(i, 2) & " " & g.Cells(i, 3) Then
For j = 1 To o
If h.Cells(j, 4) = g.Cells(i, 1) Then
team = h.Cells(j, 3)
End If
Next j
End If
Next i

xlApp.Visible = True
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

W
Réponses
4
Affichages
3 K
WhatIsVBA
W
L
Réponses
1
Affichages
1 K
Ludwig74
L
C
Réponses
10
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…