Bonjour et meilleurs voeux à tout le forum,
J'ai une macro (que j'ai recupéré)qui me permet de rechercher dans plusieurs feuilles d'un classeur une valeur pour pouvoir modifier la valeur de la cellule suivante.
Dans la 1ere colonne j'ai le nom d'un fichier (RG1 par ex) qui a une version inscrit dans la colonne suivante ( 77 dans l'exemple) et ce dans plusieurs feuilles. Lorsque je modifie mon fichier RG1 j'ai donc une nouvelle version (78 par ex) et donc je dois mettre à jour l'ensemble de mes feuilles qui contiennent le nom du fichier RG1 avec la version.
Mon problème est que la modification n'intervient que dans les autres feuilles et non sur la feuille active. J'ai modifié la macro pour intergrer la notion de feuille active mais sans succès. De plus j'ai une autre macro sur le même fichier et qui se nomme de la même manière d'où une erreur de compilation.
Voici la 1ère Macro dans un module :
et dans chaque feuille
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Public Sub ChangeValeur(Target As Range) Dim numRG As String Dim lgWS As Long Dim lgLig As Long ' N° RG numRG = Range("A" & Target.Row) ' Boucle sur toutes les feuilles du classeur For lgWS = 1 To ThisWorkbook.Worksheets.Count With Worksheets(lgWS) ' Ne pas traiter la feuille active If .Name <> ActiveSheet.Name Then ' Boucle de la ligne 2 à la dernière For lgLig = 2 To .Range("A" & Cells.Rows.Count).End(xlUp).Row ' Si le n° RG correspond If .Range("A" & lgLig).Value = numRG Then .Cells(lgLig, Target.Column).Value = Target.Value Exit For End If Next lgLig End If End With Next lgWS End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Call ChangeValeur(Target) End Sub
Voici la 2ème macro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Dim RgCible As Range Dim OldValue As Variant Private Sub Worksheet_Change(ByVal Target As Range) Dim WksRapport As Worksheet Dim Li As Long Set WksRapport = Worksheets(1) x = Target.Column y = Target.Row Z = Cells(y, x - 1) If Not Intersect(RgCible, Target) Is Nothing Then With WksRapport Li = .Range("d65536").End(xlUp).Row + 1 .Cells(Li, 1) = Cells(y, x - 1).Value .Cells(Li, 2) = OldValue .Cells(Li, 3) = Target.Value .Cells(Li, 4) = Now .Cells(Li, 5) = Worksheets(2).Name End With End If End SubIl y a une 20 de feuilles avec des noms differents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set RgCible = Range("info") If Not Intersect(RgCible, Target) Is Nothing Then OldValue = Target.Value End Sub
Est-il possible de creer un userform pour la 1ère macro presente dans le fichier precedent permettant de rechecher une cellule et donc de modifier la cellule suivante sur l'ensemble des feuilles.
Merci pour votre aide
Partager