Question d'esthétique !!

Le
DT
Bonjour

J'ouvre différents UserForm tour à tour mais j'aimerais que la Feuil4 soit
toujours en "fond" derrière les UserForm. J'ai donc mis des Feuil4.Activate
un peu partout dans mes codes mais rien n'y fait, un breve instant, je vois
la feuille qui est en traitement.
En prenant comme modèle le code ci dessous, je comprend bien qu'il active la
Feuil4 mais qu'a un certain moment il selectionne la Feuil2. Y a t'il pas
une solution pour figer la feuille de fond Feuil4 ?

Merci de votre aide
David


Private Sub UserForm_Initialize()
Feuil4.Activate

Feuil2.Select
If Feuil2.AutoFilterMode = True Then
Selection.AutoFilter
Range([A1], [J65000].End(xlUp)).AutoFilter
Else
Trier
IniObjet
End If

Feuil4.Activate
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 5
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21091521
Bonjour.
"Feuil2.Select" est l'équivalent de Feuil2.Activate. Donc tu les
actives d'abord Feuil4, puis Feuil2. J'ai repris en le modifiant une
partie du code du dernier classeur :

Private Sub UserForm_Initialize()
ScreenUpdating = True
CmbNouvelle_Click
Feuil4.Activate
If Feuil2.AutoFilterMode = True Then

Range(Feuil2.[A1], Feuil2.[J65000].End(xlUp)).AutoFilter
Else
CmbNouvelle_Click


Trier

Adapte-le à ton cas.
Daniel

Bonjour

J'ouvre différents UserForm tour à tour mais j'aimerais que la Feuil4 soit
toujours en "fond" derrière les UserForm. J'ai donc mis des Feuil4.Activate
un peu partout dans mes codes mais rien n'y fait, un breve instant, je vois
la feuille qui est en traitement.
En prenant comme modèle le code ci dessous, je comprend bien qu'il active la
Feuil4 mais qu'a un certain moment il selectionne la Feuil2. Y a t'il pas une
solution pour figer la feuille de fond Feuil4 ?

Merci de votre aide
David


Private Sub UserForm_Initialize()
Feuil4.Activate

Feuil2.Select
If Feuil2.AutoFilterMode = True Then
Selection.AutoFilter
Range([A1], [J65000].End(xlUp)).AutoFilter
Else
Trier
IniObjet
End If

Feuil4.Activate
End Sub


DT
Le #21091711
Merci Daniel

Pas sûre d"avoir bien tout compris !

Donc il faut mettre "ScreenUpdating = True" au début de chaque partie de
code mon projet ? ou seulement dans le "UserForm_Initialize"

A la lecture de l'aide de ScreenUpdating :
N'oubliez pas d'affecter de nouveau la valeur True à la propriété
ScreenUpdating à la fin de la macro





Donc ?

Merci de ton aide

David
Daniel.C
Le #21091921
Oups.
C'est "ScreenUpdating = False qu'il faut mettre. Il faut le mettre au
début de chaque macro ou du moins celles qui affichent des feuilles.
Daniel

Merci Daniel

Pas sûre d"avoir bien tout compris !

Donc il faut mettre "ScreenUpdating = True" au début de chaque partie de code
mon projet ? ou seulement dans le "UserForm_Initialize"

A la lecture de l'aide de ScreenUpdating :
N'oubliez pas d'affecter de nouveau la valeur True à la propriété
ScreenUpdating à la fin de la macro





Donc ?

Merci de ton aide

David


Daniel.C
Le #21091911
et la valeur "True" est réinitialisée automatiquement en fin de macro.
Daniel

Merci Daniel

Pas sûre d"avoir bien tout compris !

Donc il faut mettre "ScreenUpdating = True" au début de chaque partie de code
mon projet ? ou seulement dans le "UserForm_Initialize"

A la lecture de l'aide de ScreenUpdating :
N'oubliez pas d'affecter de nouveau la valeur True à la propriété
ScreenUpdating à la fin de la macro





Donc ?

Merci de ton aide

David


DT
Le #21092351
Après pas mal d'essai, je constate aucune différence !!

On se passera de l'esthétique !!!

Merci

Cordialement
David
michdenis
Le #21092341
| et la valeur "True" est réinitialisée automatiquement en fin de macro.

Bonjour Daniel,

Ton énoncé est vrai sur toutes les versions antérieures à 2007.
Mais avec Excel 2007, il faut remettre à true. C'est du moins
l'observation que je fais dans mon environnement.
Application.ScreenUpdating = True

Pour observer le phénomène, je te suggère de tester la
proposition que j'ai faite à la question en tenant compte
de la tienne :
Re: Comment classer automatiquement les onglets d'un fichier XLS
(dernière aujourd'hui)
Tu places les procédures dans un module standard et
celle-ci dans le ThisWorkbook du classeur.
Maintenant, insère une nouvelle feuille !
'----------------------------------
Private Sub Workbook_NewSheet(ByVal Sh As Object)
TriFeuilles
End Sub
'----------------------------------

Qu'obtiens-tu comme résultat si tu ne passes pas l'affichage à true ?

Merci pour ta participation.
michdenis
Le #21092571
Bonjour,

Essaie de cette façon ;

Dans les procédures "Trier" et "IniObjet", si tu sélectionnes
des feuilles, la feuil4 ne demeurera pas active.
Observe, il y a moyen de travailler avec les cellules d'une feuille
sans pour autant sélectionner la feuille ou la plage de cellules.
Apprendre à travailler avec With ... et End With, c'est un "MUST"
en vba... !
Dernier commentaire, tu ne dois pas t'amuser à mettre un peu
partout des Application.ScreenUpdating = True ou False, bien
que la feuille active ne changera pas, cela fera "sautiller" celle
à l'écran légèrement.

'--------------------------------
Private Sub UserForm_Initialize()
Application.ScreenUpdating = True
Feuil4.Activate
With Feuil2
If .AutoFilterMode = True Then
With .Range(.[A1], .[J65000].End(xlUp)).AutoFilter
Else
Trier
IniObjet
End If
End With
End Sub
'--------------------------------



"DT"
Bonjour

J'ouvre différents UserForm tour à tour mais j'aimerais que la Feuil4 soit
toujours en "fond" derrière les UserForm. J'ai donc mis des Feuil4.Activate
un peu partout dans mes codes mais rien n'y fait, un breve instant, je vois
la feuille qui est en traitement.
En prenant comme modèle le code ci dessous, je comprend bien qu'il active la
Feuil4 mais qu'a un certain moment il selectionne la Feuil2. Y a t'il pas
une solution pour figer la feuille de fond Feuil4 ?

Merci de votre aide
David


Private Sub UserForm_Initialize()
Feuil4.Activate

Feuil2.Select
If Feuil2.AutoFilterMode = True Then
Selection.AutoFilter
Range([A1], [J65000].End(xlUp)).AutoFilter
Else
Trier
IniObjet
End If

Feuil4.Activate
End Sub
DT
Le #21092881
A nouveau merci beaucoup pour tes conseils.

Je vais essayer

Sinon, le With de "With .Range(.[A1], .[J65000].End(xlUp)).AutoFilter" n'est
pas de trop ??

Cordialement

David
michdenis
Le #21092951
Effectivement. Merci pour la correction.
DT
Le #21092921
Si tu veux un conseil, fait signe !!!! humour

Bon allez j'attaque avec les With
Publicité
Poster une réponse
Anonyme