Fin d'une macro et retour à Excel

zazou5908

XLDnaute Nouveau
Bonjour à tous les as d'excel !

Avec l'aide de ce forum, j'ai fait une petite macro qui cache ou qui affiche des lignes en fonction du contenu des cellules de la colonne R.

Voici la macro:

Private Sub ToggleButton1_Click()

Dim cell As Range
Dim maplage As Range


If ToggleButton1 = True Then
ToggleButton1.Caption = "Masquer lignes vides"
ActiveSheet.Rows.Hidden = False
Else
ToggleButton1.Caption = "Afficher tout"
Set maplage = Feuil2.Range("R1:R7416")
For Each cell In maplage
If cell.Value = 0 Then cell.EntireRow.Hidden = True

Next

End If

End Sub


Tout marche comme je veux mais je souhaiterais l'améliorer.

1) y a -t-il moyen d'éviter le raffaraîchissement de l'écran pendant l'opération de masquages des lignes. Cela donne un effet de vague assez "laid" et remplacer cela par un message du style "Masquage des lignes en cours" et le faire disparaître quand c'est terminé.

2) quand la macro est terminée, on ne le voit pas et il faut cliquer dans une cellule pour récupérer le curseur et la main ! Y'a-t-il moyen que cette opération se fasse automatiquement à la fin de la macro ?

D'avance merci pour l'aide

Jean
 

Pierrot93

XLDnaute Barbatruc
Re : Fin d'une macro et retour à Excel

Bonjour Jean

pour éviter le raffraichissement d'écran utilises la ligne de code ci dessous en début de macro :

Code:
Application.ScreenUpdating = False

a remmettre à "True" à la fin.

pour ta 2ème question, si j'ai bien compris, peut être sélectionner une cellule à la fin :

Code:
Range("A1");Select

bonne journée
@+
 
C

Compte Supprimé 979

Guest
Re : Fin d'une macro et retour à Excel

Bonjout tout le monde,
Salut Zazou5908,

Ce qui donne en clair
Code:
Private Sub ToggleButton1_Click()
Dim cell As Range
Dim maplage As Range

If ToggleButton1 = True Then
  ToggleButton1.Caption = "Masquer lignes vides"
  ActiveSheet.Rows.Hidden = False
Else
  ToggleButton1.Caption = "Afficher tout"
  [COLOR=blue]Application.ScreenUpdating = False
[/COLOR]  Set maplage = Feuil2.Range("R1:R7416")
  For Each cell In maplage
    If cell.Value = 0 Then cell.EntireRow.Hidden = True
  Next
  [COLOR=blue]Application.ScreenUpdating = True[/COLOR]
[COLOR=blue]  Range("A1").Select[/COLOR]
[COLOR=blue]  msgbox "C'est Terminé !"
[/COLOR]End If
End Sub

Voilà
 

zazou5908

XLDnaute Nouveau
Et bien, comme d'habitude vous êtes génaiux !

Cela fonctionne bien. J'ai aussi rajouté le message 'c'est terminé" pour quand je réaffiche toutes les lignes.

Et tant qu'à faire, y - a t'il moyen de faire apparaître un message pendant le masquage des lignes mais de le faire disparaître automatiquement sans devoir cliquer sur "OK" quand c'est terminé.
......
......
......
Set maplage = Feuil2.Range("R1:R7416")
msgbox "Masquage des lignes en cours"
For Each cell In maplage
If cell.Value = 0 Then cell.EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
Range("a1").Select
MsgBox "C'est terminé"
......
......
......

Encore un grand merci pour votre coup de main hyper rapide !

Jean
 
C

Compte Supprimé 979

Guest
Re : Fin d'une macro et retour à Excel

Et tant qu'à faire, y - a t'il moyen de faire apparaître un message pendant le masquage des lignes mais de le faire disparaître automatiquement sans devoir cliquer sur "OK" quand c'est terminé

Oui tu peux le faire mais avec un USF (UserForm), est-ce que tu connais ?

A+
 

zazou5908

XLDnaute Nouveau
Re: Re : Fin d'une macro et retour à Excel

BrunoM45 à dit:
Oui tu peux le faire mais avec un USF (UserForm), est-ce que tu connais ?

A+

Bonjour BrunoM45

Eh non je ne connais pas encore !:(
Si cela ne te prend pas trop de temps, j'accepte avec plaisir mais sinon je ferai sans !

Merci pour ton aide et tes conseils que l'on retrouve souvent sur ce forum (comme beaucoup d'autres d'ailleurs).
 
C

Compte Supprimé 979

Guest
Re : Fin d'une macro et retour à Excel

Zazou,

Une petite astuce, pour l'USF, tu fais un clique droit dessus -> Exporter
Tu l'enregistre dans le dossier "Mes Documents" (par exemple)

Dans ton vrai fichier, tu fais "Fichier" -> "Importer un fichier"

Pour le code un copier/coller en remplaçant les lignes CheckBox par Togglebutton

Voilà ;)
 

Discussions similaires

Réponses
1
Affichages
373

Statistiques des forums

Discussions
314 491
Messages
2 110 182
Membres
110 692
dernier inscrit
paul58290