XL 2016 [RESOLU] Copie entre 2 classeurs sous 2 conditions

ivan27

XLDnaute Occasionnel
Bonjour à tous,

Pourriez-vous m'aider pour une extraction en VBA s'il vous plaît ?

En pièce jointe 2 classeurs

Si le numéro de la colonne A du classeur2 est identique au numéro de la colonne N du classeur1 et que la valeur de la colonne B du classeur2 est égale à "EMLCFM", alors je copie la date de la colonne C du classeur2 dans la colonne AD du classeur1

et

Si le numéro de la colonne A du classeur2 est identique au numéro de la colonne N du classeur1 et que la valeur de la colonne B du classeur2 est égale à "LIVCFM", alors je copie la date de la colonne C du classeur2 dans la colonne AE du classeur1

Merci d'avance pour votre aide et bonne fin de journée

Ivan
 

Pièces jointes

  • classeur1.xlsx
    12.3 KB · Affichages: 33
  • classeur2.xlsx
    16.3 KB · Affichages: 46

Calvus

XLDnaute Barbatruc
Bonjour,

Ton fichier en retour.
Les 2 classeurs doivent être ouverts en même temps, sinon il faut faire autrement.
VB:
Option Explicit

Sub Extraire()
Application.ScreenUpdating = False
Dim t, t1, t2, i As Integer, j As Integer, k As Integer, m As Integer
Workbooks("classeur2 Ivan.xlsx").Activate
t = ActiveWorkbook.Sheets("extraction").Range("A2:C383")
ReDim t1(1 To UBound(t), 1 To UBound(t))
Workbooks("classeur1 Ivan.xlsm").Activate
[AO2].Resize(UBound(t, 1), 3) = t
    j = 1
        m = 1
For i = 1 To UBound(t)
    If Cells(i + 1, 42) = "EMLCFM" Then
        For k = 1 To UBound(t)
            If Cells(k + 1, 41) = Cells(m + 1, 14) Then
               t1(j, 1) = Cells(k + 1, 43)
                j = j + 1
                m = m + 1
            End If
        Next k
    End If
Next i
[AD2].Resize(UBound(t1, 1), 1) = t1

For i = 1 To UBound(t)
    If Cells(i + 1, 42) = "LIVCFM" Then
        If Application.CountIf(Range("n2:n23"), Cells(i + 1, 41)) Then
            Application.Index(Range("n2:n23"), Application.Match(Cells(i + 1, 41), Range("n2:n23"), 0), 1).Offset(, 17) = Cells(i + 1, 43)
        End If
    End If
Next i
[AO2].CurrentRegion.Delete
Application.ScreenUpdating = True
End Sub

A+
 

Pièces jointes

  • classeur1 Ivan.xlsm
    19.5 KB · Affichages: 27
  • classeur2 Ivan.xlsx
    16.4 KB · Affichages: 28

ivan27

XLDnaute Occasionnel
Bonjour le forum, Calvus,
Calvus, merci beaucoup pour ta proposition.
J'ai une erreur lors de l'exécution du code :

t1(j, 1) = Cells(k + 1, 43) = <L'indice n'appartient pas à la sélection>

Bonne journée à tous
Ivan
 

Pièces jointes

  • upload_2018-2-8_7-7-28.png
    upload_2018-2-8_7-7-28.png
    13.7 KB · Affichages: 38

Discussions similaires

Réponses
18
Affichages
277
  • Résolu(e)
Microsoft 365 Filtre élaboré
Réponses
3
Affichages
218

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin