OVH Cloud OVH Cloud

Perte de variable. -VBA-

6 réponses
Avatar
Patrick BASTARD
Bonsoir à tous.

Je tourne en rond pour rechercher l'erreur sur ce code, censé sélectionner,
en cas de changement d'onglet, la sélection de l'onglet précédent (zone
visible )ET cellule active).

Il est vrai que j'ai quelque peu modifié le code que docm m'avait gentiment
communiqué.
Pour la zone affichée, pas de problème.
Pour la cellule active, le fonctionnement n'est pas automatique :
Lorsque je passe de l'onglet 1 au 2, la cellule sélectionnée est la même que
celle de l'onglet précédent.
Lorsque je passe de l'onglet 2 au 3, et si je modifie la sélection, la
cellule sélectionnéee est la même que celle de l'onglet précédent.
Mais :
Lorsque je passe de l'onglet 2 au 3, si je ne modifie pas la cellule
sélectionnée, la variable semble avoir disparu, et la cellule sélectionnée
ne correspond pas à celle de l'onglet précédent.

Si vous avez une explication, bien entendu, je suis preneur.

Avec tous mes remerciements,

Bien cordialement,

Patrick.


Option Explicit
'de docm MPFE 19-1-2005
'pour passer d'un onglet à l'autre en conservant la même sélection
Dim LastTarget As String
Dim PremiereCelluleVisible As String
Dim Sh As Worksheet


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Excel.Range)
'Application.EnableEvents = True
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
LastTarget = Target.Address
PremiereCelluleVisible = "R" & ActiveWindow.VisibleRange.Row & "C" &
ActiveWindow.VisibleRange.Column
End If

End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
Application.EnableEvents = False
Application.Goto Reference:=PremiereCelluleVisible, Scroll:=True
Range(LastTarget).Select
Calculate 'pour mettre à jour les titres des pages
Application.EnableEvents = True
End If

End
End Sub

6 réponses

Avatar
LSteph
Bonsoir Patrick,

Enlèves le End la ligne avant end sub et ressaies!

'lSteph

"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je tourne en rond pour rechercher l'erreur sur ce code, censé
sélectionner, en cas de changement d'onglet, la sélection de l'onglet
précédent (zone visible )ET cellule active).

Il est vrai que j'ai quelque peu modifié le code que docm m'avait
gentiment communiqué.
Pour la zone affichée, pas de problème.
Pour la cellule active, le fonctionnement n'est pas automatique :
Lorsque je passe de l'onglet 1 au 2, la cellule sélectionnée est la même
que celle de l'onglet précédent.
Lorsque je passe de l'onglet 2 au 3, et si je modifie la sélection, la
cellule sélectionnéee est la même que celle de l'onglet précédent.
Mais :
Lorsque je passe de l'onglet 2 au 3, si je ne modifie pas la cellule
sélectionnée, la variable semble avoir disparu, et la cellule sélectionnée
ne correspond pas à celle de l'onglet précédent.

Si vous avez une explication, bien entendu, je suis preneur.

Avec tous mes remerciements,

Bien cordialement,

Patrick.


Option Explicit
'de docm MPFE 19-1-2005
'pour passer d'un onglet à l'autre en conservant la même sélection
Dim LastTarget As String
Dim PremiereCelluleVisible As String
Dim Sh As Worksheet


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Excel.Range)
'Application.EnableEvents = True
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
LastTarget = Target.Address
PremiereCelluleVisible = "R" & ActiveWindow.VisibleRange.Row & "C"
& ActiveWindow.VisibleRange.Column
End If

End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
Application.EnableEvents = False
Application.Goto Reference:=PremiereCelluleVisible, Scroll:=True
Range(LastTarget).Select
Calculate 'pour mettre à jour les titres des pages
Application.EnableEvents = True
End If

End
End Sub



Avatar
Patrick BASTARD
Bonsoir, *LSteph*

C'est exactement ça, et je m'en veux, surtout après le fil que j'ai moi-même
initié sur la RAZ des variables, et les renseignements qui m'ont été
amicalement fournis. :-(
C'est comme dans les histoires de E.A.POE : ce qui est évident ne saute pas
forcément aux yeux...

Merci beaucoup, et bonne nuit.

Bien cordialement,

Patrick.


Bonsoir Patrick,

Enlèves le End la ligne avant end sub et ressaies!

'lSteph

"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je tourne en rond pour rechercher l'erreur sur ce code, censé
sélectionner, en cas de changement d'onglet, la sélection de l'onglet
précédent (zone visible )ET cellule active).

Il est vrai que j'ai quelque peu modifié le code que docm m'avait
gentiment communiqué.
Pour la zone affichée, pas de problème.
Pour la cellule active, le fonctionnement n'est pas automatique :
Lorsque je passe de l'onglet 1 au 2, la cellule sélectionnée est la
même que celle de l'onglet précédent.
Lorsque je passe de l'onglet 2 au 3, et si je modifie la sélection,
la cellule sélectionnéee est la même que celle de l'onglet précédent.
Mais :
Lorsque je passe de l'onglet 2 au 3, si je ne modifie pas la cellule
sélectionnée, la variable semble avoir disparu, et la cellule
sélectionnée ne correspond pas à celle de l'onglet précédent.

Si vous avez une explication, bien entendu, je suis preneur.

Avec tous mes remerciements,

Bien cordialement,

Patrick.


Option Explicit
'de docm MPFE 19-1-2005
'pour passer d'un onglet à l'autre en conservant la même sélection
Dim LastTarget As String
Dim PremiereCelluleVisible As String
Dim Sh As Worksheet


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Excel.Range)
'Application.EnableEvents = True
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
LastTarget = Target.Address
PremiereCelluleVisible = "R" & ActiveWindow.VisibleRange.Row
& "C" & ActiveWindow.VisibleRange.Column
End If

End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
Application.EnableEvents = False
Application.Goto Reference:=PremiereCelluleVisible,
Scroll:=True Range(LastTarget).Select
Calculate 'pour mettre à jour les titres des pages
Application.EnableEvents = True
End If

End
End Sub




Avatar
LSteph
Bonsoir Patrick,

C'est exactement ça, et je m'en veux, surtout après le fil que j'ai
moi-même initié sur la RAZ des variables, et les renseignements qui m'ont
été



Et bien , pas de quoi, on a plus qu'à réfléchir à comment faire sans ce end
pour libèrer les variables
de tes proc évenementielles. Je me demande si faire le tout avec un
sheetdéactivate ne pourrait pas convenir,
de sorte qu'il n'y ait plus qu'une seule sub et que l'on ait plus à
déclarer les variables au niveau module
mais dans la private sub directement, reste à tester si la sélection reste
pour une nouvelle feuille.

A+

lSteph

"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir, *LSteph*

C'est exactement ça, et je m'en veux, surtout après le fil que j'ai
moi-même initié sur la RAZ des variables, et les renseignements qui m'ont
été amicalement fournis. :-(
C'est comme dans les histoires de E.A.POE : ce qui est évident ne saute
pas forcément aux yeux...

Merci beaucoup, et bonne nuit.

Bien cordialement,

Patrick.


Bonsoir Patrick,

Enlèves le End la ligne avant end sub et ressaies!

'lSteph

"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je tourne en rond pour rechercher l'erreur sur ce code, censé
sélectionner, en cas de changement d'onglet, la sélection de l'onglet
précédent (zone visible )ET cellule active).

Il est vrai que j'ai quelque peu modifié le code que docm m'avait
gentiment communiqué.
Pour la zone affichée, pas de problème.
Pour la cellule active, le fonctionnement n'est pas automatique :
Lorsque je passe de l'onglet 1 au 2, la cellule sélectionnée est la
même que celle de l'onglet précédent.
Lorsque je passe de l'onglet 2 au 3, et si je modifie la sélection,
la cellule sélectionnéee est la même que celle de l'onglet précédent.
Mais :
Lorsque je passe de l'onglet 2 au 3, si je ne modifie pas la cellule
sélectionnée, la variable semble avoir disparu, et la cellule
sélectionnée ne correspond pas à celle de l'onglet précédent.

Si vous avez une explication, bien entendu, je suis preneur.

Avec tous mes remerciements,

Bien cordialement,

Patrick.


Option Explicit
'de docm MPFE 19-1-2005
'pour passer d'un onglet à l'autre en conservant la même sélection
Dim LastTarget As String
Dim PremiereCelluleVisible As String
Dim Sh As Worksheet


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Excel.Range)
'Application.EnableEvents = True
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
LastTarget = Target.Address
PremiereCelluleVisible = "R" & ActiveWindow.VisibleRange.Row
& "C" & ActiveWindow.VisibleRange.Column
End If

End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
Application.EnableEvents = False
Application.Goto Reference:=PremiereCelluleVisible,
Scroll:=True Range(LastTarget).Select
Calculate 'pour mettre à jour les titres des pages
Application.EnableEvents = True
End If

End
End Sub








Avatar
Patrick BASTARD
Bonjour, *LSteph*

Tu sais, maintenant que mon code fonctionne comme je le souhaitais, je ne
vais pas me -vous- casser la gnognotte pour "libérer les string".
Le MLS, ce n'est pas ma tasse de thé.
rofl

Blague à part, merci à tous ceux qui m'ont aidé (ils se reconnaitront), et à
qui je ne manquerai pas de faire de nouveau appel.
Tant qu'on gagne, on joue, non ?
;-)
Et avec ce forum, on gagne à tous les coups, alors...

Bonne journée,

Bien cordialement,

Patrick.


Bonsoir Patrick,

C'est exactement ça, et je m'en veux, surtout après le fil que j'ai
moi-même initié sur la RAZ des variables, et les renseignements qui
m'ont été



Et bien , pas de quoi, on a plus qu'à réfléchir à comment faire sans
ce end pour libèrer les variables
de tes proc évenementielles. Je me demande si faire le tout avec un
sheetdéactivate ne pourrait pas convenir,
de sorte qu'il n'y ait plus qu'une seule sub et que l'on ait plus à
déclarer les variables au niveau module
mais dans la private sub directement, reste à tester si la sélection
reste pour une nouvelle feuille.

A+

lSteph

"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir, *LSteph*

C'est exactement ça, et je m'en veux, surtout après le fil que j'ai
moi-même initié sur la RAZ des variables, et les renseignements qui
m'ont été amicalement fournis. :-(
C'est comme dans les histoires de E.A.POE : ce qui est évident ne
saute pas forcément aux yeux...

Merci beaucoup, et bonne nuit.

Bien cordialement,

Patrick.


Bonsoir Patrick,

Enlèves le End la ligne avant end sub et ressaies!

'lSteph

"Patrick BASTARD" a écrit dans
le message de news:
Bonsoir à tous.

Je tourne en rond pour rechercher l'erreur sur ce code, censé
sélectionner, en cas de changement d'onglet, la sélection de
l'onglet précédent (zone visible )ET cellule active).

Il est vrai que j'ai quelque peu modifié le code que docm m'avait
gentiment communiqué.
Pour la zone affichée, pas de problème.
Pour la cellule active, le fonctionnement n'est pas automatique :
Lorsque je passe de l'onglet 1 au 2, la cellule sélectionnée est la
même que celle de l'onglet précédent.
Lorsque je passe de l'onglet 2 au 3, et si je modifie la sélection,
la cellule sélectionnéee est la même que celle de l'onglet
précédent. Mais :
Lorsque je passe de l'onglet 2 au 3, si je ne modifie pas la
cellule sélectionnée, la variable semble avoir disparu, et la
cellule sélectionnée ne correspond pas à celle de l'onglet
précédent. Si vous avez une explication, bien entendu, je suis preneur.

Avec tous mes remerciements,

Bien cordialement,

Patrick.


Option Explicit
'de docm MPFE 19-1-2005
'pour passer d'un onglet à l'autre en conservant la même sélection
Dim LastTarget As String
Dim PremiereCelluleVisible As String
Dim Sh As Worksheet


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Excel.Range)
'Application.EnableEvents = True
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
LastTarget = Target.Address
PremiereCelluleVisible = "R" & ActiveWindow.VisibleRange.Row
& "C" & ActiveWindow.VisibleRange.Column
End If

End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next
If Sh.Name <> "Anomalies" And Sh.Name <> "Administration" _
And Sh.Name <> "Premier" And Sh.Name <> "Modèle" _
And Sh.Name <> "TOTAL" _
Then
Application.EnableEvents = False
Application.Goto Reference:=PremiereCelluleVisible,
Scroll:=True Range(LastTarget).Select
Calculate 'pour mettre à jour les titres des pages
Application.EnableEvents = True
End If

End
End Sub








Avatar
Eric
Bonjour Patrick,

...
je ne vais pas me -vous- casser la gnognotte pour "libérer les string".
Le MLS, ce n'est pas ma tasse de thé.



C'est pas le *DIM*, (sur un air de musique), qui libère le string comme
tu le dis si bien ? ;-)

Un fervent partisan du MLS
--
A+
Eric

Avatar
Patrick BASTARD
Bonjour, *Eric*

;-)



Bonjour Patrick,

...
je ne vais pas me -vous- casser la gnognotte pour "libérer les
string". Le MLS, ce n'est pas ma tasse de thé.



C'est pas le *DIM*, (sur un air de musique), qui libère le string
comme tu le dis si bien ? ;-)

Un fervent partisan du MLS