Copie de données d'une feuille excel vers une autre avec conditi

marfouzsiaka Messages postés 6 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour a tous,
J'ai un fichier Excel avec deux feuilles : "Domaines " et "Référentiel Applications PSA".
Sur chacune des feuilles, on a une colonne A comportant les mêmes données que colonne A de la seconde feuille (mais pas dans la même ordre). Donc je veux copier les données de la colonne B de la feuille "Domaines" vers la colonne B de la feuille "Référentiel Applications PSA" avec la condition que la donné compris dans la colonne A de la feuille "Domaines" soit la même que celle de la colonne A de la feuille "Référentiel Applications PSA"
Merci pour votre aide

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Curieux qu'en 2° année de DUT info, tu poses une telle question !

    en attendant
    Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
    et faire un clic droit-coller le raccourci dans votre message


     Michel
    0
    1. marfouzsiaka Messages postés 6 Statut Membre
       
      Merci pour ta réponse.
      voici le lien du fichier https://mon-partage.fr/f/gJzUQsxf/
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bien reçu
    Je regarde ca demain...
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Option Explicit
    '------------------------------------------------------------------------------
    Sub copier_ss_condition()
    Dim Derlig As Integer, T_nom, Idx As Integer, D_nom As Object, T_out
    Dim T_psa, T_in
    Dim Name As String, Cptr As Integer, Col As Byte

    '-------------------------initialisations
    Application.ScreenUpdating = False
    With Sheets("Domaines")
    Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
    .Range("C2:H" & Derlig).Clear
    T_nom = .Range("A2:A" & Derlig)
    End With
    Set D_nom = CreateObject("scripting.dictionary")
    For Idx = 1 To UBound(T_nom)
    If Not D_nom.exists(T_nom(Idx, 1)) Then: D_nom.Add T_nom(Idx, 1), Idx
    Next
    ReDim T_out(1 To D_nom.Count, 1 To 6)
    With Sheets("Référentiel Applications PSA")
    Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
    T_psa = .Range("A2:A" & Derlig)
    T_in = .Range("C2:H" & Derlig)
    End With
    '------------------------------------------------traitement
    For Cptr = 1 To UBound(T_psa)
    Name = T_psa(Cptr, 1)
    If D_nom.exists(Name) Then
    Idx = D_nom.Item(Name)
    For Col = 1 To 6
    T_out(Idx, Col) = T_in(Cptr, Col)
    Next
    End If
    Next
    '-----------------------------restitution
    With Sheets("Domaines").Range("C2:H" & D_nom.Count + 1)
    .Value = T_out
    .VerticalAlignment = xlTop
    .WrapText = True
    .Borders.Weight = xlThin
    End With
    Sheets("Domaines").Activate
    End Sub


    0
    1. marfouzsiaka Messages postés 6 Statut Membre
       
      Bonjour Michel,
      Merci pour tes réponses. Sa marche très bien. Mais au lieu de copier sur la feuille "Référentiel Applications PSA" , sa copie sur la feuille "Domaines". Mais c'est pas grave, le plus dur est déjà fait. Moi même je vais voir comment le copier sur "Domaines" au lieu de "Référentiel Applications PSA"
      0
    2. marfouzsiaka Messages postés 6 Statut Membre
       
      J'ai constater une autre imperfection. La feuille Domaines comportant moins de ligne que la feuille "Référentiel Applications PSA", donc les autres lignes restantes n'ont pas été copiées.
      0
    3. marfouzsiaka Messages postés 6 Statut Membre
       
      Encore un autre constat : les éléments de la colonne A des deux tables n'étant pas dans le même ordre, c'est pour cela que la correspondance entre chaque cellule doit être faite. Elle n'est pas faite avec le code, donc sa fausse le résultat.
      Merci d'avance pour tes nouvelles propositions
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > marfouzsiaka Messages postés 6 Statut Membre
         
        Cherche un peu!
        tu as le principe dictionary + variables tableau

        bonne continuation
        0