VBA - Pour Fanatique

Bonjour,

Le sujet aurait pu s'appeler "Reclassement à la manière des onglets de classeur" :

Quand on déplace un onglet de la gauche vers la droite, tous les autres se déplacent d'un cran vers la gauche. (et vice versa), mais dans mon cas seule la première hypothèse est utile.

Le classeur joint est fortement synthétisé pour isoler seulement la problématique.

Le userForm comporte 2 catégories d'objets : En haut des boutons (comportant une lettre de l'alphabet) destinés à remplir 10 Objets (Labels en bas)

Notez que dans votre programmation vous ne pourrez pas utiliser les Tag de ces Labels. Pour faciliter leur identification visuelle les labels vides ont comme Caption leur N°iD :

Lab1: Caption = 1

Lab2 : Caption = 2

Si on les remplit leur caption devient alors : A1, Q2, G3, P4, H5, C6 ,7, 8, 9, 10

Quand 1 seul Label est rempli YAPA de problème : On le plein et on le vide sans problème... Le problème c'est quand il y en a plusieurs !

Imaginons qu'on vide le G3, tous les autres Labels doivent alors se déplacer d'un cran et on aura alors : A1, Q2, P4, H5, C6, 3, 7, 8, 9, 10

Notez également que dans votre programmation vous ne pouvez pas jouer sur les captions et faire des Mid sur un String ou en faire un Array à une dimension :

Rappel : Le classeur joint est fortement synthétisé pour isoler seulement la problématique. Dans ma réalité les labels sont en réalité des Ctrl-Images. Il y a donc nécessité à mon avis de passer par le Tableau de synthèse qui est proposé pour mémoriser les places de chaque objet et leur statut plein ou vide.

La macro Action devrait donc être la seule à corriger. Attention : Actuellement elle produit un crash "Erreur Automation !"
Merci

Bonsoir,

une proposition :

Mais avec les histoire de nom de label, de tag et autre je ne sais si cela correspond à votre demande. Ceci dit cela vous orientera peut-être vers "la" solution.

@ bientôt

LouReeD

Fichier corrigé !

Quelques suite de séquences qui n'étaient pas prises en compte !
le nouveau fichier :

@ bientôt

LouReeD

Bonsoir LouReed,

Malheureusement je n'ai pas pu donner un classeur de travail bien finalisé et il y avait quelques bug majeurs dans le code (Pour commencer le Tableau qui ne comportait pas le nom réel des Labels.

Ce tableau me semble essentiel dans l'optique ou j'essaie de transposer toussa avec des objets/images.

On va en rester là pour le moment jusqu'à ce que ma mécanique soit mieux huilée...

Merci de ton essai.
Je clos le sujet.

A=

Pourquoi ? Cela ne correspond pas à la demande au niveau du fichier test ?

Et ben non, il faut que le label bouge et pas seulement les valeurs de ce dernier ! Désolé !

@ bientôt

LouReeD

Mon problème c'est que ce n'est pas l'objet lui-même que tu as déplacé mais son contenu : Imagine un peu que tu aies un classeur de 10 feuilles et que tu veuilles déplacer la première après celles qui sont pleines. Tu as juste à la faire glisser en 5ème, 6ème voire 10ème position et les autres se retrouvent d'office à la bonne place.

Toi tu ne déplaces pas la feuille après l'avoir vidée, tu remplaces le contenu de chaque feuille, par le contenu de sa suivante. Ça n'est pas tout à fait la même chose.

Imagine un peu que Microsoft fasse la même chose quand tu fait un RAZ de ta feuilles Devis2, qu'il mette le contenu de devis3 dans Devis2 et ainsi de suite...

Il faut que je vérifie. Mon problème est que dans la vrai vie mes Labels ne sont pas des Labels mais des objet-Image, Et que leur Tag identifie la source et la propriété Picture de l'objet_image. En soit ce n'est pas capital il suffirait de modifier le Tag en même temps que l'image. Seulement ça ferait des tas de changement d'image inutiles en cascade alors que le déplacement des contrôles serait instantané.

Comprend tu mieux mon problème ?

Alors voici le code corrigé une fois que je comprend la demande !

Le fichier :

@ bientôt

LouReeD

Un index qui correspond à une position dans la suite et une boite qui correspond au nom du label.

Après un ajout, une boucle pour trouver la position et le nom de la première boite vide.

Après une suppression, on déplace les boites de la droite vers la gauche, on met à droite la boite cliquée et une boucle pour trouver de nouveau la paire index / nom de boite.

Le caption à vide permet de ne pas lancer la procédure de suppression.

@ bientôt

LouReeD

Pas mal ! Mais...

Il faut ne tenir compte que des Labels "Pleins" Je t'expliquerai plus loin pourquoi.

S'il n'y a qu'un Label plein, YAKA le vider et il ne change pas de place puisqu'il est tout seul.

S'il y a 6 Labels pleins Le label vidé va se retrouver en 6 ème position. Inutile d'examiner tous les autres puisqu'ils sont vides.

Pourquoi ? Dans ma réalité d'objets les Contrôles_images vides sont invisibles (on peut même considérer) qu'ils n'existent pas, il y aurait risque d'un genre de dépassement de capacité. Un peu comme si tu voulais mettre en 10ème position une feuille Devis2 dans un classeur qui ne comporte que 7 feuilles...

Toutefois il y a obligation de conserver un tableau de 10 lignes par ce que après il y une histoire de paramétrage : Dans ma réalité le TPos comporte 15 objets (donc 15 lignes et selon le paramétrage initial seul x objets_image seront fonctionnels (visibles).

Donc ce serait parfait si l'objet cliqué ne soit pas rélégué au fin fond du tableau, mais soit le premier disponible à nouveau.

Est-ce trop demander ?

A+

Non !

@ (très) bientôt

LouReeD

Voici !

Le fichier :

Juste une petite recherche de la fin de la boucle, et si fin = vide alors c'est qu'il y avait 10 Label de plein, donc fin = 10 !
j'ai ajouté un test afin de ne pas modifier l'index 10 s'il y a une donnée, il faut commencer par faire de la place pour modifier le dernier label, à voir

Après le code peut (certainement) être optimisé, je ne sais... Mais il fait ce qu'on lui demande !

@ bientôt

LouReeD

Bonjour,
Super ! En plus les couleurs sont plus simples à gérer que le caption pour pister les objets.
Avec ça je devrait pour voir transposer dans mon monde...
Je reviendrai si j'ai des difficultés.
Merci A+

Bonjour,

Merci pour votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba fanatique"