• Initiateur de la discussion Initiateur de la discussion gscv
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gscv

Guest
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:
 
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
 
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+
 
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
 
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,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
408
  • Question Question
Microsoft 365 archivage excel
Réponses
12
Affichages
274
Retour