XL 2013 Regroupement de données selon plusieurs critères..

anri0610

XLDnaute Junior
Bonjour,
merci, je me permet de vous renvoyer un screen car oui il y a de fortes chances que le problème vienne de la police/écriture,
pourriez vous me faire un screen de votre compilation s'il vous plait?
de manière a ce que je puisse corriger si erreurs il y a.
(je ne vois pas de ??? mais peut être de lettres qui ne sont pas passées tel quelles ..)

ps: si la langue d'excel change ne faut-il pas que tout le code soit en anglais ?
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne vois aucun changement par rapport au précédent. Qu'est-ce que vous attendez, si vous en êtes si convaincu, pour essayer en remplaçant les identifications de variables et de procédures à lettres accentuées en noms en étant dépourvus ?

Édition: Important: Il manque le module de classe SsGr.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Au cas où: Ma version dépourvue de lettre accentué dans les identifiants.
Mais si c'était ça, je trouve ça complètement anormal: je peux très bien y utiliser n'importe quelle lettre, peu importe qu'elle existe ou nom dans le français, c'est une lettre à partir du moment où elle a deux versions différentes, en majuscule et en minuscule. C'est même mon système pour détecter si un caractère est ou non une lettre. D'ailleurs pleins d'autre caractères y sont acceptés aussi, même si ce ne sont pas des lettres, je pense notamment à certains opérateurs mathématiques lorsqu'ils ne sont pas interprétés comme tels par VBA.
 

Fichiers joints

job75

XLDnaute Barbatruc
Re,

Bon si maintenant vous voulez les résultats transposés c'est autre chose :
Code:
Sub Grouper()
Dim t, ub&, a(), i&, k%, n&, x$, j&
With Feuil1 'CodeName de la feuille
    t = .[A1].CurrentRegion.Resize(, 5) '5 colonnes
    ub = UBound(t)
    ReDim a(1 To ub * UBound(t, 2), 1 To 1)
    For i = 2 To ub
        x = t(i, 1) & t(i, 2) & t(i, 3) & t(i, 4)
        For k = 1 To 5
            n = n + 1: a(n, 1) = t(i, k)
        Next
        For j = i + 1 To ub
            If t(j, 1) & t(j, 2) & t(j, 3) & t(j, 4) <> x Then Exit For
            a(n, 1) = a(n, 1) + t(j, 5)
        Next
        i = j - 1
    Next i
    With .[G2] 'cellule à adapter
        If n Then .Resize(n) = a
        .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
La macro est très rapide car elle utilise des tableaux VBA.

Fichier joint.

A+
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
La fonction Gigogne est très rapide aussi. Elle n'utilise que des tableaux VBA, tris en mémoire par fusions et Collection. Une fois qu'on l'a dans un projet, elle peut servir à plein d'autres choses. Elle est microscopique en regard de la programmation des bibliothèques Excel et autres, dont 99% ne servent jamais (même si ce ne sont pas les mêmes 99% d'un utilisateur à l'autre)
(Elle est disponible en complément .xlam si ça vous intéresse, et si vous ne voulez plus voir que la programmation d'application et non plus celle de service)
 

Dranreb

XLDnaute Barbatruc
Vous n'avez aucune idée des usines à gaz que sont les méthodes de la bibliothèque Excel :rolleyes:
La complexité de la programmation de service n'a aucune importance, du moment qu'elle est au point. Qu'on puisse la voir ou non n'y change rien.
Et les macros d'application qui utilisent ma fonction Gigognes sont généralement les plus courtes possibles.
 

anri0610

XLDnaute Junior
Bonjour,
merci Dranreb c’était bien l’écriture le soucis, qui se modifiait rien qu'en copiant le fichier, j'ai opter pour un copier coller et la ça a pris,
cela m'a permis d'avancer,
voici mon erreur suivante..
 

Fichiers joints

anri0610

XLDnaute Junior
Je vous joint a nouveau le fichier test et mon classeur actuel de macros. (TEST.xlsx/PERSONAL.xlsm)

(probleme trier 1.png/probleme trier 2 .png)
j'aurai également un autre soucis avec la fonction trier (que j'ai incrémentée a la macro CAD) qui dans mon cas actuel ne prend pas en compte la colonne C, et donc me mélange les données quand elles diffèrent,
j'ai bien créer une macro que j'ai nommer Mtrier qui fonctionne,
mon seul problème est que cela me donne un code active sheet avec le nom de la feuille ,
sauf que le nom du fichier change a chaque fois, il me faudrait alors le même résultat sans affectation de nom de feuille ou fichier si possible.

(SYU201808091004.xlsm/fonction regrouper.png)
une autre question si vous le voulez bien, serait ce possible de regrouper les données de la colonne A
idem que pour la somme de la colonne E ,
lorsque les données des colonnes B C D sont identiques.

merci par avance!

ps: je me suis permis d’évoquer d'autres problèmes lies mais,
si vous juger qu'il serait nécessaire de créer une différente conversation,
pas de soucis je re-exposerai mon problème par la suite.
 

Fichiers joints

anri0610

XLDnaute Junior
job75> bonjour, merci ! j'ai tester et cela fonctionne très bien avec le fichier test fournis,
seulement le soucis est que dans ce cas la il faut que la macro soit dans le fichier ,
alors que mes macros sont dans un classeur personal.xlsm ,
le nom de fichier diffère a chaque utilisation..
je n'ai pas obtenu de résultat avec un autre fichier test,
que je vous joint ici.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Je vous l'ai aussi déjà dit, menu Outils, Références… cochez la ligne Miscrosoft Scripting Runtime.
Vous n'aviez pas dit que la macro devait traiter d'autres fichiers que celui portant la macro.
Dans ce cas vous ne pourrez plus utiliser l'objet Worksheet Feuil1.
 
Dernière édition:

anri0610

XLDnaute Junior
ça y est j'ai compris cela fonctionne!!
il fallait également que mgigogne, mregrouper et SsGr soit dans le fichier traiter .
est ce obligatoire ? je traite a chaque fois un nouveau fichier et mes macros sont stockées dans le classeur personal.xlsm,
comment procéder ?
 

anri0610

XLDnaute Junior
pardon, depuis le début j'essaye de n'omettre aucun détail mais je n'avais pas penser que ça serait un facteur a prendre en compte ,
je l'ai évoquer seulement aujourd'hui en fournissant le test et mon classeur de macros, bien trop tard veuillez m'excuser.
 

anri0610

XLDnaute Junior
Dranreb ,
pouvez vous pour finir s'il vous plait m'aider pour mon problème de tri (j'ai essayer de remplacer par active sheet par hasard mais non..)
et de regroupement des noms de la colonne a ,
que j'ai évoquer précédemment ?
si vous voulez je vous renvoi un message avec ma configuration actuelle et les fichiers ?
 

Discussions similaires


Haut Bas