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

Résolu/Fermé
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 24 mars 2016 à 21:58
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 25 mars 2016 à 18:52
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
25 mars 2016 à 09:00
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 mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
25 mars 2016 à 18:52
bonjour Gbinforme

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

encore merci!!!!
Mélanie
0