RÉSOLU: Syhtèse sélective

  • Initiateur de la discussion Initiateur de la discussion Gen Rose
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gen Rose

XLDnaute Impliqué
Supporter XLD
Synthèse sélective
Excel 2003
Bonjour,

Présentation: J'ai un document extrêmement volumineux de seulement 4 -5 feuilles à raisons d'environ 50 000 lignes chaques. Composé de 4 colonnes, les tableaux prennent en compte un code décortiqué en codes postaux; vient ensuite la ville et le responsable.

Mise en situation: J'avais commencé à écrire une mise en situation dans le présent texte mais finalement, j'ai réalisé que ce serait beaucoup plus compréhensible avec le fichier-joint (où la mise en situation y est illustrée). J'espère que c'est correct avec vous.

J'ai bien cherché sur le forum pour cette question mais ce que je veux c'est trouver la formule pour le VBE.

Merci de m'éclairer sur cette programation; c'est sincèrement apprécié.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Syhtèse sélective

Bonsoir

Peut être pas très difficile à faire ton truc, mais par précaution, pour être sûr d'aller dans la bonne direction, pourrais tu nous préciser davantage ton besoin, et/ou nous donner d'autres exemples ? A partir de quel nombre fais tu la différence entre "minorité" et "majorité" ?

@ plus
 
Re : Syhtèse sélective

Bonjour cisco et merci pour ta réponse.

En effet, lors de la création de mon exemple, j'ai évité de départager la minorité de la majorité par un chiffre car je me demandais s'il y avait une formule possible prenant en compte la 'majorité'.

J'ai créée 2 nouveaux exemples qui, cette fois, illustrent plus précisemment mon propos.

Il est composé de 2 onglets soit:

"Exemple de 1 à 2 responsables" et "Exemple 3 responsables et +".

Explication du besoin: La recherche dans le document se fait par code postal (ex.: J0B 2Y0). Il est important de réduire le volume du document car il sera souvent utilisé, ouvert et fermé à répétition et nous voulons éviter les lenteurs ou un bog quelquonque lié à un trop gros volume.

Solution probable: Afin de réduire le volume sans nuire à la recherche, il est possible de condenser en une seule ligne l'information lorsque sous un code (J0B) il n'y a qu'un seul responsable.
Lorsque deux responsables partagent un même code, celui qui en a le plus est condensé en une ligne et l'autre, laissé tel quel. Ex.: Dans le J0B, Marie a J0B 2Y0 et Jean a J0B 3A1 ainsi que J0B 1Z9. Dans le résultat final, Jean détient J0B (on nettoie tous les codes postaux et les villes) et nous laissons à Marie la ligne entière. Pour 3 responsables, même chose que pour deux sauf qu'une personne de plus conserve toutes ses lignes. En tout temps, un seul responsable est condensé en une ligne.

Pouquoi? De cette manière, lorsque que l'on fait une recherhe par Ctrl+F en écrivant le code postal au complet et que la recherche ne fonctionne pas, on en déduit que c'est, selon l'exemple ci-dessus, Jean. Si cela donne quelque chose, la recherche nous dirige directement à la ligne de Marie.

Idéalement, toutes les lignes seraient conservées mais le document est extrêmement volumineux et il faut le condenser.
Le problème avec ma solution est que si la recherche ne donne rien, la personne n'est pas dirigée vers la ligne de Jean. J'ai donc pensé à faire ajouter à tous les codes orphelins un point. Dès lors, "J0B" devient "J0B." Si la recherche ne trouve pas le code souhaité, la personne devra remplacer les 3 dernier chiffres par un point.

J'espère que c'est beaucoup plus clair et voir le fichier-joint pour un visuel.

S'il n'est pas possible de départager par majorité dans les calculs d'Excel, ce que j'en comprend est qu'il faut délimiter une marge par exemple, 12 lignes et plus... par contre, si Jean a 13 codes postaux et Marie 12, je suis dans une impasse...ça ne fonctionne pas. En ce cas, il faudra alors que je choisisse les zones ou cette formule sera appiquée (pour ne pas trier Jean et Marie, par exemple).

Merci à nouveau pour votre temps...je sais que c'est compliqué et je m'attend à ce qu'il n'y ait peut-être pas de solution mais avec votre aide, je devrais arriver à un compromis. Il est très possible que la solution que je poursuis ne soit pas la meilleure; ne vous gênez surtout pas pour me le faire savoir si vous avez mieux à proposer!

Merci beaucoup 🙂
 

Pièces jointes

Dernière modification par un modérateur:
Re : Syhtèse sélective

Alors voyons voir...

60 492 onglet 1
65 492 onglet 2
46 000 onglet 3
26 669 onglet 4

Le fichier pèse maintenant 17 614 ko versus 26 386 ko d'origine (J'ai enlevé des colonnes inutiles) 🙂
 
Re : Syhtèse sélective

Bonsoir

Vu le nombre de lignes de ton fichier, je pense qu'il faudra passer par une macro, ce que je ne sais faire... Avec des formules matricielles, cela serait certainement beaucoup trop long en temps de calcul.

@ plus
 
Re : Syhtèse sélective

Bonjour cisco, en effet, par une macro et programmation dans le VBE, c'est bien ce que je cherche.

Merci tout de même d'avoir tenté de m'aider!


s.v.p., j'ai toujours besoin d'aide ou à tout le moins, d'être pointé dans une direction.
je continue de chercher la solution...merci à tous pour votre temps🙂
 
Re : Syhtèse sélective

OK, j'ai trouvé cette formule pour trier les doublons selon plusieurs critères:

Sub OrdreRespectéDictionary()
Set MonDico = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
n = [A65000].End(xlUp).Row
i = 1
Do While i <= n
If Cells(i, "B") <> "" Then
If Not MonDico.Exists(Cells(i, "B") & Cells(i, "D")) Then
MonDico.Add Cells(i, "B") & Cells(i, "D"), Cells(i, "b") & Cells(i, "D")
i = i + 1
Else
Rows(i).EntireRow.Delete
End If
Else
i = i + 1
End If
Loop
End Sub

Merci à BOISGONTIER dans l'un des fils de discussion sur les doublons 🙂

Elle fonctionne très bien mais pour l'adapter à mon document, il faudrait:

soit défénir les plages à trier car le problème est toujours le même (Si Jean a 10 codes postaux et Marie 9, je dois condenser Jean mais pas Marie). Malheureusement, ce sera un gigantesque travail manuel de repérer toutes ces plages

soit trouver un moyen que cette formule puisse départager une majorité basée sur les codes détenus entre plusieurs responsables.

Voir mon test en p.j. et s'il y a des incohérences,(il y en aura), c'est que j'apprend à mesure le VBA; beaucoup de choses m'échappent jusqu'ici.

Merci à l'avance pour votre temps, c'est toujours sincèrement apprécié😱

edit: est-il possible de demander, dans la macro, d'effacer la cellule A et C lorsqu'elle ont été triées? Car j'ai remarqué qu'elles sont désuètes rendues à ce point.
 

Pièces jointes

Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour