Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question d'esthétique !!

49 réponses
Avatar
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

10 réponses

1 2 3 4 5
Avatar
Daniel.C
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


Avatar
DT
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
Avatar
Daniel.C
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


Avatar
Daniel.C
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


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

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

Merci

Cordialement
David
Avatar
michdenis
| 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.
Avatar
michdenis
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" a écrit dans le message de groupe de discussion :

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
Avatar
DT
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
Avatar
michdenis
Effectivement. Merci pour la correction.
Avatar
DT
Si tu veux un conseil, fait signe !!!! humour

Bon allez j'attaque avec les With
1 2 3 4 5