Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1628 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [vba excel] executer une macro sur un click

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[vba excel] executer une macro sur un click

n°1437857
wilmath
Posté le 06-09-2006 à 17:20:56  profilanswer
 

Bonjour,  
 
Super débutante en VB. J'ai développé une macro qui permet de griser les lignes de mon tableau excel si la valeur d'une cellule est égale à "NON".  
Mais je suis obligée de lancer manuellement l'éxecution de la macro pour que ça le fasse, alors que je voudrais que la macro se déclenche dès que la cellule reçoit (en création ou en modification) la valeur "NON".  
Je ne sais pas comment lier l'éxecution de la macro à un évènement, que ce soit ouverture du fichier ou modif de la cellule ou click...  
Merci d'avance pour votre aide.
 

mood
Publicité
Posté le 06-09-2006 à 17:20:56  profilanswer
 

n°1437907
seniorpapo​u
Posté le 06-09-2006 à 18:03:56  profilanswer
 

Bonsoir,
tu peux mettre par exemple :
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$5" and target = "NON" Then  
Beep
End if
End Sub
 
Au niveau de feuill1  
$A$5 est supposé être la cellule  ou tu frappes NON
le beep correspond à l'endroit où tu peux faire quelque chose
Cordialement


Message édité par seniorpapou le 06-09-2006 à 18:07:47
n°1437909
pifa
Bonjour à tous et toutes
Posté le 06-09-2006 à 18:08:31  profilanswer
 

Bonjour,
Dans, l'éditeur vbe, dans l'arborescence Microsoft Excel Objets, sélectionner la feuille ou doit être active la macro par un double clic.
Dans la zone réservée au code, sélectionner dans la liste déroulant de gauche Worksheet, puis dans la liste déroulante de droite Change, cela créera la première et dernière ligne du code s'exécutant lors d'un changement dans la feuille, il faut alors y insérer le code adapté.
 
ici affichage d'une boite de message vide:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Value = "NON" Then
    MsgBox toto
End If
End Sub
 
Cordialement
Pifa

n°1438180
wilmath
Posté le 07-09-2006 à 11:37:00  profilanswer
 

Bonjour,  
Merci pour vos réponses.
 
J'ai fait ce que vous m'avez suggéré, en copiant le code de ma macro entre le if et le end if. Mais lorsque je veux tester, je change une valeur dans mon fichier et là, il me rebalance sur l'éditeur VB, en surlignant ma première ligne de code.  
Quand j'essaie de débugger, il m'ouvre une fenêtre de liste des macros ?!!
Je ne comprends pas...
 
A tout hasard, je vous mets le code que j'obtiens, peut-être que ça vient d'une erreur dans le code et que le debugger n'est pas explicite :
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Range(Target.Address) = 4 And Target = "NON" Then
           Rows(Selection.Row).Select
            With Selection.Interior
                .ColorIndex = 15
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
            End With
Else
           Rows(Selection.Row).Select
            With Selection.Interior
                .ColorIndex = 15
                .Pattern = xlSolid
                .PatternColorIndex = xlNone
            End With
End If
End Sub
 
 
Merci d'avance

n°1438237
seniorpapo​u
Posté le 07-09-2006 à 12:22:55  profilanswer
 

Bonjour,  
qu'est-ce qui est "visé" par :If Range(Target.Address) = 4 ?
 
si c'est la colonne 4, mettre if target.column = 4
 
pas d'erreur de compile, le "surlignant" c'est en jaune?
si oui y a-t-il un rond marron à gauche ?
si non, y a-t-il un message d'erreur qui s'affiche avant de revenir sur VB? lequel
Cordialement


Message édité par seniorpapou le 07-09-2006 à 12:28:00
n°1438242
agkklr
Posté le 07-09-2006 à 12:29:09  profilanswer
 

Si j'ai bien compris ce que tu veux faire, il faut remplacer "Selection" par "Target"
 
If Range(Target.Address) = 4 And Target = "NON" Then
           Rows(Target.Row).Select
            With Selection.Interior
                .ColorIndex = 15
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
            End With
Else
           Rows(Target.Row).Select
            With Selection.Interior
                .ColorIndex = 15
                .Pattern = xlSolid
                .PatternColorIndex = xlNone
            End With
End If
 
Ensuite, effectivement, normalement Range(Target.Address) == Target lorsque tu modifies une cell. J'imagine qu'en fait, ce que tu voulais, c'étais tester si la cell contient "NON", et vérifier qu'elle se situe sur la 4eme colonne ?
 
Dans ce cas, ce serait If Target.Column = 4 And Target = "NON" Then
 
Sinon, pour le "surlignage", c'est que tu dois avoir un stop code sur la ligne (un petit disque marron à gauche de la ligne de code) dans ton éditeur VBA. Clique sur le petit disque pour supprimer le marqueur.


Message édité par agkklr le 07-09-2006 à 12:30:36

---------------
"Mon modèle, c'est moi-même."
n°1438252
agkklr
Posté le 07-09-2006 à 12:53:47  profilanswer
 

nb : Tel que, ton code va supprimer le grisage de la ligne à chaque fois que tu modifieras une valeur du tableau...
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 4) = "NON" Then
        Rows(Target.Row).Select
        With Selection.Interior
            .ColorIndex = 15
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
Else
        Rows(Target.Row).Select
        With Selection.Interior
            .ColorIndex = 15
            .Pattern = xlSolid
            .PatternColorIndex = xlNone
        End With
End If
End Sub
 
C'est bourrin, mais c'est efficace :-)


---------------
"Mon modèle, c'est moi-même."
n°1438339
wilmath
Posté le 07-09-2006 à 14:21:19  profilanswer
 

Merci !
Ca marche très bien. C'est parfait !
 
Merci à tous ceux qui m'ont répondu : j'ai appris plein de chose en VB aujourd'hui (je crois que j'ai quand même un peu de marge avant l'expertise ;) !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [vba excel] executer une macro sur un click

 

Sujets relatifs
[Resolu]C# Ouvrir un fichier via double click à partir de mon appliImporter des donnees txt sur excel
[VB/VBA/VBS] Macro Excel - nommer des cellules par lotcopier/coller des lignes sous excel avec condition
Appeler une macro Word en C#[JS] executer un javascript quand on reactualise la page
macro excelmacro sous excel
Plus de sujets relatifs à : [vba excel] executer une macro sur un click


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR