OVH Cloud OVH Cloud

evenement de feuille de calcul

8 réponses
Avatar
christèle
j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de la
colonne A ?
merci
christèle

8 réponses

Avatar
Hervé
Salut Christèle,
Essai ceci :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [A:A]) Is Nothing And Target = "" Then
'ton code de lancement...
End If
End Sub

Hervé.

"christèle" a écrit dans le message
news:
j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la

colonne A ?
merci
christèle


Avatar
Michel Gaboly
Bonsoir,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Range("A:A")) Is Nothing Then
For Each c In Intersect(Target, Range("A:A"))
If IsEmpty(c) Then
' Ton traitement
End If
Next
End If
End Sub
Avatar
LSteph
Bonjour Christèle,
Cet ex remplacer la ligne du msgbox par ta commande:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iSct As Range
Set iSct = Intersect(Target, Range("A:A"))
If iSct Is Nothing Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Target) Then
MsgBox Target.Address 'ligne à remplacer par commande
End If
Application.EnableEvents = True
End Sub

'lSteph

"christèle" a écrit dans le message de
news:
j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la
colonne A ?
merci
christèle


Avatar
Michel Gaboly
Bonsoir,

Ton code ne marche que dans une partie des cas possibles :;((

Si l'intersection de la colonne A et de Target contient plusieurs
cellules et que seules certaines sont vides, elles ne sont pas repérées.

Essaye par exemple en sélectionnant A1:D3, avec toutes les cellules
vides, sauf A1.

Bonjour Christèle,
Cet ex remplacer la ligne du msgbox par ta commande:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iSct As Range
Set iSct = Intersect(Target, Range("A:A"))
If iSct Is Nothing Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Target) Then
MsgBox Target.Address 'ligne à remplacer par commande
End If
Application.EnableEvents = True
End Sub

'lSteph

"christèle" a écrit dans le message de
news:

j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la
colonne A ?
merci
christèle







--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
LSteph
Salut ô grand joueur de Go,
Ne fais pas cette grimace
Merci , je vais vérifier
essaie de ton côté ,
l'hypothèse que le traitement contienne:
activecell.offset(1,0).select

;-) à bientôt

Stephane





"Michel Gaboly" a écrit dans le message de news:
%
Bonsoir,

Ton code ne marche que dans une partie des cas possibles :;((

Si l'intersection de la colonne A et de Target contient plusieurs cellules
et que seules certaines sont vides, elles ne sont pas repérées.

Essaye par exemple en sélectionnant A1:D3, avec toutes les cellules vides,
sauf A1.

Bonjour Christèle,
Cet ex remplacer la ligne du msgbox par ta commande:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iSct As Range
Set iSct = Intersect(Target, Range("A:A"))
If iSct Is Nothing Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Target) Then
MsgBox Target.Address 'ligne à remplacer par commande
End If
Application.EnableEvents = True
End Sub

'lSteph

"christèle" a écrit dans le message
de news:

j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer
l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la
colonne A ?
merci
christèle







--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
LSteph
Re Bonsoir Michel,
Tu disais:
Ton code ne marche que dans une partie des cas possibles :;((


Pas sûr de devoir rectifier, pour répondre à l'hypothèse évoquée:
Si l'intersection de la colonne A et de Target contient plusieurs cellules
Certes on pourrait restreindre if isempty(target) à if

isempty(target.cells(1))
mais en l'occurence et plutôt que d'envisager qu'il faille boucler la
sélection
ce que peut prévoir d'ailleurs le traitement en questiont
il serait plus prudent de tenir compte de ceci:
.
A chaque selection d'une cellule, vba exécute mon petit programme




Si le traitement remplit la cellule ou s'exécute pour une cellule il n'est
pas dit :
que le traitement s'applique à une sélection multiple.

Peut être conviendrait-il même de déjouer le risque :

if target.cells.count>1 then exit sub

....à suivre

Bien cordialement.

lSteph


"Michel Gaboly" a écrit dans le message de news:
%
Bonsoir,

Ton code ne marche que dans une partie des cas possibles :;((

Si l'intersection de la colonne A et de Target contient plusieurs cellules
et que seules certaines sont vides, elles ne sont pas repérées.

Essaye par exemple en sélectionnant A1:D3, avec toutes les cellules vides,
sauf A1.

Bonjour Christèle,
Cet ex remplacer la ligne du msgbox par ta commande:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iSct As Range
Set iSct = Intersect(Target, Range("A:A"))
If iSct Is Nothing Then Exit Sub
Application.EnableEvents = False
If IsEmpty(Target) Then
MsgBox Target.Address 'ligne à remplacer par commande
End If
Application.EnableEvents = True
End Sub

'lSteph

"christèle" a écrit dans le message
de news:

j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer
l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la
colonne A ?
merci
christèle







--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
christèle
merci pour vos réponses. j'ai un peu cherché de mon coté et j'ai trouvé ça
c'est peut être pas très orthodoxe (débutant sous vba, petit lambeau de
connaissance piochée à gauche et droite ..) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target <> Empty Then ... (et mon petit programme)

mais je me retrouve avec un autre problème. L'évenement SelectionChange est
pas tout à fait l'idéal pour moi. J'aimerais quelque chose qui corresponde au
"Après mise à Jour" d'access. En fait chaque fois qu'en col A je saisis une
nouvelle valeur, je souhaite que mon code s'exécute. Or ici il me faut
valider la saisie puis cliquer sur la cellule dans laquelle je viens de
saisir la valeur
Merci
Christèle



j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de la
colonne A ?
merci
christèle


Avatar
LSteph
Bonsoir,
Dans ce cas essaie l'événement change.
En ciblant le target également, comme tu as fait et comme dans les exemples
proposés
mais pense
à désactiver et réactiver av et après les évenements si ta macro modifie
target
Application.EnableEvents = False
'lacommande
Application.EnableEvents = True



'lSteph
"christèle" a écrit dans le message de
news:
merci pour vos réponses. j'ai un peu cherché de mon coté et j'ai trouvé ça
c'est peut être pas très orthodoxe (débutant sous vba, petit lambeau de
connaissance piochée à gauche et droite ..) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target <> Empty Then ... (et mon petit programme)

mais je me retrouve avec un autre problème. L'évenement SelectionChange
est
pas tout à fait l'idéal pour moi. J'aimerais quelque chose qui corresponde
au
"Après mise à Jour" d'access. En fait chaque fois qu'en col A je saisis
une
nouvelle valeur, je souhaite que mon code s'exécute. Or ici il me faut
valider la saisie puis cliquer sur la cellule dans laquelle je viens de
saisir la valeur
Merci
Christèle



j'ai pu utiliser dans une feuille de calcul l'évenement selectionChange.
A chaque selection d'une cellule, vba exécute mon petit programme
Mais je souhaiterais restreindre cela. Comment puis-je lancer
l'exécussion
de mon programme uniquement quand il y a sélection d'une cellule vide de
la
colonne A ?
merci
christèle