Regrouper des données de plusieurs lignes en 1 selon condition

Résolu
lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -  
lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à vous tous,

Merci à vous tous de prendre le temps de me lire.
Voici mon problème :
J'ai plusieurs données qui sont classées par ligne, que je souhaiterais regrouper sur une seule ligne à condition que les données de la colonne B soient les mêmes.

Voici un exemple de ce que j'ai :
A / B / C / D / E / F / G / H
Clients/ Séchoirs/ Épais/Essence/ Entrée/ Sortie / fac / QT
WIC/ 1-0201/ 4/4/ MERISIER/ 2016-02-10 / 2016-02-27/ 4627 / 94932
CYM/ 1-0202/ 5/4/ ÉRABLE/ 2016-02-28 / 2016-03-16 / 4636 / 70250
WIC/ 1-0202/ 4/4/ CERISIER/ 2016-02-28 / 2016-03-16 / 4637 / 25694


voici le résultat que je souhaiterais obtenir :
Clients /Séchoirs/ Épais / Essence/ Entrée/ Sortie / Fac / QT
WIC /1-0201/4/4 /MERISIER/ 2016-02-10 2016-02-27 4627 94932
CYM-WIC/1-0202/5/4-4/4/ÉRABLE-CERISIER/2016-02-28/2016-03-16/4636-4637/
95 944


Je manque de place pour illustrer mais bon :
Si le # de séchoir dans la colonne B est le même : on regroupe les données (s'il y a lieu) des colonnes A / C/ D/ G
les colonnes E et F sont toujours les mêmes selon la colonne B
Et dans la dernière colonne il faudrait additionner les données
lorsque qu'il y a plusieurs données, l'élément de séparation serait "-"

Je ne sais pas si mes explications sont claires et je crois savoir que mon problème est assez complexe.. je suis débutante alors pour moi c'est vraiment au dessus de mes capacités..

Si quelqu'un a une idée.. voudrait m'aider.. m'éclairer un peu. Je suis prête à travailler, je ne demande pas du tout fait!

merci à l'avance, c'est vraiment apprécié ce que vous faites

Mélanie

2 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Voici un code basique que tu devrais comprendre et qui réalise ta demande.
Public Sub regrouper()
Dim lig As Long, col As Integer
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(lig, "B").Value = Cells(lig + 1, "B").Value Then
            For col = 1 To 7
                If Cells(lig, col).Value <> Cells(lig + 1, col).Value Then
                    Cells(lig, col).Value = Cells(lig, col).Value & "-" & Cells(lig + 1, col).Value
                End If
            Next col
            Cells(lig, 8).Value = Cells(lig, 8).Value + Cells(lig + 1, 8).Value
            Rows(lig + 1).Delete
        End If
    Next lig
End Sub

1
lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   4
 
bonjour Gbinforme

un énorme merci! ça fonctionne super bien! je cherchais beaucoup trop compliqué pour rien!

encore merci!!!!
Mélanie
0