cellule et macro

gscv

XLDnaute Junior
Bonjour à tous et à toutes

Après avoir cherché dans le forum et n’ayant pas trouvé mon bonheur, voici ma question :

Peut-on lors de la saisie d’une cellule exécuter une macro ?

Si oui comment ?

Encore merci a tous pour votre aide

Cordialement

Sébastien
:huh:
 

Abel

XLDnaute Accro
Bonjour gscv,

Essaie ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cible As Range
Set Cible = Intersect(Target, Range('a1'))
If Not Cible Is Nothing Then
MsgBox 'Tindiiiinn !'
End If
End Sub


Fonctionne dès que la valeur de 'A1' est changée.

En espérant que cela te dépanne.


Abel.

Edition :
J'ai été incomplet : code à placer dans une feuille pour qu'il ne fonctionne que dans une feuille voulue.

Sinon, à placer dans Thisworkbook :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Cible As Range
Set Cible = Intersect(Target, Range('a1'))
If Not Cible Is Nothing Then
MsgBox 'Tindiiiinn !'
End If
End Sub

Fonctionnera en 'A1' de toutes les feuilles.

Message édité par: Abel, à: 12/09/2005 14:20
 

WILFRIED

XLDnaute Impliqué
Salut gscv,

Tous dépend de la macro et du moment où tu veut l'executer :

Dans l'éditeur VBA tu retrouvera tes feuilles, tu double clique sur celle qui t'intérresse et tu te retrouve avec une page vierge (ou avec OPTION EXPLICIT selon tes réglages).

Là tu selectionne dans la liste déroulante (général) : worksheet et dans celle de droite change. Tu optient ainsi une procédure evenementielle :

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Ta target est la cellule qui aura changer. donc un exemple :

Private Sub Worksheet_Change(ByVal Target As Range)
if target.address=range('A2').address and target.value<>'' then
msgbox'salut'
end if
End Sub

Je ne l'ai pas tester mais elle doit fonctionner.

A+
 

gscv

XLDnaute Junior
Sacré Abel toujours la quand il le faut !!! ;)

Que ferais je sans toi !!!

bien j'ai tester et bien sur cela fonctionne tres bien

dans mon cas je ne peux pas l'appliquer (mais c'est ma faute car je ne l'avais pas precisé)

enfait je veux que la cellule B16 modifie apres saisie la cellule A16

dans ton exemple cela fonctionne sauf !! :unsure: qu'a tous moment j'ai besoin d'inserer une ou plusieur ligne avant et dans ce cas

A16 et B16 peuvent devenir A25 et B25

voila

sebastien

Message édité par: gscv, à: 12/09/2005 14:27
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Sébastien, Abel, Wilfried,

Dans ce genre de cas, le plus simple est de nommer ta cellule B16 :

[ol][li]Menu Insertion / Nom / Définir... [/li]
[li]Tu saisies un nom (par exemple : CellRef) [/li]
[li]Tu cliques ensuite dans la zone 'Fait référence à' et tu sélectionnes la cellule à modifier (B16)[/li]
[li]Tu valides finalement par OK.[/li][/ol]
Dans ton code VBA, tu mets :
Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Application.Intersect(Target, Range('CellRef')) Is Nothing Then
            Target.Offset(0, -1).Value = 'CellRef =' & Target.Value
      End If
End Sub
Comme ça, si tu insères des lignes avant, la macro fonctionnera toujours...

Cordialement,
 

Discussions similaires

Réponses
6
Affichages
159
Réponses
6
Affichages
116

Statistiques des forums

Discussions
312 305
Messages
2 087 078
Membres
103 455
dernier inscrit
saramachado