SendKeys sur plusieurs onglets

Le
GGAL
Bonjour,


J'ai la macro suivante qui permet d'ouvrir rapidement des listes déroulantes :

Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub

J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12 mois
de l'année)

Est-il possible de n'avoir qu'une seule procédure s'appliquant à l'ensemble
des feuilles.

Merci beaucoup.


Ggal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #16510951
Dans le ThisWorkbook de ton classeur :

Écrit de cette façon, cela suppose que toutes les feuilles
sont similaires... sinon tu peux utiliser l'objet Sh pour
restreindre les feuilles où cela ne s'applique pas.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub




"GGAL"
Bonjour,


J'ai la macro suivante qui permet d'ouvrir rapidement des listes déroulantes
:

Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub

J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12 mois
de l'année)

Est-il possible de n'avoir qu'une seule procédure s'appliquant à l'ensemble
des feuilles.

Merci beaucoup.


Ggal
GGAL
Le #16511091
Merci

C'est ce que je cherchais.
Mais dans le cas où la procédure ne s'appliquerait pour la feuille (1) par
exemple, ça donnerait quoi ?

Ggal


"michdenis" a écrit :

Dans le ThisWorkbook de ton classeur :

Écrit de cette façon, cela suppose que toutes les feuilles
sont similaires... sinon tu peux utiliser l'objet Sh pour
restreindre les feuilles où cela ne s'applique pas.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub




"GGAL"
Bonjour,


J'ai la macro suivante qui permet d'ouvrir rapidement des listes déroulantes
:

Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub

J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12 mois
de l'année)

Est-il possible de n'avoir qu'une seule procédure s'appliquant à l'ensemble
des feuilles.

Merci beaucoup.


Ggal




michdenis
Le #16511361
Tu débutes ta procédure par un test :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Select Case Sh.Name
Case Is = "Feuil1"
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then
Application.SendKeys ("%DOWN}")
End If
Next i
End Select
End Sub

Et si tu veux inclure seulement certaines feuilles, tu n'as qu'à modifier
la ligne suivante : pour inclure Feuil4 et aussi Feuil10
Case Is = "Feuil1", "Feuil4", "Feuil10"







"GGAL"
Merci

C'est ce que je cherchais.
Mais dans le cas où la procédure ne s'appliquerait pour la feuille (1) par
exemple, ça donnerait quoi ?

Ggal


"michdenis" a écrit :

Dans le ThisWorkbook de ton classeur :

Écrit de cette façon, cela suppose que toutes les feuilles
sont similaires... sinon tu peux utiliser l'objet Sh pour
restreindre les feuilles où cela ne s'applique pas.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub




"GGAL"
Bonjour,


J'ai la macro suivante qui permet d'ouvrir rapidement des listes
déroulantes
:

Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then Application.SendKeys
("%DOWN}")
Next i
End Sub

J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12
mois
de l'année)

Est-il possible de n'avoir qu'une seule procédure s'appliquant à
l'ensemble
des feuilles.

Merci beaucoup.


Ggal




GGAL
Le #16511431
D'accord quand on connaît le nom des feuilles.
Mais quand on veut l'appliquer indépendamment des noms, en tenant compte
des numéros des feuilles : Sheets(1), Sheets(4)

Ggal


"michdenis" a écrit :

Tu débutes ta procédure par un test :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Select Case Sh.Name
Case Is = "Feuil1"
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then
Application.SendKeys ("%DOWN}")
End If
Next i
End Select
End Sub

Et si tu veux inclure seulement certaines feuilles, tu n'as qu'à modifier
la ligne suivante : pour inclure Feuil4 et aussi Feuil10
Case Is = "Feuil1", "Feuil4", "Feuil10"







"GGAL"
Merci

C'est ce que je cherchais.
Mais dans le cas où la procédure ne s'appliquerait pour la feuille (1) par
exemple, ça donnerait quoi ?

Ggal


"michdenis" a écrit :

> Dans le ThisWorkbook de ton classeur :
>
> Écrit de cette façon, cela suppose que toutes les feuilles
> sont similaires... sinon tu peux utiliser l'objet Sh pour
> restreindre les feuilles où cela ne s'applique pas.
>
> Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
> As Range)
> For i = 6 To 36
> If Target.Address = Range("F" & i).Address Then Application.SendKeys
> ("%DOWN}")
> Next i
> End Sub
>
>
>
>
> "GGAL" >
> Bonjour,
>
>
> J'ai la macro suivante qui permet d'ouvrir rapidement des listes
> déroulantes
> :
>
> Sub Worksheet_SelectionChange(ByVal Target As Range)
> For i = 6 To 36
> If Target.Address = Range("F" & i).Address Then Application.SendKeys
> ("%DOWN}")
> Next i
> End Sub
>
> J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12
> mois
> de l'année)
>
> Est-il possible de n'avoir qu'une seule procédure s'appliquant à
> l'ensemble
> des feuilles.
>
> Merci beaucoup.
>
>
> Ggal
>
>




michdenis
Le #16511531
| des numéros des feuilles : Sheets(1), Sheets(4)

Idéalement, tu devrais utiliser la propriété "CodeName"
En fait, elle te retourne le nom de l'objet "Feuill" tel que
défini dans l'environnement VBA

Dans la fenêtre de l'éditeur de code, dans la section
Projet VBA, les noms des feuilles apparaissent comme suit :

Feuil1(Feuil1)

Le premier Feuil1 représente la propriété CodeName et si
tu regarde dans les propriétés de cette dernière, Tu auras "Feuil"
pour la propriété "Name"

(Feuil1) représente le nom de l'onglet de la feuille.

En utilisant CodeName, ton code demeure toujours bon même si
l'usager s'amuse à modifier le nom des onglets des feuilles.

Pour ta question : Sheets(1) représente l'objet "Feuille" et non pas
le nom de la feuille.... mais tu peux utiliser Sheets(1).Name






"michdenis" a écrit :

Tu débutes ta procédure par un test :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Select Case Sh.Name
Case Is = "Feuil1"
For i = 6 To 36
If Target.Address = Range("F" & i).Address Then
Application.SendKeys ("%DOWN}")
End If
Next i
End Select
End Sub

Et si tu veux inclure seulement certaines feuilles, tu n'as qu'à modifier
la ligne suivante : pour inclure Feuil4 et aussi Feuil10
Case Is = "Feuil1", "Feuil4", "Feuil10"







"GGAL"
Merci

C'est ce que je cherchais.
Mais dans le cas où la procédure ne s'appliquerait pour la feuille (1) par
exemple, ça donnerait quoi ?

Ggal


"michdenis" a écrit :

> Dans le ThisWorkbook de ton classeur :
>
> Écrit de cette façon, cela suppose que toutes les feuilles
> sont similaires... sinon tu peux utiliser l'objet Sh pour
> restreindre les feuilles où cela ne s'applique pas.
>
> Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
> Target
> As Range)
> For i = 6 To 36
> If Target.Address = Range("F" & i).Address Then Application.SendKeys
> ("%DOWN}")
> Next i
> End Sub
>
>
>
>
> "GGAL" >
> Bonjour,
>
>
> J'ai la macro suivante qui permet d'ouvrir rapidement des listes
> déroulantes
> :
>
> Sub Worksheet_SelectionChange(ByVal Target As Range)
> For i = 6 To 36
> If Target.Address = Range("F" & i).Address Then Application.SendKeys
> ("%DOWN}")
> Next i
> End Sub
>
> J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12
> mois
> de l'année)
>
> Est-il possible de n'avoir qu'une seule procédure s'appliquant à
> l'ensemble
> des feuilles.
>
> Merci beaucoup.
>
>
> Ggal
>
>




GGAL
Le #16511571
C'est parfait, merci pour tout.

Ggal

"michdenis" a écrit :

| des numéros des feuilles : Sheets(1), Sheets(4)

Idéalement, tu devrais utiliser la propriété "CodeName"
En fait, elle te retourne le nom de l'objet "Feuill" tel que
défini dans l'environnement VBA

Dans la fenêtre de l'éditeur de code, dans la section
Projet VBA, les noms des feuilles apparaissent comme suit :

Feuil1(Feuil1)

Le premier Feuil1 représente la propriété CodeName et si
tu regarde dans les propriétés de cette dernière, Tu auras "Feuil"
pour la propriété "Name"

(Feuil1) représente le nom de l'onglet de la feuille.

En utilisant CodeName, ton code demeure toujours bon même si
l'usager s'amuse à modifier le nom des onglets des feuilles.

Pour ta question : Sheets(1) représente l'objet "Feuille" et non pas
le nom de la feuille.... mais tu peux utiliser Sheets(1).Name






"michdenis" a écrit :

> Tu débutes ta procédure par un test :
>
> Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
> As Range)
> Select Case Sh.Name
> Case Is = "Feuil1"
> For i = 6 To 36
> If Target.Address = Range("F" & i).Address Then
> Application.SendKeys ("%DOWN}")
> End If
> Next i
> End Select
> End Sub
>
> Et si tu veux inclure seulement certaines feuilles, tu n'as qu'à modifier
> la ligne suivante : pour inclure Feuil4 et aussi Feuil10
> Case Is = "Feuil1", "Feuil4", "Feuil10"
>
>
>
>
>
>
>
> "GGAL" >
> Merci
>
> C'est ce que je cherchais.
> Mais dans le cas où la procédure ne s'appliquerait pour la feuille (1) par
> exemple, ça donnerait quoi ?
>
> Ggal
>
>
> "michdenis" a écrit :
>
> > Dans le ThisWorkbook de ton classeur :
> >
> > Écrit de cette façon, cela suppose que toutes les feuilles
> > sont similaires... sinon tu peux utiliser l'objet Sh pour
> > restreindre les feuilles où cela ne s'applique pas.
> >
> > Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
> > Target
> > As Range)
> > For i = 6 To 36
> > If Target.Address = Range("F" & i).Address Then Application.SendKeys
> > ("%DOWN}")
> > Next i
> > End Sub
> >
> >
> >
> >
> > "GGAL" > >
> > Bonjour,
> >
> >
> > J'ai la macro suivante qui permet d'ouvrir rapidement des listes
> > déroulantes
> > :
> >
> > Sub Worksheet_SelectionChange(ByVal Target As Range)
> > For i = 6 To 36
> > If Target.Address = Range("F" & i).Address Then Application.SendKeys
> > ("%DOWN}")
> > Next i
> > End Sub
> >
> > J'ai recopier la macro sur les autres feuilles (qui correspndent aux 12
> > mois
> > de l'année)
> >
> > Est-il possible de n'avoir qu'une seule procédure s'appliquant à
> > l'ensemble
> > des feuilles.
> >
> > Merci beaucoup.
> >
> >
> > Ggal
> >
> >
>
>




Publicité
Poster une réponse
Anonyme