Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Executer une macro a chaque action

  • Initiateur de la discussion Initiateur de la discussion Napst3r
  • 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 !

Napst3r

XLDnaute Nouveau
Salut à tous, ce message est en lien avec "Gérer la catégorie d'un nombre par rapport au contenue d'une cellule". J'ai voulu rouvrir une discution car mon pblm n'est plus le même, donc voila, qqu saurait-il comment je pourrai faire pour que ma macro s'execute casiment tt le temps, en fait jvoudrai que a chaque fois que je fais une action sur une cellule la macro ce mette en route, ou qqc dans ce genre comme pk pas quel s'execute toute les 3 ou 4s.

Jvous join mon fichier quand même au cas ou (la macro agit sur les colonne G et H)

aller salut les xldnaute, Napst3r
 

Pièces jointes

Re : Executer une macro a chaque action

Bonjour Napst3r,

peut-être comme ça :

Code:
Sub Convertion()
  Dim Derlig As Long, Lig As Long
  Application.EnableEvents = False
  ' Convertir le format de la colonne G en nombre avec 3 chiffres derrière la virgule
  Columns("G:G").NumberFormat = "#,##0.000"
  ' Trouver la dernière ligne du tableau
  Derlig = Range("A" & Rows.Count).End(xlUp).Row
  ' Pour chaque ligne
  For Lig = 2 To Derlig
    ' Si l'unité est le mêtre
    If Range("H" & Lig).Value = "M" Then
      ' On divise la vrai valeur par 1000
      Range("G" & Lig).Value = Range("G" & Lig).Value / 1000
    End If
  Next Lig
  Application.EnableEvents = True
End Sub

et à ajouter dans le code de la Feuil1 :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Convertion
End Sub
 
Re : Executer une macro a chaque action

Bonjour,

J'avais fait ça qui est pareil que ci-dessus mais tout dans le code de la feuille1 et dans mon cas, le code ne s'exécute que si la modif est faite dans les colonnes A à E :
Code:
Option Explicit


Private Sub Worksheet_Change(ByVal Cible As Excel.Range)
If Not Intersect(Range("A:E"), Cible) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Call Convertion
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

' ---------- Si au cours des essais, une erreur survient, la détection automatique d'événements ne fonctionne plus.
'            Il faut donc la réactiver en mettant le curseur sur la ligne de code ci-dessous et en appuyant sur F5
Sub ess()
Application.EnableEvents = True
End Sub

J'ai ajouté le sub essai car si une erreur survient lors de tes essais, la détection auto d'événements ne fonctionne plus. Il faut la relancer comme indiqué

Cordialement
 
Dernière édition:
Re : Executer une macro a chaque action

C'est exactement ca, merci tototiti2008, le seul souci maintenant c'est que je viens de m'apercevoir que le fait de demmarer la macro change le contenu de mes cellule, et quand elle se demmare une nvl fois, elle prend en compte le nouvo contenu des cellule et au final les chiffre tombe à zero, jss pas très claire excuze moi mais je te renvoi le fichier tu comprendra ptét mieu par toi même (Change une valeur de la colone G et regarde, bien sur je voudrai pas abuzer de ton temps mais si jms tu te penche sur le pblm jten remerci grandement)

Au plaisir, Napst3r
 

Pièces jointes

Dernière édition:
Re : Executer une macro a chaque action

Bonjour mecano 41,
Re,


Napst3r : je pense que tu vas devoir nous expliquer ce que Convertion doit faire exactement, et dans quels cas, sinon on va avoir du mal à comprendre. Je vois qu'il divise la valeur de la colonne G par 1000 si la colonne H contient M.
Il est évident que ce calcul ne doit être réalisé qu'une fois.
Mais ce que tu veux, c'est que si on change les valeurs des colonnes G et H, il refasse la convertion automatiquement (en divisant par 1000), c'est bien ça ?
 
Dernière édition:
Re : Executer une macro a chaque action

je ne comprend pas trop ton code mécano41, je l'ai rentré dans le code de la feuille mais rien ne se pass, c'est ptét de ma faute aussi je suis asser ressend sur excel.

En tout cas pour toute vos contribution, un grand MERCI
 
Re : Executer une macro a chaque action

En fait tototiti2008, si jms tu aver 5min peut tu jeter un coup d'oeil a la discution "Gérer la catégorie d'un nombre par rapport au contenue d'une cellule", j'y expliquer ce que je cherché a faire. Sinn pour faire vite je voulais avec ce module que ma graciesement fait BrunoM45 (merci encore a toi), c'est changer la caractéristique du nbre selon l'unité donner, je rentre toute les valeur en mm (ou juste en nombre pour les PCE=Pièce mais sa revien au même que les MM) et donc selon l'unité en H (M ou MM) la valeur en G change
ex.
pour 58600 M (la j'ai taper 58600) sa devient 58,600 M et sa change pas si c MM ou PCE, le seul souci c'est que les valeur ou les unité pourrai changer et donc je voudrai que si je retape une nvl valeur ou si je change l'unité en H, la convertion se refasse
Je sais pas trop si c clair, mais si vous vouler en savoir plus hésité pas

Encor Merci tous
 
Re : Executer une macro a chaque action

Normalement, en remplaçant dans mon code la ligne :

Code:
If Not Intersect(Range("A:E"), Cible) Is Nothing Then

par la ligne :

Code:
If Not Intersect(Range("G:G"), Cible) Is Nothing Then

cela doit fonctionner...

Cordialement
 
Re : Executer une macro a chaque action

nn mécano41, j'ai tjr le même souci, admetton en G2 quand je retape une valeur, toute la colone G se rincrémente de la conversion (c'est un peu mal dit mais bon), mais je pensse a un truc sinn, serai t'il possibl de faire la même chose mais seulement à chaque fois juste sur la ligne ou la modif a été faite et nn sur toute la colone G...

Merci de l'intéret que vous porter à mon pblm les gars
 
Dernière édition:
Re : Executer une macro a chaque action

Oui, la macro Convertion reconvertit toutes les lignes. BrunoM45 t'as fait une macro qui ne devais pas se lancer plusieurs fois mais une seule et donc qui traite toutes les lignes. Logique.

à tester dans la Feuil1 à la place du code existant :

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Range("H:H"), Target) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
if Target.value = "M" then
Target.offset(0,-1).value = Target.offset(0,-1).value/1000
end if
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

le recalcul ne se fait que si on change l'unité...
 
Re : Executer une macro a chaque action

Il faut deux sub.

L'un se lance pour convertir la cellule de la colonne G en fonction de l'unité de la colonne H de la ligne correspondante, si cette cellule est modifiée

L'autre se lance pour convertir la cellule de la colonne G si l'unité correspondante est modifiée dans la colonne H

Je vais regarder...
 
Re : Executer une macro a chaque action

le pblm de ton code tototiti2008 (jveux pas abuser nn plus c déja simpa de ta part), c'est que si je passe des M au MM rien ne se passe, sa marche seulement si j'ai des MM et que je passe sa en M, de plus si je reste en M et que je veux juste changer la valeur ba sa marche pa nn plus, mais c'est cool de ta part quand même

Je vous dirai jms asser merci les gars, donc merci, Napst3r
 
Re : Executer une macro a chaque action

Ton idée n'a pas l'air mal mécano41, jaV pensser a un truc comme sa mais c'est même pas la peine que j'éssai d'écrire un module sinn je fais péter l'ordi (surtt que c pa le mien...)
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…