Comment comparer et fusionner des valeurs colonnes

  • Initiateur de la discussion Initiateur de la discussion centurion
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

centurion

XLDnaute Junior
Bonjour,

Je cherche une formule pour faire correspondre et fusionner les données de deux listes dans un rapport.
Je joins un fichier avec quelques données et le type de rapport que j'aimerais obtenir.
Sur une liste j'ai à ma disposition les infos des locaux et des surfaces (sans les occupants).
Sur l'autre liste j'ai à ma disposition les infos concernant les occupants (sans les surfaces).
J'aimerais fusionner les deux et faire correspondre les N° des locaux et les surfaces avec ses occupants.

En réalité j'ai beaucoup de locaux, surfaces et occupants.
Si quelqu'un peut m'aider !

Merci d'avance
 

Pièces jointes

Re : Comment comparer et fusionner des valeurs colonnes

Bonsoir centurion,

En imaginant que j'aie correctement compris, que donnerait, en D2 de la feuille "Liste occupants",la formule suivante:
Code:
=SI(NB.SI($A$1:$A2;$A2)=1;RECHERCHEV($A2;'Liste Locaux'!$A$2:$C$13;COLONNES($A:B);FAUX);"")
... à recopier ensuite vers le bas et 1 colonne à droite
 
Re : Comment comparer et fusionner des valeurs colonnes

Bonjour

voici une macro
Code:
Option Explicit
Sub essai()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'------------------------------------------------------
'                lecture des locaux
'------------------------------------------------------
Sheets("Liste Locaux").Select
Dim l
Dim tab_locaux
Set tab_locaux = CreateObject("scripting.dictionary")
l = 2
While Cells(l, 1) <> ""
    tab_locaux(Cells(l, 1)) = Array(Cells(l, 2), Cells(l, 3))

    l = l + 1
Wend

'------------------------------------------------------
'                lecture des Occupants
'------------------------------------------------------
Sheets("Liste Occupants").Select
Dim cle
Dim tab_Occupants
Set tab_Occupants = CreateObject("scripting.dictionary")
l = 2
While Cells(l, 1) <> ""
    cle = Cells(l, 1) & "_" & Cells(l, 3)
    'cle = Replace(cle, " ", "_")
    tab_Occupants(cle) = Cells(l, 2)

    l = l + 1
Wend
'------------------------------------------------------
'   eciture du resultat
'------------------------------------------------------
Dim c, designation, surface, nom, initial
Dim numero_bureau
Sheets("RAPPORT").Select
    
l = 3
For Each numero_bureau In tab_locaux
    designation = tab_locaux(numero_bureau)(0)
    surface = tab_locaux(numero_bureau)(1)
    Cells(l, 10) = numero_bureau
    Cells(l, 11) = designation
    Cells(l, 12) = surface
    For Each cle In tab_Occupants
        If Left(cle, 5) = numero_bureau Then
            nom = Mid(cle, 7)
            initial = tab_Occupants(cle)
            Cells(l, 13) = initial
            Cells(l, 14) = nom
            tab_Occupants.Remove (cle)
            l = l + 1
        End If
    Next
Next
Application.Calculation = xlCalculationAutomatic
End Sub

Bonne soirée
 
Re : Comment comparer et fusionner des valeurs colonnes

Modeste,

C'est exactement ça que je voulais. Magnifique !

Si c'est pas trop demander:
J'aurais besoin encore de sortir le ratio des m2 soit:
Compter combien de fois un N° d'un bureau apparait et ensuite diviser la surface par ce nombre.

N° Bureau..Initials..Nom.....................Désignation..................Surface m2.....Ratio m2
A1020.......ALA......ALBA André.......... Bureau.........................18.26.............18.26
A1021.......DUC......DURAND Céline.....Salle de préparation.........42.58.............8.52
A1021.......MAC.....MASSE Cédric
A1021.......LEF.......LEON Fernand
A1021.......DOM.....DORT Melanie
A1021.......POA......POT Alain
A1022.......ROM.....ROTH Michel.........Bureau..........................10.64.............10.64

Mille fois merci
 
Dernière édition:
Re : Comment comparer et fusionner des valeurs colonnes

Bonjour

Voila la macro avec le calcul surface par occupant

Code:
Option Explicit
Sub essai()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'------------------------------------------------------
'                lecture des locaux
'------------------------------------------------------
Sheets("Liste Locaux").Select
Dim l, cle
Dim tab_locaux
Set tab_locaux = CreateObject("scripting.dictionary")
l = 2
While Cells(l, 1) <> ""
    cle = Cells(l, 1)
    tab_locaux(cle) = Array(Cells(l, 2), Cells(l, 3), 0, 0)
    l = l + 1
Wend

'------------------------------------------------------
'                lecture des Occupants
'------------------------------------------------------
Sheets("Liste Occupants").Select
Dim tmp1 As Variant, x
Dim tab_Occupants
Set tab_Occupants = CreateObject("scripting.dictionary")
l = 2
While Cells(l, 1) <> ""
    cle = Cells(l, 1) & "_" & Cells(l, 3)
    'cle = Replace(cle, " ", "_")
    tab_Occupants(cle) = Cells(l, 2)
    'comptage occupants
    cle = Cells(l, 1)
    x = tab_locaux(cle)
    x(2) = 1 + x(2)
    tab_locaux(cle) = x
    l = l + 1
Wend
'------------------------------------------------------
'   eciture du resultat
'------------------------------------------------------
Dim c, designation, surface, nom, initial
Dim numero_bureau
Sheets("RAPPORT").Select
   
l = 3
For Each numero_bureau In tab_locaux
    designation = tab_locaux(numero_bureau)(0)
    surface = tab_locaux(numero_bureau)(1)
    Cells(l, 10) = numero_bureau
    Cells(l, 11) = designation
    Cells(l, 12) = surface
    Cells(l, 13) = surface / tab_locaux(numero_bureau)(2)
    For Each cle In tab_Occupants
        If Left(cle, 5) = numero_bureau Then
            nom = Mid(cle, 7)
            initial = tab_Occupants(cle)
            Cells(l, 14) = initial
            Cells(l, 15) = nom
            tab_Occupants.Remove (cle)
            l = l + 1
        End If
    Next
Next
Application.Calculation = xlCalculationAutomatic
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
488
Réponses
8
Affichages
304
Réponses
5
Affichages
698
Retour