Importer données d'un autre classeur avec condition

koikili

XLDnaute Junior
Bonjour @ tous,
dans l'exemple ci-joint j'aimerais voir un code dans le fichier KATO 2 qui importe les données de la colonne Q de l'onglet bt1 vers la colonne Q de l'onglet BT2 Du fichier KATO 1 a condition c'est que le code ne doit importer que les données dont les cellules sont colorées soit en jaune ou en vert et sans ouvrir le fichier source

Merci d'avance
 

Pièces jointes

  • katilo.zip
    60.6 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Koikili, bonjour le forum,

Bizarre, j'ai déjà vu ça quelque part... D'ailleurs, après échange de mails perso (dans un autre forum) j'avais finalement proposé le code ci-dessous à DonMunnir. Si Koikili est autre que DonMunnir, ça pourrait l'interesser. À adapter :

VB:
    Sub Macro1()
    Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
    Dim CH As String 'déclare la variable CH (Chemin d'accès)
    Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
    Dim CS As Workbook 'déclare la variable CS (Classeur Source)
    Dim OS As Worksheet 'déclare la variable CS (Onglet Source)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim I As Integer 'déclare la variable I (Incrément)

    Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
    Set CD = ThisWorkbook 'définit le classeur destination CD
    CH = CS.Path & "\" 'définit le chemin d'accès CH
    Set OD = CD.Worksheets("MO 2") 'définit l'onglet destination OD
    Set CS = Workbooks.Open(CH & "ven 1.xlsx") 'ouvre le classeur "ven 1.xlsx"
    Set OS = CS.Worksheets("MO 1") 'définit l'onglet source OS
    DL = OS.Range("Q" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne Q de l'onglet source OS
    For I = 13 To DL 'boucle sur les lignes 13 à DL
       'si la cellule ligne I, colonne 17 (=Q) de l'onglet OS n'est pas vide et si il a la couleur vert ou jaune
       If OS.Cells(I, 17).Value <> "" And OS.Cells(I, 17).Interior.Color = 65535 Or OS.Cells(I, 17).Interior.Color = 11073710 Then
            'récupère dans la cellule ligne I, colonne 17 (=Q) de l'onglet OD, la valeur de la cellule ligne I, colonne 17 (=Q) de l'onglet OS
           OD.Cells(I, 17).Value = OS.Cells(I, 17).Value
            OS.Cells(I, 17).Value = "" 'efface la donnée source
       End If 'fin de la condition
    Next I 'prochaine ligne de la boucle
    CS.Close True 'ferme le classeur source en enregistrant les modifications
    CD.Save 'enregistre le classeur destination
    Application.ScreenUpdating = True 'affiche les raffraîchissements d'écran
    End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 465
dernier inscrit
Ehoarn_src