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

Voici quelque chose qui devrait aller.

- si tu mets une valeur (supposée être en millimètres), dans une cellule de G et si l'unité à côté en H est le mètre, la division par 10 s'effectue.

- si l'unité d'une valeur est le millimètre et que tu modifies dans la colonne H pour y mettre des mètres, la division par 10 s'effectue

- si l'unité d'une valeur est le mètre et que tu modifies dans la colonne H pour y mettre des millimètres, la multiplication par 10 s'effectue

Il y aurait encore des modifs à faire... les unités mètre et millimètre doivent être normalement indiquées en minuscules ; on pourrait convertir automatiquement...il faudrait voir aussi pour le format en G ; si tes mm n'ont jamais de décimales, on pourrait mettre le format correspondant en ne mettant les décimales que pour les mètres. Idem si l'unité est la pièce...

Cordialement
 

Pièces jointes

Re : Executer une macro a chaque action

En ajoutant dans les codes Feuille1 :

Code:
Private Sub Worksheet_SelectionChange(ByVal Cible As Excel.Range)
MemoireContenuCible = Cible.Value
End Sub

en ajoutant en tête de module 1 :

Code:
Public MemoireContenuCible As Variant

et en modifiant ce sub :

Code:
Sub Conversion2(CellCibl As Range)
Columns("G:G").NumberFormat = "#,##0.000"    ' Convertir le format de la colonne G en nombre avec 3 chiffres derrière la virgule
If MemoireContenuCible = "MM" And CellCibl = "M" Then                            ' Si la nouvelle unité est le mètre
    Range("G" & CellCibl.Offset(0, -1).Row).Value = Range("G" & CellCibl.Offset(0, -1).Row).Value / 1000       ' On divise la valeur par 1000
ElseIf MemoireContenuCible = "M" And CellCibl = "MM" Then                     ' Si la nouvelle unité est le millimètre
    Range("G" & CellCibl.Offset(0, -1).Row).Value = Range("G" & CellCibl.Offset(0, -1).Row).Value * 1000       ' On multiplie la valeur par 1000
End If
End Sub

cela a l'air de résoudre le problème de réécriture de la même unité... mais il y en a probablement d'autres!

Cordialement
 
Re : Executer une macro a chaque action

whaaaaaaouuuuu! Franchement mécano41 ce que tu ma fait la c'est énorme sa marche nickel, t'y est pour qqc aussi tototiti2008, je vous doit une fier chandel.
juste une dernière chose et après je vous embéte plus, dans ton module yaurai moyen de dire que PCE est pareille que MM, comme sa un jour si on remplacer l'unité PCE par M ou MM et vise versa la conversion se fait aussi.

Cher xldnaute merci pour tout, Napst3r
 
Re : Executer une macro a chaque action

Edit : Désolé me suis trompé, rien à dire sur MemoireContenuCible

Un autre remarque : les valeurs du tableau sont-elles toujours saisies ou peuvent-elles être mises par copier coller ?

si on fait un copier coller, ça peut poser un problème.

embêtant le tototiti aujourd'hui 😉
 
Dernière édition:
Re : Executer une macro a chaque action

une proposition si on fait un copier/coller de plusieurs cellules (à tester)

Code:
Private Sub Worksheet_Change(ByVal Cible As Excel.Range)
Dim cellule As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Intersect(Range("G:G"), Cible) Is Nothing Then
    If Cible.Count = 1 Then
        Call Conversion1(Cible)
    Else
        For Each cellule In Cible
            Call Conversion1(cellule)
        Next cellule
    End If
ElseIf Not Intersect(Range("H:H"), Cible) Is Nothing Then
    If Cible.Count = 1 Then
        Call Conversion2(Cible)
    Else
        For Each cellule In Cible
            Call Conversion2(cellule)
        Next cellule
    End If
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 
Re : Executer une macro a chaque action

Euh, une remarque : MemoireContenuCible stocke la valeur de la dernière cellule modifiée... or ce n'est pas forcément la même que celle qui est modifiée ensuite.

Non, ça prend la valeur de la cellule que l'on vient de sélectionner, donc celle que l'on va modifier ; si l'on veut en modifier une autre, on va bien se déplacer vers celle-ci et alors la procédure Worksheet-SelectionChange va mettre à nouveau le contenu en mémoire avant la modif. ... à moins que je n'aie pas compris ce que tu veux dire car chez moi, cela semble marcher. Il faudrait m'expliquer ce qui ne va pas afin que je le modifie...


Pour napst3r :

Pour ce que tu demandes, il ne doit pas y avoir de problème mais :

- si c'est en m ou mm et que l'on met PCE à la place, on fait quoi en G? Rien?
- que fait-on pour les formats (voir à la fin de mon message #16), on met 0 décimales si mm ou PCE et 3 décimales si m?

J'attends vos réponses avant de commencer : 😀

Cordialement
 
Re : Executer une macro a chaque action

c'est ce que je voulait faire au debut mais je me disais que vous en avier déja fait pas mal, sinon oui je n'ai jamais de décimal en MM (et en PCE mais sa va de soi), a lorigine je voulait sa: (plusieurs cas de figure dit moi ce que tu en pensse) (a critiquer)
- 11,111 M
- 11 MM
- 11 PCE
- 11 M
- 11,110 M
alors tu saurai faire sa toi, parsque moi déja que faire un tt petit programme je c pa mais la je séche, et en plus se serai de faire sa tout en gardant les même contrainte qu'avant.

Dsl si je fais bouillir vos cerveau avec tout, en tout cas vous êtes des as les mecs
 
- 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

Retour