Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Copier coller si valeur correspond

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 !

Stéfane

XLDnaute Occasionnel
Bonjour à tous,


Je suis à la recherche d'une macro me permettant de comparer 2 listes, A8 et AA2, et de copier-coller, lorsque la valeur en case A correspond à la valeur en cas AA, copier les valeur de AC pour les coller en M.

Sans modification des valeurs n'étant pas dans l'une ou l'autre des 2 listes.

D'avance merci,

Stéfane
 

Pièces jointes

Solution
Par VBA

il y a un doublon en colonne AA cf Poste #1
C'est cela que vous essayer de comparer ?
213122 = 28 (Colonne AA11) ou 213122 = 34 (Colonne AA18)
Ligne 17 avec la formule = 28
Ligne 17 avec VBA = 34

VB:
Sub Comparlist()
Dim T() As Variant
ReDim T(0 To 2)
    T(0) = Range(Cells(8, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
    T(1) = Range(Cells(2, 27), Cells(Cells(65536, 27).End(xlUp).Row, 27))
    T(2) = Range(Cells(2, 29), Cells(Cells(65536, 27).End(xlUp).Row, 29))
'
    For i = LBound(T(0), 1) To UBound(T(0), 1)
        For j = LBound(T(1), 1) To UBound(T(1), 1)
            If T(0)(i, 1) = T(1)(j, 1) Then
                Cells(i + 7, 13) = T(2)(j, 1)
            End If
        Next j
    Next i
End Sub
Bonsoir

Uniquement pas VBA, avec une Fonction c'est possible aussi :
Colonne M8 a étendre vers le bas.
=SI(A8=RECHERCHEV(A8;$AA$2:$AD$33;1;FAUX);RECHERCHEV(A8;$AA$2:$AD$33;3;FAUX);"")
 
Dernière édition:
Bonsoir

Merci pour votre aide.
C'est vrai que je ne l'ai pas préciser mais je préfèrerais une macro, car si je met une formule les autres (ceux qui ne sont pas en A) seront à 0 n'étant pas en AA.

Merci,
 
Par VBA

il y a un doublon en colonne AA cf Poste #1
C'est cela que vous essayer de comparer ?
213122 = 28 (Colonne AA11) ou 213122 = 34 (Colonne AA18)
Ligne 17 avec la formule = 28
Ligne 17 avec VBA = 34

VB:
Sub Comparlist()
Dim T() As Variant
ReDim T(0 To 2)
    T(0) = Range(Cells(8, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
    T(1) = Range(Cells(2, 27), Cells(Cells(65536, 27).End(xlUp).Row, 27))
    T(2) = Range(Cells(2, 29), Cells(Cells(65536, 27).End(xlUp).Row, 29))
'
    For i = LBound(T(0), 1) To UBound(T(0), 1)
        For j = LBound(T(1), 1) To UBound(T(1), 1)
            If T(0)(i, 1) = T(1)(j, 1) Then
                Cells(i + 7, 13) = T(2)(j, 1)
            End If
        Next j
    Next i
End Sub
 
Dernière édition:
Bonjour

Un grand merci, votre macro fonctionne parfaitement !!
J'ai fait une erreur sur le positionnement de ma colonne AD et souhaiterais que votre formule fonctionne avec la colonne AC à la place. pas de changment sur le reste.
Comment puis-je la modifier svp ?

Merci pour votre aide.
 
Pour rechercher les erreurs doublons dans la colonne AA faite un essais.

Colonne A : T(0) = Range(Cells(8, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
Colonne AA : T(1) = Range(Cells(2, 27), Cells(Cells(65536, 27).End(xlUp).Row, 27))
Colonne AC : T(2) = Range(Cells(2, 29), Cells(Cells(65536, 27).End(xlUp).Row, 29))
Colonne M : Cells(i + 7, 13)

VB:
Sub Comparlist()
Dim Dico As Object
Set Dico = CreateObject("Scripting.Dictionary")
Dim Doublon As String

Dim T() As Variant
ReDim T(0 To 2)
    T(0) = Range(Cells(8, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1))
    T(1) = Range(Cells(2, 27), Cells(Cells(65536, 27).End(xlUp).Row, 27))
    T(2) = Range(Cells(2, 29), Cells(Cells(65536, 27).End(xlUp).Row, 29))
 
    For j = LBound(T(1), 1) To UBound(T(1), 1)
        If Dico.Exists(T(1)(j, 1)) Then
            Doublon = Dico.Item(T(1)(j, 1))
            Dico.Remove (T(1)(j, 1))
            Dico.Add T(1)(j, 1), T(2)(j, 1) & "/" & Doublon
        Else
            Dico.Add T(1)(j, 1), T(2)(j, 1)
        End If
    Next j
'
    For i = LBound(T(0), 1) To UBound(T(0), 1)
        For j = LBound(T(1), 1) To UBound(T(1), 1)
            If T(0)(i, 1) = T(1)(j, 1) Then
                Doublon = Dico.Item(T(1)(j, 1))
                    Cells(i + 7, 13) = Doublon
            End If
        Next j
    Next i
End Sub
 
Dernière édition:
Merci à vous, votre 1ère formule fonctionnait déjà parfaitement.
Je souhaite juste la modifier pour qu'au lieu de faire la comparaison de la colonne A avec la colonne AD, celle-ci ce fasse entre la colonne A et la colonne AC.

Merci pour votre aide
 
- 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
5
Affichages
244
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
862
Réponses
0
Affichages
346
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…