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

VBA - focus en A1 sans selectionner la feuille

5 réponses
Avatar
twinley
Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet actif est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment positionner le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de la
feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter le
focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley

5 réponses

Avatar
Joël GARBE
Bonjour Twinley ;-)

AMHA la vraie question à se poser et :

pourquoi vouloir positionner le "Focus" sur A1 de chaque feuille ?

Si c'est pour faire propre lorsque l'utilisateur se positionne sue la
feuille, il est toujours possible d'opter pour la privée :

Private Sub Worksheet_Activate()
range("A1").Select
End Sub

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
uAf%



Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet actif
est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le
focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment positionner
le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de la
feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter le
focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley




Avatar
twinley
Bonjour Joël,

C'est la bonne question et la bonne réponse.
C'est pour faire propre.
Pour faire propre à la création de la feuille, mais pas à l'utilisation.
Cela peut agacer, alors qu'on a son focus à la bonne place en feuille2,
qu'on va voir une donnée en feuille3, et quand on revient en feuille2, le
focus a giclé en A1 et il faut rechercher la case ou on bossait.

Peut on mettre deux events dans un même module de feuille ? Je n'avais même
pas pensé à ta solution à cause de cette ignorance sur une double sub event.
--
à+twinley
"Joël GARBE" a écrit dans le message de
news:41a8ac43$0$30433$
Bonjour Twinley ;-)

AMHA la vraie question à se poser et :

pourquoi vouloir positionner le "Focus" sur A1 de chaque feuille ?

Si c'est pour faire propre lorsque l'utilisateur se positionne sue la
feuille, il est toujours possible d'opter pour la privée :

Private Sub Worksheet_Activate()
range("A1").Select
End Sub

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
uAf%



Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet actif
est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le
focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment
positionner


le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de la
feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter le
focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley








Avatar
Joël GARBE
Pour compléter ma précédente réponse, s'il est important de n'actier la
cellule A1 que lors de la procédure en cours, il faut actier les feuilles...
je te propose donc :
l'utilisateur n'y voit que du feu !!!!

Sub ActiverA1()
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "Feuil1" Then
oSheet.Activate
Range(Range("A1"), Range("A1").SpecialCells(xlCellTypeLastCell)).Clear
Range("A1").Select
End If
Next
Worksheets("Feuil1").Activate
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joël GARBE" a écrit dans le message de news:
41a8ac43$0$30433$
Bonjour Twinley ;-)

AMHA la vraie question à se poser et :

pourquoi vouloir positionner le "Focus" sur A1 de chaque feuille ?

Si c'est pour faire propre lorsque l'utilisateur se positionne sue la
feuille, il est toujours possible d'opter pour la privée :

Private Sub Worksheet_Activate()
range("A1").Select
End Sub

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
uAf%



Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet actif
est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le
focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment positionner
le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de la
feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter le
focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley








Avatar
twinley
Je n'ai qu'un mot : superbe

C'est même mieux que je n'espérais.
ClearContents supprimait les volets figés, ton code non. Cela offre une
variante supplémentaire.
C'est propre tous les focus sont en A1 et on reste en feuille1.

Merci beaucoup
--
à+twinley
"Joël GARBE" a écrit dans le message de
news:41a8b0e5$0$17367$
Pour compléter ma précédente réponse, s'il est important de n'actier la
cellule A1 que lors de la procédure en cours, il faut actier les
feuilles...

je te propose donc :
l'utilisateur n'y voit que du feu !!!!

Sub ActiverA1()
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "Feuil1" Then
oSheet.Activate
Range(Range("A1"), Range("A1").SpecialCells(xlCellTypeLastCell)).Clear
Range("A1").Select
End If
Next
Worksheets("Feuil1").Activate
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joël GARBE" a écrit dans le message de news:
41a8ac43$0$30433$
Bonjour Twinley ;-)

AMHA la vraie question à se poser et :

pourquoi vouloir positionner le "Focus" sur A1 de chaque feuille ?

Si c'est pour faire propre lorsque l'utilisateur se positionne sue la
feuille, il est toujours possible d'opter pour la privée :

Private Sub Worksheet_Activate()
range("A1").Select
End Sub

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
uAf%



Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet actif
est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le
focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment
positionner



le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de
la



feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter
le



focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley












Avatar
Joël GARBE
Ce fut un plaisir ;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
%
Je n'ai qu'un mot : superbe

C'est même mieux que je n'espérais.
ClearContents supprimait les volets figés, ton code non. Cela offre une
variante supplémentaire.
C'est propre tous les focus sont en A1 et on reste en feuille1.

Merci beaucoup
--
à+twinley
"Joël GARBE" a écrit dans le message de
news:41a8b0e5$0$17367$
Pour compléter ma précédente réponse, s'il est important de n'actier la
cellule A1 que lors de la procédure en cours, il faut actier les
feuilles...

je te propose donc :
l'utilisateur n'y voit que du feu !!!!

Sub ActiverA1()
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "Feuil1" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).Clear
Range("A1").Select
End If
Next
Worksheets("Feuil1").Activate
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joël GARBE" a écrit dans le message de news:
41a8ac43$0$30433$
Bonjour Twinley ;-)

AMHA la vraie question à se poser et :

pourquoi vouloir positionner le "Focus" sur A1 de chaque feuille ?

Si c'est pour faire propre lorsque l'utilisateur se positionne sue la
feuille, il est toujours possible d'opter pour la privée :

Private Sub Worksheet_Activate()
range("A1").Select
End Sub

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
uAf%



Bonjour à tous,

J'ai une boucle qui balaye les feuilles 2 à 14 alors que l'onglet
actif
est
la feuille1.
Je vide toutes les cellules de chaque feuille puis je veux envoyer le
focus
en A1 sur chaque feuille.

Or je sais le faire en sélectionnant la feuille, mais comment
positionner



le
focus en A1 sur chaque feuille à chaque tour de boucle sans bouger de
la



feuille1 ?
Par extension, en étant sur n'importe quelle feuille, comment piloter
le



focus sur A1 dans les autres feuilles ?

Sheets(I).Range("A1").Select ne fonctionne pas si la feuille n'est pas
active.


For I = 2 To 14
Sheets(I).Cells.ClearContents
Sheets(I).Range("A1").Select
Next I

Merci pour votre aide
à+twinley