Problème de tri de tableau

jim7963

XLDnaute Junior
Bonjour à tous,

cela faisait un petit moment que je n'étais pas venu ici, mais là j'ai vraiment besoin de vos lumières car je sèche sur un de mes codes.

Je vous explique:
j'ai deux premières feuilles dans lequelles j'ai des données sur des salariés. La première feuille reprend des données de l'année en cours et la seconde des données de l'année précédente.
J'ai mis au point un userform pour compiler les données que je souhaite avoir sur une troisième feuille en sélectionnant un secteur et un rayon donné.

Le code marche très bien sauf la dernière partie (les deux derniers For each...Next du Private Sub CommandButton1_Click()) que je n'arrive pas à paramétrer correctement. J'ai encadré cette partie par des commentaires pour la repérer plus facilement.

Dans le premier For Each...Next, je souhaite mettre face-à-face les salariés présents sur les deux années. Or sur cette partie, je ne sais pas pourquoi sur la plupart des personne cela marche très bien et sur quelques exceptions j'ai un décalage d'une ligne, je n'arrive pas à comprendre pourquoi.

Dans le second For Each...Next je souhaitais que la macro me fasse un tri en me laissant les personnes présentes sur les deux années en haut de tableau et en déplaçant les autres en bas de tableau. Le morceau de code que j'ai écris ne fait du tout ce que je veux.

Je vous joins un fichier avec l'userform pour le tester. J'ai mis un exemple de résultat sur la 3ème feuille du classeur. J'ai surligné en jaune les personnes que j'ai en décalage.
Pour la dernière partie du code (le dernier For Each...Next de l'userform) je l'ai laissée dans le code mais je n'ai pas mis le résultat dans le fichier car ça donnait n'importe quoi.

Voilà pour les courageaux qui voudront bien se pencher sur mon cas, un grand merci par avance. Et n'hésitez pas à m'interpeler si vous avez besoin de plus d'explications.
 

Pièces jointes

  • Test.xlsm
    182.9 KB · Affichages: 46
  • Test.xlsm
    182.9 KB · Affichages: 48
  • Test.xlsm
    182.9 KB · Affichages: 94

jim7963

XLDnaute Junior
Re : Problème de tri de tableau

Merci Dranreb mais c'est bon.

Finalement j'ai modifié mon code pour passer par des copy/paste au lieu de cut/insert. C'est un peu plus lourd mais ça à l'air de fonctionner.

En tout cas merci encore.
 

jim7963

XLDnaute Junior
Re : Problème de tri de tableau

Ah ben si t'as tant avancé que ça je veux bien voir le résultat. Ça me permettra de voir ce que je peux améliorer, surtout que même si la macro fonctionne il me reste un bug que j'arrive pas à solutionner.

J'ai laissé le fichier au boulot, je le posterai demain pour que tu vois ce que j'ai modifié.

En tout cas encore merci de t'être penché sur mon cas
 

Dranreb

XLDnaute Barbatruc
Re : Problème de tri de tableau

Bon ben je vais m'y remettre. Mais ce serait bien plus simple si c'était toujours classé par matricules avec une ligne commune pour chaque quitte à ce que la colonne où il n'existait pas une des 2 années soit vide. Alors si en plus ça facilitait la comparaison recherchée, n'ayant seulement pas été retenu car présumé plus compliqué (le comble alors que c'est plus simple) ne pas hésiter à me le dire.
 
Dernière édition:

jim7963

XLDnaute Junior
Re : Problème de tri de tableau

Voilà une seconde version de mon fichier après que j'ai retouché ma macro.
Il reste une exception, une ligne qui ne se déplace pas et je n'arrive pas à comprendre pourquoi.
Le détail est dans le fichier.
Sinon le reste fait bien ce que je souhaite.
 

Pièces jointes

  • Test v2.XLS
    482.5 KB · Affichages: 33
  • Test v2.XLS
    482.5 KB · Affichages: 45
  • Test v2.XLS
    482.5 KB · Affichages: 49

Dranreb

XLDnaute Barbatruc
Re : Problème de tri de tableau

Bonjour.
Fait à partir du 1er classeur, j'en suis là.
Attention, pour le moment je met le corps des valeurs de résultat en colonnes L:T de la feuille active. Veillez donc à bien afficher l'Userform avec la CHARGE CAISSE comme feuille active. Peut être ne devrait-il plus y avoir qu'une feuille de comparatif puisque de toute façon son établissement devient instantané, comme à chaque fois qu'on accède le moins souvent possible aux plages de nombres quelconques de cellules (seulement 2 accès en récupération de données, 6 accès pour le moment, en sortie, avec mon système, contre des milliers avec le vôtre !). Ça le restera si toutefois on ne s'embarrasse pas de plein de questions de formats et tout ça, que j'ai mis en commentaires, car ça me gonfle.
 

Pièces jointes

  • OutIdxJim7963.xls
    732 KB · Affichages: 68
Dernière édition:

jim7963

XLDnaute Junior
Re : Problème de tri de tableau

Oula oui on est a des années lumières de mon petit niveau.
Quand je vois ça, je me dis que j'ai encore énormément à apprendre.
Vôtre fichier est vraiment top et beaucoup plus rapide que le mien.

Un grand merci pour ce superbe travail.
 

Dranreb

XLDnaute Barbatruc
Re : Problème de tri de tableau

Oui, mais je ne suis pourtant pas trop content de moi. La programmation de service est certes utilisée intensivement sans avoir eu à bouger. Mais normalement, et dans la plupart des autres cas que j'ai eu à traiter, la programmation applicative, elle, est, et doit être, beaucoup plus simple que ça dans un Userform. N'hésitez pas à me demander pour ce que vous auriez du mal à comprendre, et ré-soumettez moi le truc si vous le complétez.

P.S. J'en profiterai pour corriger quelques bogues: Tableau T surdimensionné car le comptage ne tient pas compte des Heures non renseignées, et plantage lorsqu'une des sources est vide de toute ligne.
 
Dernière édition:

jim7963

XLDnaute Junior
Re : Problème de tri de tableau

Bonjour,

et voilà le fichier terminé grâce à vous.
J'ai rajouté les mises en formes et formules qui m'intéressaient.
J'ai rajouté 2 macros pour avoir mon fichier final.

Tout marche nickel à l'exception du pagesetup dans l'userform où je définis des tailles de marges mais il me vailde d'autres dimensions. Je ne comprends pas pourquoi, du coup j'ai mis des valeurs qui me permettent d'avoir à peu près les marges que je souhaite.

J'avoue avoir eu un peu de mal au début avec le Feuil1 et Feuil2 car je pensais qu'il s'agissait des noms de feuilles alors qu'il s'agissait du CodeName des feuilles. Du coup j'ai un peu galéré mais j'ai finis par trouver et j'ai pu adapter les macros que j'ai ajouté.

Encore un grand merci car ce fichier va me faciliter la vie et me permettre de gagner beaucoup de temps.
 

Pièces jointes

  • Comparateur.xls
    771 KB · Affichages: 49
  • Comparateur.xls
    771 KB · Affichages: 101
  • Comparateur.xls
    771 KB · Affichages: 47

Dranreb

XLDnaute Barbatruc
Re : Problème de tri de tableau

Bonsoir.

J'ai regardé rapidement.

Bon comme dit, L est mal calculé par
For Each Matric In GrpOrg
If Matric.Id <> "" Then For Each Rayon In Matric.Contenu: For Each Secteur _
In Rayon.Contenu: L = L + Secteur.Contenu.Count: Next Secteur, Rayon
Next Matric
Il faut là aussi :
VB:
For Each Matric In GrpOrg
   If Matric.Id <> "" Then
      ' Le piège qu'il n'avait pas dit: quand Heures vide c'est comme s'il n'y était pas.
      For Each Rayon In Matric.Contenu: For Each Secteur _
         In Rayon.Contenu: For Each Détail In Secteur.Contenu
         If Not IsEmpty(Détail(5)) Then L = L + 1
         Next Détail, Secteur, Rayon: End If: Next Matric
À part ça vous pourriez sans doute réutiliser Nb1 et Nb2 pour calculer Derligne1 et Derligne2 au lieu de les rechercher par des Find. Peut être même auriez vous intérêt à affecter par des Set [A5].Resize(Nb1, 4) et [F5].Resize(Nb2, 4) à des variables As Range avant d'affecter les tableaux à leurs Value, si vous voulez retravailler dessus par la suite pour les formats. Ces Range auraient aussi une collection Columns permettant de distinguer leurs 4 colonnes.
 

jim7963

XLDnaute Junior
Bonjour,

je me permets de déterrer ce vieux sujet que j'avais créé il y a quelques années maintenant, car j'ai aujourd'hui un problème avec le fichier de Dranreb qui fonctionnait parfaitement jusqu'au mois dernier.
Je l'utilise tous les mois sans problème, pour mes analyses et allez savoir pourquoi, maintenant quand je lance mon Userform "SelectionFP" il me renvoie une erreur d'exécution 5: Argument ou appel de procédure incorrect.

Je ne vois pas ce qui a changé depuis ma dernière utilisation du fichier.
Si vous voyez une explication je suis preneur car là je sèche complètement, même en ayant fait une recherche google du code de l'erreur je ne trouve pas l'origine du problème.
 

Discussions similaires

Réponses
3
Affichages
421

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16