1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| Sub CopierDonneesSiCorrespondance()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim wbExt As Workbook
Dim derniereLigneSource As Long, derniereLigneDest As Long, i As Long, j As Long
Dim cheminFichier As String
Dim valeurRecherche As Variant
Dim trouve As Range
' Chemin du classeur externe
cheminFichier = "Chemin/Fichier/TQT"
' Définition du classeur et de la feuille de destination
Set wsDest = ThisWorkbook.ActiveSheet ' ou spécifiez la feuille explicitement
derniereLigneDest = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Row
' Ouvrir le classeur externe
Set wbExt = Workbooks.Open(cheminFichier)
Set wsSource = wbExt.Sheets(1) ' Remplacez par le nom ou l'indice correct de la feuille
derniereLigneSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' Parcourir chaque ligne de la feuille de destination
For i = 1 To derniereLigneDest
valeurRecherche = wsDest.Cells(i, "B").Value ' Valeur de la colonne B
' Rechercher cette valeur dans la colonne A de la feuille source
Set trouve = wsSource.Columns("A:A").Find(What:=valeurRecherche, LookIn:=xlValues, LookAt:=xlWhole)
' Si trouvé, copier les valeurs des colonnes C et D dans les colonnes J de la feuille de destination
If Not trouve Is Nothing Then
wsDest.Cells(i, "J").Value = wsSource.Cells(trouve.Row, "C").Value
wsDest.Cells(i, "K").Value = wsSource.Cells(trouve.Row, "D").Value
End If
Next i
' Fermer le classeur externe sans sauvegarder les modifications
wbExt.Close SaveChanges:=False
End Sub
--------------------------------------------------------------------------------
Sub CopierDonneesSiCorrespondanceSelection()
Dim wsSource As Worksheet
Dim wbExt As Workbook
Dim cell As Range
Dim cheminFichier As String
Dim valeurRecherche As Variant
Dim trouve As Range
' Chemin du classeur externe
cheminFichier = "Chemin/Fichier/TQT"
' Ouvrir le classeur externe
Set wbExt = Workbooks.Open(cheminFichier)
Set wsSource = wbExt.Sheets(1) ' Remplacez par le nom ou l'indice correct de la feuille
' Parcourir chaque cellule dans la colonne B de la sélection
For Each cell In Selection
' Vérifier si la cellule est dans la colonne B
If cell.Column = 2 Then
valeurRecherche = cell.Value ' Valeur de la cellule actuelle dans la colonne B
' Rechercher cette valeur dans la colonne A de la feuille source
Set trouve = wsSource.Columns("A:A").Find(What:=valeurRecherche, LookIn:=xlValues, LookAt:=xlWhole)
' Si trouvé, copier les valeurs des colonnes C et D dans les colonnes J et K de la même ligne dans la feuille de sélection
If Not trouve Is Nothing Then
cell.Offset(0, 8).Value = wsSource.Cells(trouve.Row, "C").Value ' Copie dans colonne J
cell.Offset(0, 9).Value = wsSource.Cells(trouve.Row, "D").Value ' Copie dans colonne K
End If
End If
Next cell
' Fermer le classeur externe sans sauvegarder les modifications
wbExt.Close SaveChanges:=False
End Sub |
Partager