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
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir,
Si tu n'as pas de boutons, c'est que tu as des Private Sub, peut-être désactivés
essaye :
Application.EnableEvents = Truepour les réactiver.
Claude.
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
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 SubMytå
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 SubTu 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 SubModifie 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 SubA 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.