Activer les macros VBA

Bonjour,

certainement une question toute simple pour certains, mais je ne trouve pas, alors voici mon impasse :

j'ai des macros VBA

je voudrais qu'elles soient toujours actives

autrement dit je voudrais que dès que je quitte la saisie de ma cellule, la macro fasse son action

bien sur, je ne souhaite pas utiliser de bouton pour lancer la macro

existe t il une option que je n'aurais pas vue dans la configuration ou le menu déroulant indiquant que les macros doivent se faire tout le temps.

je suis sur excel 2000 Fr

NB : Les macros sont placées sous différents modules dans VBA, je ne sais pas si cela à une influence

Bonsoir,

Si tu n'as pas de boutons, c'est que tu as des Private Sub, peut-être désactivés

essaye :

Application.EnableEvents = True

pour les réactiver.

Claude.

5besoin-aide04.xlsx (36.52 Ko)

Bonsoir,

En premier vérifie que ton niveau de sécurité est sur "Moyen" (OUTILS / MACRO / SECURITE DES MACROS) car s'il est sur "élevé" tes macros sont inutilisables.

Si tu n'as pas de résultat, essaye la solution de Dubois.

Amicalement

Dan

Salut le forum

Lolobny comme nouveau membres.

Ta question est mal formulée, un essai de ma part...

Tu veux une action quand on Change la valeur de la Cellule "A1" uniquement :

Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then 
MsgBox "Click on " & Target.Address 
'Ici le code des macros à exécuter
End If 
End Sub

Mytå

Bonjour

Tes macros ne se lancent pas seules car, comme tu le dis, elles sont placées dans des modules.

Pour que l'évènement se fasse à la validation d'une cellule, il faut appeler le code dans ta feuille. C'est à dire que quand tu es sous VBA tu doubles cliques sur la feuille concernée et tu mets ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
Call MaMacro
End Sub

Tu remplaces "MaMacro" par le nom que tu as dans ton module après le "Sub"

Amicalement

Nad

Bonjour

tout d'abord à Nad-Dan, ta réponse c'est presque cela (au résultat)

étant un peu pris par mon travail je n'ai pu tester aussi rapidement que je voulais la réponse proposée

effectivement ta réponse active bien la macro dans la feuille concernée dès que je quitte la saisie de la cellule, super, c'est ce que je voulais.

mon problème est que cela fonctionne pour la première ligne de saisie mais à la deuxième le sablier s'enclenche et je pense que cela part en boucle de calcul et ca bloque excel.

Le problème doit venir donc de ma macro

Donc si quelqu'un à la bonne âme de rectifier mes erreurs, merci d'avance

Sub essai3()

' Insertion de variable pour recherche dans cellule

refcel = 2

refcol = 5

While Cells(refcel, refcol) <> "" 'on suppose que dans la colonne E, les valeurs commence à la ligne 2

' Dès que vide, on sort de la boucle

If Cells(refcel, refcol) = "x" Then ' si ta cellule contient x

Cells(refcel, refcol + 1) = "ok" ' alors la même ligne dans ta colonne F on a "ok"

Cells(refcel, refcol).Interior.ColorIndex = 48 ' Colorisation de la cellule contenant x

Cells(refcel, refcol + 1).Interior.ColorIndex = 20 'colorisation de la cellule de référence +1 même ligne

Else

Cells(refcel, refcol).Interior.Color = vbRed ' x pas présent dans ta colonne E

End If

refcel = refcel + 1 ' Pour que la boucle WHILE se fasse sur les cellules de ta colonne E

Wend

Bonjour,

Il faut modifier le code de Myta comme suit :

Private Sub Worksheet_Change(ByVal Target As Range)
If ok = True Then Exit Sub
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
ok = True
Call essai3
ok = False
'Ici le code des macros à exécuter
End If
End Sub

Modifie aussi ta macro Essai3 comme ci-dessous :

Public ok As Boolean
Sub essai3()
Dim refcel As Byte, refcol As Byte
' Insertion de variable pour recherche dans cellule
refcel = 2
refcol = 5

While Cells(refcel, refcol) <> "" 'on suppose que dans la colonne E, les valeurs commence à la ligne 2
' Dès que vide, on sort de la boucle
If Cells(refcel, refcol) = "x" Then ' si ta cellule contient x
Cells(refcel, refcol + 1) = "ok" ' alors la même ligne dans ta colonne F on a "ok"
Cells(refcel, refcol).Interior.ColorIndex = 48 ' Colorisation de la cellule contenant x
Cells(refcel, refcol + 1).Interior.ColorIndex = 20 'colorisation de la cellule de référence +1 même ligne
Else
Cells(refcel, refcol).Interior.Color = vbRed ' x pas présent dans ta colonne E
End If
refcel = refcel + 1 ' Pour que la boucle WHILE se fasse sur les cellules de ta colonne E
Wend
End Sub

A te relire

Dan

PS : si ton pb est terminé n'oublie pas mettre RESOLU sur le fil en utlisant la liste déroulante au bas de ton premier message.

Rechercher des sujets similaires à "activer macros vba"