exécuter une macro après suppression d'un onglet

Le
GGAL
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier…
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #6595861
Après avoir lu la question rapidement, essaie ceci ...
Et si ça marchais ? ;-)))

Sub Workbook_SheetActivate(ByVal sh As Object)
Application.EnableEvents = False
Call maj
Application.EnableEvents = True
End Sub




"GGAL"
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier.
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal
GGAL
Le #6595841
Non, c'est pareil. Le déplacement des onglets ne se fait pas.
Ggal


Après avoir lu la question rapidement, essaie ceci ...
Et si ça marchais ? ;-)))

Sub Workbook_SheetActivate(ByVal sh As Object)
Application.EnableEvents = False
Call maj
Application.EnableEvents = True
End Sub




"GGAL"
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier.
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal





MichDenis
Le #6595821
Moi pas savoir ce que contient cette macro : Call maj

mais si tu cliques dans ta liste déroulante, et tout ce place, pourquoi
ne pas appeler après "maj", le code inscrit dans la procédure du "clic"
sur ta liste déroulante.

Pour pouvoir appeler une macro à partir d'un autre module, tu n'as qu'à enlever
le mot "Private" à ta macro "click" sur ta liste déroulante ou
utiliser ceci : Application.Run "NomDuModule.NomDeLaMacro"

Au delà ce ça, je ne sais pas.





"GGAL"
Non, c'est pareil. Le déplacement des onglets ne se fait pas.
Ggal


Après avoir lu la question rapidement, essaie ceci ...
Et si ça marchais ? ;-)))

Sub Workbook_SheetActivate(ByVal sh As Object)
Application.EnableEvents = False
Call maj
Application.EnableEvents = True
End Sub




"GGAL"
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier.
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal





GGAL
Le #6596671
Bon,

La macro de la liste déroulante :
Sub immeuble()
ActiveSheet.Range("b7") = Range("a62").Value
feuil = Mid(Range("b7").Value, 1, 30)
nommage
maj
Sheets(feuil).Activate
End Sub

La macro "maj", un peu raccourci, mais c'est le principe

Sub maj()
nbligne = Sheets("Récap").Range("a65536").End(xlUp).Row
nbfeuil = Sheets.Count
With Sheets("Récap").Range("A3:F" & nbligne)
.ClearContents
.Borders.ColorIndex = -1
End With
For vfeuil = 3 To nbfeuil
With Sheets("récap")
.Cells(vfeuil, 1).FormulaLocal = "='" & Sheets(vfeuil).Name & "'!b7"
.Cells(vfeuil, 2).FormulaLocal = "=arrondi('" & Sheets(vfeuil).Name & "'!E55
/ '" & Sheets(vfeuil).Name & "'!E58*100;2)"
.Cells(vfeuil, 3).FormulaLocal = "=arrondi('" & Sheets(vfeuil).Name & "'!E56
/ '" & Sheets(vfeuil).Name & "'!E58*100;2)"
End With
Next vfeuil
End Sub

Est-ce plus clair ?

Ggal


Moi pas savoir ce que contient cette macro : Call maj

mais si tu cliques dans ta liste déroulante, et tout ce place, pourquoi
ne pas appeler après "maj", le code inscrit dans la procédure du "clic"
sur ta liste déroulante.

Pour pouvoir appeler une macro à partir d'un autre module, tu n'as qu'à enlever
le mot "Private" à ta macro "click" sur ta liste déroulante ou
utiliser ceci : Application.Run "NomDuModule.NomDeLaMacro"

Au delà ce ça, je ne sais pas.





"GGAL"
Non, c'est pareil. Le déplacement des onglets ne se fait pas.
Ggal


Après avoir lu la question rapidement, essaie ceci ...
Et si ça marchais ? ;-)))

Sub Workbook_SheetActivate(ByVal sh As Object)
Application.EnableEvents = False
Call maj
Application.EnableEvents = True
End Sub




"GGAL"
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier.
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal










GGAL
Le #6601141
J'ai trouvé où il fallait mettre les deux lignes : dans la macro Sub
Immeuble() et non dans la macro Sub Workbook_SheetActivate(ByVal sh As Object)

Merci MichDenis

Ggal

Sub immeuble()

Application.EnableEvents = False
MaMacro


Application.EnableEvents = True
End Sub



Bon,

La macro de la liste déroulante :
Sub immeuble()
ActiveSheet.Range("b7") = Range("a62").Value
feuil = Mid(Range("b7").Value, 1, 30)
nommage
maj
Sheets(feuil).Activate
End Sub

La macro "maj", un peu raccourci, mais c'est le principe

Sub maj()
nbligne = Sheets("Récap").Range("a65536").End(xlUp).Row
nbfeuil = Sheets.Count
With Sheets("Récap").Range("A3:F" & nbligne)
.ClearContents
.Borders.ColorIndex = -1
End With
For vfeuil = 3 To nbfeuil
With Sheets("récap")
.Cells(vfeuil, 1).FormulaLocal = "='" & Sheets(vfeuil).Name & "'!b7"
.Cells(vfeuil, 2).FormulaLocal = "=arrondi('" & Sheets(vfeuil).Name & "'!E55
/ '" & Sheets(vfeuil).Name & "'!E58*100;2)"
.Cells(vfeuil, 3).FormulaLocal = "=arrondi('" & Sheets(vfeuil).Name & "'!E56
/ '" & Sheets(vfeuil).Name & "'!E58*100;2)"
End With
Next vfeuil
End Sub

Est-ce plus clair ?

Ggal


Moi pas savoir ce que contient cette macro : Call maj

mais si tu cliques dans ta liste déroulante, et tout ce place, pourquoi
ne pas appeler après "maj", le code inscrit dans la procédure du "clic"
sur ta liste déroulante.

Pour pouvoir appeler une macro à partir d'un autre module, tu n'as qu'à enlever
le mot "Private" à ta macro "click" sur ta liste déroulante ou
utiliser ceci : Application.Run "NomDuModule.NomDeLaMacro"

Au delà ce ça, je ne sais pas.





"GGAL"
Non, c'est pareil. Le déplacement des onglets ne se fait pas.
Ggal


Après avoir lu la question rapidement, essaie ceci ...
Et si ça marchais ? ;-)))

Sub Workbook_SheetActivate(ByVal sh As Object)
Application.EnableEvents = False
Call maj
Application.EnableEvents = True
End Sub




"GGAL"
Bonjour,

Mon classeur est composé de plusieurs onglets représentant des villes, un
onglet Récap et d'un autre onglet de travail.
Pour chaque onglet ville, j'ai une zone de liste déroulante (méthode par
formulaire) me donnant nom des villes, et associée à une macro (nommage) qui
me permet de renommer l'onglet selon la ville choisie, puis de classer ces
onglets villes par ordre alphabétique à partir du 3e onglet.
Ensuite une autre macro (maj) fait une récap des données dans la feuille
récap.
Pour ajouter un onglet-ville : clic droit dans l'onglet, Déplacer ou copier.
Créer une copie. La liste déroulante fait la mise à jour.
Mais lorsque je supprime un onglet, j'aurais souhaité que la récap se fasse
automatiquement, plutôt que cliquer une fois dans ma liste un nom au hasard
et revenir au nom initial.

J'ai pensé mettre dans ThisWorkbook la macro suivante :

Sub Workbook_SheetActivate(ByVal sh As Object)
Call maj
End Sub

Elle marche très bien à chaque changement d'onglet, et lors de la
suppression d'un onglet. Mais lorsque j'ajoute un nouvel onglet-ville, j'ai
bien un renommage de l'onglet, je n'ai plus de classement alphabétique.

Comment faire ?
Désactiver peut-être temporairement la macro Call maj ?

Merci à vous,

Ggal












Publicité
Poster une réponse
Anonyme