Regrouper lignes

Bonjour,

j'ai une macro qui dans une plage de donnée regroupe par 3 les lignes qui ne comporte pas de doublon entre eux,

cette macro fonctionne mais quand la plage de donné augmente l'exécution met beaucoup plus de temps,

j'ai trouver un autre moyen qui pourrait faire la même chose en étant plus rapide, enfin je pense,

voici le fichier avec la macro, en gros c'est le morceau de la VBA ou l'on écrit dans tablo1 toutes les combis de 3 dans N c'est cette partie la à enlever et j'ai écrit une idée que je pense possible à gauche du classeur, si quelqu'un aurait une idée pour écrire cette macro s'il vous plait ?

cordialement,

Bastien Lemaire

14trv-2.xlsm (21.41 Ko)

Salut Bastien,

ainsi, sans doute...
Un double-clic dans une cellule des colonnes de valeur à "scanner" démarre la macro.
Code valable pour cet exemple en postulant que colonnes de valeurs et tableau des résultats sont séparés d'une colonne au moins, histoire de ne pas "ennuyer" CurrentRegion...

If Not Intersect(Target, Range("G1").CurrentRegion) Is Nothing Then
    Cancel = True
    tTab = Range("G1").CurrentRegion.Value
    For i1 = 1 To UBound(tTab, 1) - 2
        For i2 = i1 + 1 To UBound(tTab, 1) - 1
            If fctCheck(tTab, i1, i2) = True Then
                For i3 = i2 + 1 To UBound(tTab, 1)
                    If fctCheck(tTab, i1, i3) = True And fctCheck(tTab, i2, i3) = True Then _
                        iIdx = iIdx + 1: _
                        ReDim Preserve tRes(3, iIdx): _
                        tRes(0, iIdx - 1) = i1: _
                        tRes(1, iIdx - 1) = i2: _
                        tRes(2, iIdx - 1) = i3
                Next
            End If
        Next
    Next
End If
11bastien.xlsm (24.47 Ko)


A+

salut,

dans votre fichier je ne vois pas apparaitre la nouvelle macro, je ne comprend pas la démarche et le bout de code que vous avez fournis ne se trouve pas aussi dans la macro du fichier

Salut Bastien,

c'est une macro événementielle qui se trouve donc logiquement dans le module VBA de la feuille concernée par l'opération demandée.
Dans l'explorateur de projet, double-clique sur le nom de la feuille 'Feuille1'.

Quand c'est possible, j'évite d'accumuler les modules généraux... J'ai oublié de supprimer 'Module1'...


A+

Je ne connaissais pas cela , c'est bizarre qu'il y ai d'autre emplacement, en tout cas merci pour votre macro elle fonctionne très bien,

Bonne journée à vous

Salut Bastien,

oh, tu sais, il y a encore le module 'ThisWorkbook' disponible pour du code...
Ce module est utilisé lorsqu'un même code est valable pour plusieurs feuilles, sans devoir changer une virgule, par exemple, lorsque ces feuilles présentent la même structure.
En ciblant la feuille renseignée par l'argument Sh, le code s'applique alors exclusivement à cette feuille.

Double-clique sur 'ThisWorkbook'...


A+

:D il y a tellement de chose à savoir sur Excel, merci de me l'apprendre,

je te souhaite une bonne soirée

A+

Bonjour,

je reviens sur se sujet pour une petite modification si possible,

ici la macro prend la ligne 1, et ajoute une ligne sans doublon etc puis recommence en reprenant la ligne 2 comme début de boucle ainsi de suite,

et je voulais demander si on pouvais changer quelque chose pour que par exemple il ne recommence pas sur toute les lignes mais seulement sur les 5 premières lignes ( quand je dis 5 premières lignes cela veut dire que lorsque i1 est = 6 on arrête la macro )

donc pour cette exemple il y aurait les 9 premiers résultats identiques.

cordialement,

Bastien Lemaire

Salut Bastien,

ainsi, sans doute..

    For i1 = 1 To WorksheetFunction.Min(5, UBound(tTab, 1) - 2)


A+

Salut,

merci encore pour ton aide :D

bonne soirée à toi

Rechercher des sujets similaires à "regrouper lignes"