Suivi des modifications d'une cellule dans une feuille vers une autres

bassmart

XLDnaute Nouveau
Bonjours à tous!

Je vous expose ce que fait mes feuilles!

J'ai une feuille de compilation globale (inventaire) qui s'appelle "Coordonnées"où j'entre toutes mes données. À partir de cette feuille, j'effectue un tri de toutes les données selon leurs types, qui est déterminé par la première lettre de leur numéro (ex: F35001-006-12). Ensuite, je copie et colle les données dans chacune des feuilles qui correspond à chacun des types (4 feuilles: FORAGE, CPTU, Piézomètres et Inclinomètres).

Tout s'effectue très bien, mais voici mon problème:

Lorsque je veux modifier une données dans ma feuille "Coordonnées", je veux qu'elle soit modifié aussi dans la feuille on la valeur à modifier se retrouve.

J’ai réussi à faire un code, en supposant que ma feuille cible (où se retrouve aussi ma valeur) était « CPTU ». Donc, la macro se lance quand je double-clic dans une cellule de la colonne C de ma feuille « Coordonnées », m’envoie un message pour confirmer la modification de la cellule. Vérifie ensuite, où est la valeur à modifier dans la feuille « CPTU » et renvoie la valeur VRAI à la place de la valeur identique trouvée dans la feuille « CPTU ».

C’est ici que je ne trouve pas comment faire!
Je veux que la macro copie la valeur modifié dans la feuille « Coordonnées » dans la feuille « CPTU » à la place de valeur VRAI.

Mon but final, est dès que je modifie une valeur dans ma feuille « Coordonnées », que la macro modifie aussi la valeur identique dans les autres feuilles selon le type trouvé.

Merci de votre aide!!

Voici mon code:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim Value As String
Dim NewVal As String
Dim VRAI As Boolean
Dim cell As String

Value = ActiveCell
    
'
'Pose la question dans la MsgBox lorsque l'on double-clic dans la colonne C
'
If Not Intersect(Target, Range("c5:c" & [a1048576].End(xlUp).Row + 1)) Is Nothing Then
        
    If MsgBox("Voulez-vous mofifier cette cellule?", _
        vbYesNo + vbQuestion, "MODIFER") = vbYes Then
        
'Ici je veux qu'il compare la colonne C de ma feuille Coordonnées avec la colonne A de mes feuilles _
CPTU et Forage, ainsi que sur la colonne B de mes feuilles Piézomètres et Inclinomètres
'
          
    Sheets("CPTU").Columns(1).Find(Value, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, Searchdirection:=xlNext) = True
    
    NewVal = UCase(Application.InputBox("Nouveau numéro?", "MODIFICATION DE NUMÉRO", Type:=2))
    
    ActiveCell = NewVal
    
        
        If var <> Target Then
        var = Target.Value
        MsgBox "VALEUR CHANGÉE!", vbInformation
        End If
        
        Selection.Copy
        'si je modifie ma cellule active sur ma feuille Coordonnées, il modifier ou colle la nouvelle valeur _
        à dans la bonne feuille ou la valeur est stocké
        Sheets("CPTU").Select
        ActiveCell.Select
        ActiveCell.PasteSpecial xlPasteValues                              
                
                       
                
        Sheets("Coordonnées").Select
        Application.CutCopyMode = False
        MsgBox "N'oubliez pas de changer le numéro dans la colonne ABRÉVIATION!", vbExclamation, "IMPORTANT"
               
  
           
            
    Else
    
    Range("B5").Select
    
    End If
    
End If

 Range("B5").Select
 
End Sub
 

gosselien

XLDnaute Barbatruc
Re : Suivi des modifications d'une cellule dans une feuille vers une autres

Bonsoir,

je ne te serai pas d'une grande aide c'est sur, mais tu devrais envoyer un court fichier ici avec des données non sensibles :)
ça aide ...
P.
 

gosselien

XLDnaute Barbatruc
Re : Suivi des modifications d'une cellule dans une feuille vers une autres

re,

déjà "value" est un mot réservé....
à ne pas utiliser donc, tu mets un mValue à la place c'est mieux et Option Explicit en tout début de code :)
 

bassmart

XLDnaute Nouveau
Re : Suivi des modifications d'une cellule dans une feuille vers une autres

Petite mise à jours!

Finalement il copie dans la dernière cellule que j'ai sélectionnée dans ma feuille CPTU, comment lui dire de copier ou est la valeur vrai?

Merci!
 

gosselien

XLDnaute Barbatruc
Re : Suivi des modifications d'une cellule dans une feuille vers une autres

option explicit fait en sorte que toutes tes variables doivent être déclarées sans quoi le code ne démarre pas, ça évite ainsi de mettre un nom différent mais qui ressemblerait comme "cel" ou "cell" , seul le mot déclaré sera opérationnel , c'est très recommandé :)
 

bassmart

XLDnaute Nouveau
Re : Suivi des modifications d'une cellule dans une feuille vers une autres

Bon et voilà avec un peu d'aide ce que l'on peux faire!

Voici mon code final:

Private dlig As Long
Private PL As Range
Public var As Variant
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim nValue As String
Dim NewVal As String
Dim f As Worksheet
Dim sheetName As String

Application.ScreenUpdating = False

For Each f In ActiveWorkbook.Worksheets
f.Unprotect
Next

nValue = ActiveCell.Value

If Not Intersect(Target, Range("c5:c" & [a1048576].End(xlUp).Row + 1)) Is Nothing Then

If MsgBox("Voulez-vous mofifier le numéro de ce sondage?", _
vbYesNo + vbQuestion, "MODIFER") = vbYes Then
NewVal = UCase$(Application.InputBox("Nouveau numéro de sondage?", "MODIFICATION DE NUMÉRO", Type:=2))
ActiveCell = NewVal

If var <> Target Then
var = Target.Value
MsgBox "VALEUR CHANGÉE!", vbInformation
End If

If InStr(1, nValue, "C") = 1 Or InStr(1, nValue, "M") = 1 Then
sheetName = "CPTU"
ElseIf InStr(1, nValue, "F") = 1 Then
sheetName = "FORAGE"
ElseIf InStr(1, nValue, "Z") = 1 Or InStr(1, nValue, "FZ") = 1 Then
sheetName = "Piézomètres"
ElseIf InStr(1, nValue, "I") = 1 Then
sheetName = "Inclinomètres"
Else
sheetName = ""
MsgBox "La valeur n'a pas été trouvé", vbCritical
End If

If Len(sheetName) > 0 Then
Sheets(sheetName).Columns(1).Replace nValue, NewVal, LookAt:=xlWhole, SearchOrder:=xlByColumns
End If

MsgBox "N'oubliez pas de changer le numéro dans la colonne ABRÉVIATION!", vbExclamation, "IMPORTANT"

Else

Range("B5").Select

End If

End If

For Each f In ActiveWorkbook.Worksheets
f.Protect
Next

Application.ScreenUpdating = True

Range("B5").Select

End Sub

Juste une petite chose, la première fois que je lance la macro en double-cliquant tous ce passe normalement mais quand je double-clic une seconde fois sur une autre cellule, rien ne se passe. Il faut que ferme mon fichier et que je le ré-ouvre pour que ça fonctionne encore.

Avez-vous une idée sur ce problème?

Merci!
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400