Microsoft 365 Remplacement de valeur en comparant les valeurs

  • Initiateur de la discussion Initiateur de la discussion sam01
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sam01

XLDnaute Nouveau
Bonjour.

je souhaiterais comparer la valeur de la colonne B de la feuille source par rapport à la valeur de la colonne C de la feuille cible.

Si c'est la même valeur, reporter la valeur de la colonne B de la feuille cible vers la cellule de la colonne C de la feuille source.

merci pour votre aide.
 

Pièces jointes

Bonjour,

il faut enregistrer ton fichier en xlsm. copie/colle ce code dans un module standard et tu l’exécutes (F5)
VB:
Option Explicit
Sub Comparer_Reporter_BenC()
    Dim wsSource As Worksheet, wsCible As Worksheet
    Dim dlSource As Long, dlCible As Long
    Dim i As Long, j As Long
    
    ' Définir les feuilles source et cible
    Set wsSource = ThisWorkbook.Sheets("source")
    Set wsCible = ThisWorkbook.Sheets("cible")
    
    ' Trouver la dernière ligne de chaque feuille
    dlSource = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    dlCible = wsCible.Cells(wsCible.Rows.Count, "C").End(xlUp).Row
    
    ' Boucle à travers chaque ligne de la feuille source
    For i = 1 To dlSource
        ' Boucle à travers chaque ligne de la feuille cible
        For j = 2 To dlCible ' Commencer à 2 pour ignorer la ligne des titres
            ' Comparer les valeurs
            If wsSource.Cells(i, "B").Value = wsCible.Cells(j, "C").Value Then
                ' Si égal, reporter la valeur de la colonne B de la feuille cible dans la colonne C de la feuille source
                wsSource.Cells(i, "C").Value = wsCible.Cells(j, "B").Value
                Exit For ' Sortir de la boucle si une correspondance est trouvée
            End If
        Next j
    Next i
    
    MsgBox "Mise à jour terminée dans la colonne C!"
End Sub
 
Bonjour,

il faut enregistrer ton fichier en xlsm. copie/colle ce code dans un module standard et tu l’exécutes (F5)
VB:
Option Explicit
Sub Comparer_Reporter_BenC()
    Dim wsSource As Worksheet, wsCible As Worksheet
    Dim dlSource As Long, dlCible As Long
    Dim i As Long, j As Long
    
    ' Définir les feuilles source et cible
    Set wsSource = ThisWorkbook.Sheets("source")
    Set wsCible = ThisWorkbook.Sheets("cible")
    
    ' Trouver la dernière ligne de chaque feuille
    dlSource = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    dlCible = wsCible.Cells(wsCible.Rows.Count, "C").End(xlUp).Row
    
    ' Boucle à travers chaque ligne de la feuille source
    For i = 1 To dlSource
        ' Boucle à travers chaque ligne de la feuille cible
        For j = 2 To dlCible ' Commencer à 2 pour ignorer la ligne des titres
            ' Comparer les valeurs
            If wsSource.Cells(i, "B").Value = wsCible.Cells(j, "C").Value Then
                ' Si égal, reporter la valeur de la colonne B de la feuille cible dans la colonne C de la feuille source
                wsSource.Cells(i, "C").Value = wsCible.Cells(j, "B").Value
                Exit For ' Sortir de la boucle si une correspondance est trouvée
            End If
        Next j
    Next i
    
    MsgBox "Mise à jour terminée dans la colonne C!"
End Sub

Salut cathodique.
Merci à toi. Je vais tester ça.
 
Bonjour,

il faut enregistrer ton fichier en xlsm. copie/colle ce code dans un module standard et tu l’exécutes (F5)
VB:
Option Explicit
Sub Comparer_Reporter_BenC()
    Dim wsSource As Worksheet, wsCible As Worksheet
    Dim dlSource As Long, dlCible As Long
    Dim i As Long, j As Long
   
    ' Définir les feuilles source et cible
    Set wsSource = ThisWorkbook.Sheets("source")
    Set wsCible = ThisWorkbook.Sheets("cible")
   
    ' Trouver la dernière ligne de chaque feuille
    dlSource = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    dlCible = wsCible.Cells(wsCible.Rows.Count, "C").End(xlUp).Row
   
    ' Boucle à travers chaque ligne de la feuille source
    For i = 1 To dlSource
        ' Boucle à travers chaque ligne de la feuille cible
        For j = 2 To dlCible ' Commencer à 2 pour ignorer la ligne des titres
            ' Comparer les valeurs
            If wsSource.Cells(i, "B").Value = wsCible.Cells(j, "C").Value Then
                ' Si égal, reporter la valeur de la colonne B de la feuille cible dans la colonne C de la feuille source
                wsSource.Cells(i, "C").Value = wsCible.Cells(j, "B").Value
                Exit For ' Sortir de la boucle si une correspondance est trouvée
            End If
        Next j
    Next i
   
    MsgBox "Mise à jour terminée dans la colonne C!"
End Sub
Salut. Je te remercie. Je viens de tester ta macro. ça fonctionne nickel. Serait-il possible de mettre en évidence les ligne que l'on ne trouve pas dans la feuille cible. J'ai effectivement besoin de savoir quelles sont ces lignes. >Les surligner en rouge par exemple. Merci encore pourr ton aide.
 
Salut. Je te remercie. Je viens de tester ta macro. ça fonctionne nickel. Serait-il possible de mettre en évidence les ligne que l'on ne trouve pas dans la feuille cible. J'ai effectivement besoin de savoir quelles sont ces lignes. >Les surligner en rouge par exemple. Merci encore pourr ton aide.
Pas sûr d'avoir bien compris. code à tester
VB:
Sub Comparer_Reporter_Reperer()
     Dim wsSource As Worksheet, wsCible As Worksheet
    Dim dlSource As Long, dlCible As Long
    Dim i As Long, j As Long
    Dim Trouver As Boolean

    ' Définir les feuilles source et cible
    Set wsSource = ThisWorkbook.Sheets("source")
    Set wsCible = ThisWorkbook.Sheets("cible")

    ' Trouver la dernière ligne de chaque feuille
    dlSource = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    dlCible = wsCible.Cells(wsCible.Rows.Count, "C").End(xlUp).Row

    ' Réinitialiser la couleur des cellules de A à G
    wsSource.Range("A1:G" & dlSource).Interior.ColorIndex = xlNone

    ' Boucle à travers chaque ligne de la feuille source
    For i = 1 To dlSource
        Trouver = False ' Réinitialiser la variable pour chaque ligne de la source
        
        ' Boucle à travers chaque ligne de la feuille cible
        For j = 2 To dlCible ' Commencer à 2 pour ignorer la ligne des titres
            ' Comparer les valeurs
            If wsSource.Cells(i, "B").Value = wsCible.Cells(j, "C").Value Then
                ' Si égal, reporter la valeur de la colonne B de la feuille cible dans la colonne C de la feuille source
                wsSource.Cells(i, "C").Value = wsCible.Cells(j, "B").Value
                Trouver = True ' Marquer comme trouvé
                Exit For ' Sortir de la boucle si une correspondance est trouvée
            End If
        Next j
        
        ' Si non trouvé, mettre en évidence la plage A:G
        If Not Trouver Then
            wsSource.Range(wsSource.Cells(i, 1), wsSource.Cells(i, 7)).Interior.Color = RGB(255, 255, 0) ' Surligner en jaune
        End If
    Next i

    MsgBox "Mise à jour terminée dans la colonne C!"
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
398
Réponses
4
Affichages
178
Retour