Problème "identifiants" identiques mais prix différents Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
marinea
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 15 janvier 2020
Version d'Excel : 2016

Message par marinea » 17 janvier 2020, 14:03

Bonjour, j'ai un petit problème en fait, je possède 3 fichiers un avec des identifiants et leur description respective, un fichier avec les numéros de besoins qui existent en doublon(qui correspondent à l'id du premier fichier) et les prix dans ce fichier 2, et un fichier 3 où je dois afficher ces lignes (les réunir en gros)

Je vous montre ce que j'ai pu faire grâce à quelques personnes qui ont pu m'aider mais je ne vois pas comment récupérer un prix différent pour deux identifiants pareils

voici mon code
Sub Macro1()
'
' Macro1 Macro
'

Dim i As Long, j As Long, dl1 As Long, dl2 As Long, dl3 As Long, d14 As Long
Dim plage1 As Range, plage2 As Range, plage3 As Range



 
         dl1 = Range("A" & Rows.Count).End(xlUp).Row 'nombre de lignes C(id de planview)
         dl2 = Range("D" & Rows.Count).End(xlUp).Row 'nombre de lignes de Q(id de sap)
         dl3 = Range("G" & Rows.Count).End(xlUp).Row + 1 'nombre de lignes de consolidation (id)
     

   Set plage1 = Range("A2:B" & dl1) 'plage de données dans plan view allant de C (id) et D( description)
   Set plage2 = Range("D2:E" & dl2) 'plage de données dans sap de la colonne Q(id)

   
   Application.ScreenUpdating = False
   
   If dl3 >= 2 Then Range("G2:H" & dl3).ClearContents: dl3 = 2
     
  
   For i = 2 To dl1
     If Application.CountIf(plage2, Range("A" & i)) = 0 Then    'si la valeur de C(id planview) est absente de la plage (id sap)
      Range("A" & i & ":B" & i).Interior.Color = vbRed          'lignes de planview en rouge si id planview non présent dans id sap
     Else
      Range("A" & i & ":B" & i).Interior.Color = xlNone         'pas de couleur si id identiques dans planview et sap
      Range("A" & i).Copy Range("G" & dl3)                      'copie ID en I
      dl3 = dl3 + 1
     End If
    Next
     For j = 2 To dl3 - 1
        Range("H" & j) = Application.VLookup(Range("G" & j), plage2, 2, False) 'recherche de D(id présent dans sap et planview donc affiché dans consolidation) dans plage 1(colonne c de planview)
         Range("I" & j) = Application.VLookup(Range("G" & j), plage1, 2, False) 'le problème c'est que là ça affiche le même prix pour deux identifants b ou c par exemple
    Next j
   
      Application.ScreenUpdating = True
End Sub

et un exemple de fichier simplifié ^^
En espérant avoir été claire, bonne journée :)
Classeur1.xlsm
(18.98 Kio) Téléchargé 8 fois
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'809
Appréciations reçues : 162
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 18 janvier 2020, 03:22

Salut marinea,

à tester
Sub Macro1()
Dim i, dl1, dl2, dl3 As Long
Dim plage As Range

dl1 = Range("A" & Rows.Count).End(xlUp).Row 'nombre de lignes C(id de planview)
dl2 = Range("D" & Rows.Count).End(xlUp).Row 'nombre de lignes de Q(id de sap)
dl3 = Range("G" & Rows.Count).End(xlUp).Row + 1 'nombre de lignes de consolidation (id)
 
Set plage = Range("D2:E" & dl2) 'plage de données dans sap de la colonne Q(id)

Application.ScreenUpdating = False
   
If dl3 >= 2 Then Range("G2:H" & dl3).ClearContents: dl3 = 2
  
   For i = 2 To dl1
     If Application.CountIf(plage, Range("A" & i)) = 0 Then    'si la valeur de C(id planview) est absente de la plage (id sap)
      Range("A" & i & ":B" & i).Interior.Color = vbRed          'lignes de planview en rouge si id planview non présent dans id sap
     Else
      Range("A" & i & ":B" & i).Interior.Color = xlNone         'pas de couleur si id identiques dans planview et sap
      Range("A" & i).Copy Range("G" & dl3)                      'copie ID en G
      Range("B" & i).Copy Range("I" & dl3)                      'copie Prix en I
      dl3 = dl3 + 1
     End If
    Next
   
Application.ScreenUpdating = True
End Sub
Bonne nuit
m
marinea
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 15 janvier 2020
Version d'Excel : 2016

Message par marinea » 20 janvier 2020, 09:59

Merci beaucoup cela marche parfaitement
J'ai juste une derniere petite question, sais-tu comment faire pour copier dans une celulle une concaténation ?
Par exemple dans la celulle J2 mettre la valeur a2 et b2 côte à côte juste séparés par un espace ?
cordialement !
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'809
Appréciations reçues : 162
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 20 janvier 2020, 10:20

Re,

comme ca ?
Range("J2").value = Range("A2").value & " " & Range("B2").value
@++
m
marinea
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 15 janvier 2020
Version d'Excel : 2016

Message par marinea » 20 janvier 2020, 10:31

Oui mais en mettant
Range("J" & i).value = Range("A"& i).value & " " & Range("B"& i).value
mais là ça me met "Propriété ou méthode non gérée par cet objet" :/
m
marinea
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 15 janvier 2020
Version d'Excel : 2016

Message par marinea » 20 janvier 2020, 10:33

Autant pour moi j'avais oublié un range :') cela marche parfaitement x) merci à toi pour tes réponses ! bonne journéee :)
1 membre du forum aime ce message.
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'809
Appréciations reçues : 162
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 20 janvier 2020, 10:39

:btres:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message