Trouver la valeur X d'une colonne dans une autre colonne

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - Modifié par jordane45 le 19/02/2015 à 17:53
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 13 mars 2015 à 16:52
Bonjour,

J'ai un fichier Excel contenant plusieurs feuilles. J'ai une feuille de compilation contenant toutes mes données et ensuite, je copie les données dans les autres feuilles selon leur type.

Tout fonctionne bien! Mais mon problème, c'est que lorsque je modifie une valeur dans ma colonne C de ma feuille appelée "Coordonnées" elle n'est pas modifié dans l'une des page ou elle se trouve!

Donc, ce que je voudrais, c'est qu'à chaque fois que je modifie une valeur de cette feuille, il modifie aussi la valeur dans l'autre feuille.

J'ai réussi à débuter mon code, comme si j'utilisais seulement une feuille "CPTU", il renvoie la valeur "VRAI" dans à la place de la valeur trouvé correspondante.

Mais après je suis un peu perdue!

Pouvez-vous m'aider?

Merci!

Voici mon code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Value As String
Value = ActiveCell

If Not Intersect(Target, Range("c5:c" & [a1048576].End(xlUp).Row)) Is Nothing Then
    'Quand je double clic dans la colonne C, il m'affiche le message suivant
    
    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
        
       '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é
               
        
            If MsgBox("N'oubliez pas de changer le numéro dans la colonne ABRÉVIATION!", vbExclamation, "IMPORTANT") = vbOK Then
            End If
    Else
    
    Range("a5").Select
    
    End If
End If

End Sub



A voir également:

3 réponses

jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703
19 févr. 2015 à 17:54
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
23 févr. 2015 à 14:34
Merci Jordane!

Dans mon code, j'ai déjà utiliser la fonction Find qui fonctionne très bien. elle me renvoie la valeur VRAI dans la cellule ou il a trouvé la valeur identique à celle recherché.

Mais je ne suis pas capable pour le moment de modifié mon code pour qu'il opère la même modification de ma feuille Coordonnées et à ma feuille CPTU!
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
Modifié par jordane45 le 24/02/2015 à 15:33
Bonjour!

Voici ou j'en suis rendu dans mon code!

J'ai réussi à coller la valeur modifié de ma feuille "Coordonnées" dans la feuille "CPTU" mais pas dans la cellule ou l'argument VRAI est renvoyé. Il copie dans la cellule active de la feuille donc la cellule A7, je ne réussi pas à trouver la façon de lui dire de remplacer l'argument VRAI par la nouvelle valeur de ma feuille "Coordonnées".
Private DLig As Long
Private PL As Range
Public var As Variant
  
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)

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

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)) 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


Et voilà! J'espère que quelqu'un peux m'aider sur ce coup!!!

Merci!!

EDIT : Ajout du langage dans les balises de code
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
24 févr. 2015 à 17:28
Je ne suis pas certain de bien saisir ce que tu veux dire Jordane par ton "EDIT"??
0
jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
24 févr. 2015 à 17:31
Relis les infos contenues dans ce lien :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Si tu utilises les balises de code sans préciser le langage tu obtiens ça :

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

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

Value = ActiveCell


Alors.. que si tu y précise le langage (ici .. basic) .. tu obtiens ceci :
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)

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

Value = ActiveCell


.... c'est plus lisible non ?
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024
Modifié par bassmart le 24/02/2015 à 20:33
Effectivement Jordane, c'est beaucoup plus lisible!!

Désolée!

Merci!
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
13 mars 2015 à 16:52
Bonjours à tous,

Voici le code final qui remplace la valeur dans mes autres feuilles lorsqu'elle est modifié dans ma feuille "Coordonnées".
rivate PL As Range
Option Explicit
  
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim nvalue As String
Dim NewVal As Variant
Dim f As Worksheet
Dim valueRange As Range
Dim Cpt As Integer


Application.ScreenUpdating = False


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(InputBox("Nouveau numéro de sondage?", "MODIFICATION DE NUMÉRO"))
        
        If NewVal = "" Then
            ActiveCell.Offset(-1, 0).Select
            Exit Sub
        Else
            ActiveCell = NewVal
        End If
        
        
            If InStr(1, nvalue, "C") = 1 Or InStr(1, nvalue, "M") = 1 Then
                Set valueRange = Sheets("CPTU").Columns(1)
                
            ElseIf InStr(1, nvalue, "F") = 1 Then
                Set valueRange = Sheets("FORAGE").Columns(1)
                
            ElseIf InStr(1, nvalue, "Z") = 1 Or InStr(1, nvalue, "FZ") = 1 Then
                Set valueRange = Sheets("Piézomètres").Columns(2)
               
            ElseIf InStr(1, nvalue, "I") = 1 Then
                Set valueRange = Sheets("Inclinomètres").Columns(2)
                
            Else
                Set valueRange = Nothing
                MsgBox "La valeur n'a pas été trouvé dans les autres feuilles! Mettre à jours les feuillets sur la page d'accueil!", vbCritical
            End If
            
                If Not valueRange Is Nothing Then
                    valueRange.Replace nvalue, NewVal, lookat:=xlWhole, searchorder:=xlByColumns
                End If

        
                                   
        If NewVal <> nvalue Then
        MsgBox "N'oubliez pas de changer le numéro dans la colonne ABRÉVIATION!", vbExclamation, "IMPORTANT"
        ActiveCell.Offset(-1, 0).Select
        End If
        
    Else
    
    ActiveCell.Offset(-1, 0).Select
    
    End If
    
End If

        

Application.ScreenUpdating = True
Application.EnableEvents = True

 
End Sub
0