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

jibdu64

XLDnaute Nouveau
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.
 

NezQuiCoule

XLDnaute Occasionnel
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.
 

jibdu64

XLDnaute Nouveau
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
 

NezQuiCoule

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 677
dernier inscrit
Amrani