Regrouper des references annuelles ?

Bonjour à tous !

Avant toute chose je viens m'excuser de la formulation du titre du post qui n'est peu être pas ce qu'il faudrait dire car je suis vraiment novice avec Excel... !

le but de ma recherche est de pouvoir raccourcir un fichier de référence pour une base de données :

Dans la première colonne j'ai :

le nom de la ref , la marque, l'année de début et celle de fin

(répété de nombre de fois d'année entre début et fin)

Dans la deuxième colonne j'ai :

la marque avec l'année de début

la marque avec l'année de début+1

la marque avec l'année de début+2

la marque avec l'année de fin

Le but étant de faire à la fin :

Dans la 1°colonne : le nom de la ref , la marque, l'année de début et celle de fin (1 fois seulement)

Dans la 2° colonne et dans une seule case :

"la marque avec l'année de début"/"la marque avec l'année de début+1"/"la marque avec l'année de début+2"/ ... /"la marque avec l'année de fin

Je recherche une formule ou bien une astuce pour faire ça rapidement car j'ai 120.000 lignes !!!!! J'ai commencé à faire à la main , c'est vraiment galère et ça n'avance pas ...

Un ENORME merci pour ceux qui pourraient m'aider car c'est ultra pressé et je galère vraiment !!!

Cordialement, Charly

Bonsoir à tous,

Cela peut se faire avec une macro appropriée.

Pour se faire il faut ton fichier (structure réelle avec une cinquantaine de lignes) pour tester.

Amicalement

Claude.

Bonsoir Claude, je te transmet mon fichier alors?

Le soucis c'est que c'est des donnée "sensibles"...

9test-v1.xlsm (106.67 Ko)

re,

avec une vingtaine de lignes, çà suffira, tu peux mettre des infos "bidons"

L'important est d'avoir l'emplacement des en-têtes.

Claude.

Ok Claude

Je te fais ça...

re,

j'ai omis de te souhaiter la bienvenue !

voilà qui est fait, pour répondre aux messages, utilise plutôt "Répondre" en dessous

plutôt que "citer"

Claude.

Merci pour la bienvenue !

Voila un extrait du fichier en question...

https://www.excel-pratique.com/~files/doc2/azerty.xlsx

3matrice.xlsx (59.33 Ko)

re,

à tester, fait quand même une copie avant

tu me diras le temps de traitement que t'indique le message à la fin (120 000 lignes)

Sub Concat()
''Macros par Claude Dubois pour "charly_xiii" Excel-Pratique le 18 sept 09
Dim Lg As Long, i As Long, Nb As Byte
Dim X, Y, K
    X = Time
    Lg = Range("A65536").End(xlUp).Row

    For i = 1 To Lg
        If Cells(i + 1, 1) = Cells(i, 1) Then
                K = i
                Nb = 1
            Do While Cells(K + 1, 1) = Cells(K, 1)
                    Cells(i, 2) = Cells(i, 2) & "/" & Cells(K + 1, 2)
                    K = K + 1
                    Nb = Nb + 1
            Loop
                 Range(Rows(i + 1), Rows(i + Nb - 1)).ClearContents
                   i = i + Nb - 1
        End If
    Next i
        Range("a2:a" & Lg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Y = Time
    MsgBox ("temps macro = " & Format(Y - X, "hh:mm:ss"))
End Sub

Amicalement

Claude.

édit: fichier de test

https://www.excel-pratique.com/~files/doc2/charly2.xlsm

he ben !!!

Question rapidité on peut pas faire mieux...!!!

J'avoue qu'au début j'ai rien compris car je m'attendais à une "formule" basique et pas à une "macro"... (j'ai appris un nouveau mot !!!

Pour l'enregistrer j'ai tatonné aussi mais bon le résultat est là !!!

Je me suis permis de transformer un peu le code car je me suis aperçu que le signe de séparation devait etre | et non pas / ... Gasp!

J'ai une partie du fichier total à la maison avec environ 30.000 lignes, je viens de tester et ça m'a mis... 26 secondes !!!!!!!!!!!!!!!!!!

EFFARANT !!! Quand on voit le temps que j'ai mis à faire un 20aine de ref...

Il ne me reste que les ligne vides à éffacer et GO !

Encore un grand merci à Claude pour son aide efficace !!!!

De toute façon je doit revenir ici car j'en ai marre de galérer sous Excel à chaque fois et j'ai vu qu'il avait une grande quantité de belles choses a apprendre ici...!!!

Encore merci !!!!!!!!!!!!

J'ai noté une variation entre :

La macro que tu as faite et l'action "supprimer les doublons"

En appliquant ta macro j'ai quelques ref en plus comparer à la suppression de doublons de la première...

Il s'avère en fait que dans mon fichier original, des ref étaient entrées 2 fois...!

On ne s'en était même pas apreçu... !

Encore un merci supplémentaire pour Claude !!!

Hum...! je sens que je vais venir l'embeter souvent pour mes soucis d'Excel...

mais ne lui disons rien pour l'instant...

Bonjour,

Pour l'enregistrer j'ai tatonné aussi mais bon le résultat est là !!!

C'est pourtant juste un copier/coller du code !

Ajoute cette ligne en début de macro (oublie de ma part), çà ira beaucoup + vite.

    X = Time
    Application.ScreenUpdating = False

et à la fin, tu as bien mis cette ligne qui supprime les lignes vides ?

Range("a2:a" & Lg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Le code complet (dans un module)

Sub Concat()
''Macros par Claude Dubois pour "charly_xiii" Excel-Pratique le 18 sept 09
Dim Lg As Long, i As Long, Nb As Long
Dim X, Y, K
    X = Time
    Application.ScreenUpdating = False
    Lg = Range("A65536").End(xlUp).Row

    For i = 1 To Lg
        If Cells(i + 1, 1) = Cells(i, 1) Then
                K = i
                Nb = 1
            Do While Cells(K + 1, 1) = Cells(K, 1)
                    Cells(i, 2) = Cells(i, 2) & "/" & Cells(K + 1, 2)
                    K = K + 1
                    Nb = Nb + 1
            Loop
                 Range(Rows(i + 1), Rows(i + Nb - 1)).ClearContents
                   i = i + Nb - 1
        End If
    Next i
        Range("a2:a" & Lg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Y = Time
    MsgBox ("temps macro = " & Format(Y - X, "hh:mm:ss"))
End Sub

Bonne journée

Claude.

re,

et pour mettre en résolu : en bas

842j2resolu

à+...Claude.

re,

Charly,

à l'occasion, retire du titre du sujet le "Merci Claude", çà fait désordre !

Claude.

Fait !

Rechercher des sujets similaires à "regrouper references annuelles"