Automatisation d'une macro en fonction du changement d'une cellule particuliere

Talu58

XLDnaute Nouveau
Bonjour a tous,


J'ai un fichier excel avec deux types de feuilles:

- une feuille appelee Drop downs regroupant un tableau avec des informations par piece (d'un batiment), chaque type de piece correspondant a une ligne.
- une feuille par piece regroupant les informations de la feuille Drop downs qui sont des valeurs objectifs plus les valeurs reelles que nous atteindrons plus d'autre info pas important pour notre macro...

la macro a pour but de renvoyer les valeurs objectifs dans les feuilles individuelles des que l'on y selectionne le type de piece correspondant.

Je debute vraiment avec VBA donc j'ai fait une macro qui marche mais que j'active sur chaque feuille avec un bouton. je pense que cette macro est tres brouillon et je m'en excuse, comme je vous l'ai dit ce sont mes premiers pas...

Je cherche a automatiser l'activation de la macro des que la case D5 est modifiee quelque soit la feuille (chacune represantant une piece et il y en aura environ 150). Voici la macro:

Sub Limits()
Dim i, AreaType, sheet

i = 43
sheet = ActiveSheet.Name
AreaType = ThisWorkbook.Sheets(sheet).Cells(5, 4).Value


Do While AreaType <> ThisWorkbook.Sheets("Drop downs").Cells(i, 2).Value

i = i + 1

Loop

If AreaType = ThisWorkbook.Sheets("Drop downs").Cells(i, 2).Value Then

Manning = ThisWorkbook.Sheets("Drop downs").Cells(i, 3).Value
Noisetotal = ThisWorkbook.Sheets("Drop downs").Cells(i, 8).Value
HVAC = ThisWorkbook.Sheets("Drop downs").Cells(i, 9).Value
Vibration = ThisWorkbook.Sheets("Drop downs").Cells(i, 7).Value
Illumination = ThisWorkbook.Sheets("Drop downs").Cells(i, 4).Value
Climatelow = ThisWorkbook.Sheets("Drop downs").Cells(i, 5).Value
Climatehigh = ThisWorkbook.Sheets("Drop downs").Cells(i, 6).Value

End If

ThisWorkbook.Sheets(sheet).Cells(7, 4).Value = Manning
ThisWorkbook.Sheets(sheet).Cells(40, 2).Value = Noisetotal
ThisWorkbook.Sheets(sheet).Cells(41, 2).Value = HVAC
ThisWorkbook.Sheets(sheet).Cells(42, 2).Value = Vibration
ThisWorkbook.Sheets(sheet).Cells(43, 2).Value = Illumination
ThisWorkbook.Sheets(sheet).Cells(44, 2).Value = Climatelow
ThisWorkbook.Sheets(sheet).Cells(44, 3).Value = Climatehigh



End Sub


J'espere avoir ete clair, s'il vous manque des infos n'hesitez pas...
Merci d'avance.
Talu58
 

Papou-net

XLDnaute Barbatruc
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

Bonjour Talu58,

Ce serait plus simple et plus efficace de t'aider si tu envoyais un modèle reprenant la structure de ton fichier (sans données confidentielles bien sûr).

A+

Cordialement.
 

Talu58

XLDnaute Nouveau
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

Bonjour Papou-net,

J'avais beaucoup de donnees confidentielles voila pourquoi je n'avais pas joint le fichier, je viens d'eliminer tout ca et de creer un nouveau fichier.

Donc voici le fichier. Pour l'instant, il n'y a que 2 feuilles representant des pieces mais il y en aura bientot 150. Je pense que 2 suffisent pour l'exemple, si je me trompe, on peut bien evidement en rajouter...

Merci
Talu58
 

Pièces jointes

  • modele.xlsm
    33 KB · Affichages: 70
  • modele.xlsm
    33 KB · Affichages: 74
  • modele.xlsm
    33 KB · Affichages: 73

Talu58

XLDnaute Nouveau
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

Bonjour,


Dans un cas, on prend des informations sur de multiples feuilles pour les renvoyer sur une seule, dans l'autre on prend l'information sur une feuille pour la renvoyer vers de multiples feuilles, pour moi c'etait different. je ne suis qu'un novice donc je ne savais pas.

Pourriez vous toutefois m'aider a resoudre l'un de ces problemes et je me debrouillerai avec l'autre s'ils sont equivalents?

Merci
Talu58
 

Pierrot93

XLDnaute Barbatruc
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

Re,

essaye peut être ceci à placer dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim x As Range
If Sh.Name = "Drop downs" Or Target.Address <> "$D$4" Then Exit Sub
Set x = Sheets("Drop downs").Range("B43:B79").Find(Target.Value, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then
    With Sh
        .Cells(7, 4).Value = x.Offset(0, 1)
        .Cells(40, 2).Value = x.Offset(0, 6)
        .Cells(41, 2).Value = x.Offset(0, 7)
        .Cells(42, 2).Value = x.Offset(0, 5)
        .Cells(43, 2).Value = x.Offset(0, 2)
        .Cells(44, 2).Value = x.Offset(0, 3)
        .Cells(44, 3).Value = x.Offset(0, 4)
    End With
End If
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

Re,

modifie comme suit, petite erreur d'adresse + blocage des événements :
Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim x As Range
If Sh.Name = "Drop downs" Or Target.Address <> "$D$5" Then Exit Sub
Set x = Sheets("Drop downs").Range("B43:B79").Find(Target.Value, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then
    Application.EnableEvents = False
    With Sh
        .Cells(7, 4).Value = x.Offset(0, 1)
        .Cells(40, 2).Value = x.Offset(0, 6)
        .Cells(41, 2).Value = x.Offset(0, 7)
        .Cells(42, 2).Value = x.Offset(0, 5)
        .Cells(43, 2).Value = x.Offset(0, 2)
        .Cells(44, 2).Value = x.Offset(0, 3)
        .Cells(44, 3).Value = x.Offset(0, 4)
    End With
    Application.EnableEvents = True
End If
End Sub
 

Talu58

XLDnaute Nouveau
Re : Automatisation d'une macro en fonction du changement d'une cellule particuliere

re,

Pour le placer dans le module "thisworkbook", je dois double cliquer sur ThisWorkBook qui apparait dans l'arbre sous Microsoft Excel Objects puis remplacer general par this Workbook c'est bien ca?

J'ai copie votre macro, supprime l'ancienne que j'avais cree. Lorsque je lis votre macro, on me demande de la nommer, je lui ai donne le nom limit. Je retourne ensuite sur le fichier excel et lorsque je change ma case D5 rien ne se passe. Je ne comprends pas d'ou vient le probleme, un petit coup de pouce supplementaire svp?

Merci
Talu58
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 881
Membres
103 404
dernier inscrit
sultan87