Grouper et créer un plan

andré

XLDnaute Barbatruc
Bonjour à vous tous,

Une base de données de quelques milliers de lignes.
En colonne A un code composé de maximum 4 lettres, exemple : A, ou CHG, ou XY, ou LJEF, ...
Le tri se fait sans problème.

Je souhaite grouper et créer un plan automatique(menu Données), en cascade, donc à 3 niveaux, sur base du nombre de caractères du code (idem à la MFC mise en place).
Cela ne fonctionne évidemment pas !

En pièce jointe un exemple, établi manuellement, de ce que je voudrais obtenir de façon automatisée.

Le problème est qu'il n'y a pas moyen de trier un plan, si ce n'est dans chaque division.
Pour trier, il faut donc effecer le plan (cette fonction existe), mais je n'ai pas envie de le recréer manuellement à chaque fois.

Quelqu'un a-t-il déjà été confronté à ce problème ?
Je vous en remercie d'avance.

Â+ [file name=PlanLettres.zip size=2040]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PlanLettres.zip[/file]
 

Dugenou

XLDnaute Barbatruc
Salut André !

Si j'essaye de te faire quelquechose, ça va être avec des colonnes intermédiaires. Par contre je pense qu'avec une macro c'est faisable. Tu connais mon niveau en macro ! J'espère qu'un autre saura l'écrire.

Cordialement

PS quelquepart, ça rassure de voir que même un Barbatruc peut avoir besoin d'aide !
 

Abel

XLDnaute Accro
Bonjour andré, Dugenou,

Sans macro, cela me semble aussi difficile.

Avec macro, ci-joint une solution.

Les informations doivent être impérativement triées auparavant (dans l'exemple que tu as joint, il y a un piège à la ligne 13).

A+

Abel. [file name=Andre_PlanLettresV1.zip size=10737]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Andre_PlanLettresV1.zip[/file]
 

Pièces jointes

  • Andre_PlanLettresV1.zip
    10.5 KB · Affichages: 34

andré

XLDnaute Barbatruc
Salut Dugenou et Abel,
Salut le forum,

Il me semblait aussi qu'il n'y avait moyen de le faire que par macro.
Dommage !

Merci Abel pour ta macro.
Mais elle (me) pose quelques problèmes.

J'ai regardé la ligne 13, il me semble que c'est un doublon.
Cela n'est évidemment pas permis.
Je peux éviter ce problème par une validation, je m'en occupe.

J'ai corrigé, mais du coup il y a un bug dans la macro, et vu mon niveau en VBA, je ne parviens pas à le corriger (voir exemple joint).

De plus cette macro pourrait-elle être complétée par :

Au début : supprimer le plan si existant (menu Données / Grouper et créer un plan / effacer le plan).
Faire attention : s'il n'existe pas de plan, pas de bug.

Ensuite : trier la feuille sur base de la colonne A.

Enfin la macro : créer le plan.

Autre (gros) problème qui n'est pas résolu :
Si je crée un code de moins de 4 lettres et que le code précédent n'existe pas (encore), il devrait aussi il y avoir un bug !

Moi je regarde de mon côté la possibilité de régler ce problème par une validation (mais cela en fait déjà deux !).
Et les 3 conditions de MFC sont déjà prises.

Pa simple, mais c'est pour cela qu'on a des amis sur XLD (lol).

Merci encore de l'attention que tu portes à mon problème.
Â+ [file name=PlanLettresV2.zip size=10533]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PlanLettresV2.zip[/file]
 

Abel

XLDnaute Accro
Bonjour andré, Dugenou, le forum,

En déplacement aujourd'hui.

Je profite d'un petit moment pour te poster ça.

A+

Abel.

Edition :

Bon d'accord ... avec la pièce jointe c'est mieux. [file name=Andre_PlanLettresV2.zip size=16933]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Andre_PlanLettresV2.zip[/file]

Message édité par: Abel, à: 21/02/2006 09:14
 

Pièces jointes

  • Andre_PlanLettresV2.zip
    16.5 KB · Affichages: 37

andré

XLDnaute Barbatruc
Resalut,

Sur le fichier joint, qui m'a été aimablement concocté par Abel, et dont je le remercie, j'ai placé une validation empêchant l'encodage de doublons et de codes n'ayant pas d'ascendant direct.
Cela marche à mon goût.

Quand aux trois macros d'Abel, je souhaiterais, malgré ses conseils, les regrouper en une seule, qui efface le plan, trie la feuille sur base des codes de la colonne A, et recrée un nouveau plan.
Donc suppression de deux boutons et des deux boîtes à message.
J'ai bien essayé, mais étant donné mon incompétance notoire en VBA, je n'y suis pas parvenu.

Ce qui n'est pas encore résolu, mais cela n'a rien à voir avec les macros, est qu'en créant une nouvelle division (à 1 caractère) sans créer les descendants, le plan s'organise mal.
La seule solution que j'ai trouvée est de créer les descendants, comme l'exemple en lignes 33 à 36.
En créant seulement la ligne 33, le plan incorpore cette ligne sous la ligne 2 et cache le solde.

Merci d'avance.
Â+ [file name=PlanLettreV3.zip size=16861]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PlanLettreV3.zip[/file]
 

Abel

XLDnaute Accro
Bonjour andré, Dugenou, le forum,

Effectivement.

Mais là il y a un truc inhérent à Excel, me semble t'il.

L'élément isolé me provoque un nouveau plan qui se trouve collé au précédent.
Ca qui l'inclue dedans.

Pour pallier à ce soucis, je considère l'émément isolé comme étant ... isolé.

Les boutons de suppression de plan et de tri sont restés mais les fonctions sont intégrées dans la macro principale.

Abel. [file name=Andre_PlanLettreV4.zip size=20465]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Andre_PlanLettreV4.zip[/file]
 

Pièces jointes

  • Andre_PlanLettreV4.zip
    20 KB · Affichages: 34

andré

XLDnaute Barbatruc
Salut Abel,

Merci, je regarde ça.

Ce que tu appelles 'inhérent' à Excel, est pourtant bien logique, je l'avais aussi remarqué.

Pour créer un plan il faut necessairement deux lignes : une ligne de synthèse (le titre) et une ligne de détail.
Quand il n'y a que la ligne de synthèse, cela ne fonctionne évidemment pas !

Je suis impatient de voir ce que tu m'as concocté, et te tiens au courant.
Merci encore pour le temps que tu y as investi.

Â+
 

andré

XLDnaute Barbatruc
Resalut Abel,

La façon dont tu as solutionné le problème des codes sans descendants me laisse ... bouche-bée !
C'est du grand art, je ne m'attendais pas à ça.

Trois tous petits problèmes toutefois :

Peux-tu me donner le code exact et l'emplacement ou je dois mettre un screen.updating=true et =false (ou quelque chose de ressemblant et dans quel ordre).

J'ai inséré des lignes supérieures au plan (pour les titres), pas de problème.
Mais dès que j'écris un titre, ça buge !
Où et que dois-je modifier de sorte que le plan ne commence qu'à la ligne que je définirais plus tard.

Le tri ne se fait que pour la colonne A, alors que je souhaite que ce soit toute la feuille, c'est à dire que les données qui se trouvent sur une ligne triée suivent ce tri.

A titre informatif, j'ai trouvé un bug dans ma formule de validation (qui est déjà solutionné) !
Comme quoi il faut vraiment etre très attentif à tout.

Merci encore.
Â+

Message édité par: andré, à: 22/02/2006 15:26
 

Abel

XLDnaute Accro
Re,

Application.ScreenUpdating = False

En début de code, juste après les déclarations de variable, par exemple.

Et le contraire (=True), juste avant la sortie de la macro : avant 'End Sub'.

Regarde l'exemple joint si le fonctionnement te convient.
Tu peux recopier le code.

Le tableau est supposé commencer dans la colonne 'A' sur n'importe quelle ligne.
Si le tableau peut démarrer ailleurs, il faudra adapter le code.

A+

Abel. [file name=Andre_PlanLettreV5.zip size=22733]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Andre_PlanLettreV5.zip[/file]
 

Pièces jointes

  • Andre_PlanLettreV5.zip
    22.2 KB · Affichages: 49

andré

XLDnaute Barbatruc
Resalut Abel,

A première vue, c'est parfait.
Au départ quelques problèmes de tri (bug).
Je ne sais pas ce que j'ai (mal) fait !
J'ai réouvert, et ça marche.

Je tiens à te remercier bien sincèrement.

Maintenant je passe à grande échelle, avec deux, trois problèmes à résoudre.
Cela prendra bien quelques jours.
Je te tiens au courant.

Bonne soirée.
Â+
 

Discussions similaires

Réponses
5
Affichages
199

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972