Trouver la valeur X d'une colonne dans une autre colonne
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
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:
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:
- Trouver la valeur X d'une colonne dans une autre colonne
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Site x - Guide
- Formule somme excel colonne - Guide
3 réponses
Bonjour,
Jettes un oeil à ceci :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Jettes un oeil à ceci :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
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".
Et voilà! J'espère que quelqu'un peux m'aider sur ce coup!!!
Merci!!
EDIT : Ajout du langage dans les balises de code
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
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 :
Alors.. que si tu y précise le langage (ici .. basic) .. tu obtiens ceci :
.... c'est plus lisible non ?
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 ?
Bonjours à tous,
Voici le code final qui remplace la valeur dans mes autres feuilles lorsqu'elle est modifié dans ma feuille "Coordonnées".
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
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!