Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mettre/remplacer nom dans un control par VBA

  • Initiateur de la discussion Initiateur de la discussion es83000
  • 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 !

E

es83000

Guest
Bonjour,

Je cherche à mettre un nom dans un contrôle en fonction de la colonne -2 . Pour l'instant j'utilise des commandbutton (mais suis pas certain que ce soit le "bon" choix…), avec des nom de bureaux, je souhaiterai que lorsque je clique sur le N° du bureau, au lieu qu'il m'affiche le N° du bureau, il me mette le nom de l'activité qui se situe dans la pré-pré-précédente colonne….

peut-être pas clair, mais la PJ le sera un peu plus….(avec photo et Userform et explications…)

merci pour votre aide,

Eric
 

Pièces jointes

Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

Merci Speel,

Effectivement cela fonctionne sur le nom de l'Userform, mais ce que je cherche, c'est le changement de nom du control.

J'ai essayé de m'inspirer de votre solution, en mettant dans l'Userform
Ctrl.caption = (target.offset (0,-2)
mais le code se bloque….

Merci de votre aide,
 
Re : Mettre/remplacer nom dans un control par VBA

Super merci Dranreb !!!

Votre code est une pure merveille, et mes capacités de création sont loin, très, très loin (malheureusement….).

Je suis en complète admiration, j'ai essayé de le décortiquer, de le comprendre, et je pense avoir compris la logique….Je vais un peu plus bosser les modules de classe, et les objets….

1 petite question :
- le vidage des bureaux inexistants est-il indispensable ? et si oui, pourquoi (pour ma culture personnelle…)

Effectivement les Captions contenaient initialement les noms des bureaux.

Merci pour votre aide,

Merci pour ce code,

Bien cordialement,
 
Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

- le vidage des bureaux inexistants est-il indispensable ? et si oui, pourquoi (pour ma culture personnelle…)
Peut être pas, il faut voir, mais il m'a paru logique de les supprimer puisqu'ils ne peuvent pas avoir été réservés au moyen de l'Userform.
lorsque l'on sélectionne dans l'Userform, que cela apparaisse en même temps sur la feuille
J'ai exprès ôté cette effet. Mais vous avez raison PlgBur.Value = TBur tout à la fin de BtnBuro_Clic, ferait l'affaire sans perturber le fonctionnement. Cependant on ne pourrait plus revenir en arrière avec le bouton Annuler à moins de sauvegarder le tableau TBur initial dans une copie. L'image de l'Userform ne reflète-t-il donc pas une vision bien plus claire de la réalité qu'on veut changer, sans l'avoir encore décidé ? Dans certains cas d'autres reservations dans la même colonne peuvent disparaître au cours de la manip. Un bureau ne peut être affecté qu'à une seule ligne.

Quelques changements seraient à apporter au début de la procédure Afficher:
VB:
Set PlgBur = Intersect(Cible.EntireColumn, Cible.Worksheet.UsedRange)
Me.Caption = Cible.EntireRow.Columns("A").Value _
   & " / " & PlgBur(1, 1).MergeArea(1, 1).Text _
   & " / " & PlgBur(2, 1).MergeArea(1, 1).Text
Set PlgBur = PlgBur.Rows(4).Resize(PlgBur.Rows.Count - 3)
 
Re : Mettre/remplacer nom dans un control par VBA

Merci une fois de plus Dranreb, 🙂

Comme vous l'avez remarqué, j'ai modifié mon post, car effectivement, j'avais trouvé le moyen de l'inscrire sur la feuille, mais après plusieurs essais, j'en suis arrivé à la même conclusion que vous : l'Userform est nettement plus lisible et il m'était impossible de revenir à l'état initial…donc le bouton "Annuler" est indispensable !

J'ai essayé d'annuler la ligne concernant le vidage des bureaux inexistants, mais ils sont annulés automatiquement quand même, et finalement, j'ai fait un code à côté pour les identifier dès le départ, afin que l'on sache quels étaient les bureaux inexistants…(au cas où.., mais je vais verrouiller pour que es collègues n' "inventent" pas des bureaux…).

Concernant le complément de code, c'est un changement qu'il faut que j'opère ou c'est un changement de code par rapport à la 2ème question : affichage sur la feuille quand on sélectionne dans l'Userform ?

En vous remerciant à nouveau,

Merci pour votre aide,
 
Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

Non les changement sont indépendant. La deuxième instruction c'est pour intégrer le "collègue" dans le Caption du Userform, et la dernère un bogue à corriger pour le calcule de la taille réelle en lignes de la plage.

C'est l'instruction TBur(L, 1) = Empty qui supprime le faux bureau. Ce serait ces 2 lignes qui seraient donc à supprimer:
ElseIf Not IsEmpty(TBur(L, 1)) Then
BurInex = True: TBur(L, 1) = Empty
Et aussi la déclaration de BurInex.
 
Dernière édition:
Re : Mettre/remplacer nom dans un control par VBA

Merci Dranreb,

Un mot : extraordinaire !!! merci pour cette correction de Bug, mais que je n'avais pas remarqué…malgré tous les essais…mais merci quand même , ce code est vraiment parfait ! et impressionnant !!

J'ai appliqué les modifications concernant les bureaux inexistants, tout fonctionne parfaitement ! Merci 🙂

Merci pour votre aide, ce code, sa logique, que j'ai maintenant compris, éblouissant !! Bravo !

Merci de m'avoir fait découvrir de nouveaux horizons dans le VBA,

Merci,
 
Re : Mettre/remplacer nom dans un control par VBA

Bonjour,

Je suis resté sur la réflexion de la recherche de simplification visuelle, et donc, j'ai fait un petit code qui identifie les collègues sans bureaux et les listes, et met une "X" dans la demi journée sans bureau. Car en fait, c'est ça qui est le plus recherché : trouver un bureau disponible et l'affecter à un collègue qui n'en a pas….

C'est plus lisible, mais depuis hier soir, je n'arrive pas à générer le click : J'ai crée une feuille "Pil", qui liste les collègues sans bureaux et met une "X" pour identifier la 1/2 journée. En terme de lisibilité, on ne peut faire plus simple..

Par contre, je n'arrive pas à générer le click : que lorsque je clique sur une croix dans la liste de la feuille "Pil", que le code identifie à quelle cellule cela correspond dans la feuille "planning" et déclenche automatiquement l'Userform…Tout en gardant les 2 possibilités : clic sur la feuille "Pil" et clic sur la feuille "Planning"…. (je suis obligé de garder la feuille planning car c'est une compilation de différents plannings)

Merci pour votre aide,
 

Pièces jointes

Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

Bonjour.

Il me semble que ça n'apporte pas grand chose puisque ça comporte moins d'information que la feuille Planning.
Il vaudrait mieux améliorer la présentation de celle ci. À commencer par éliminer les colonnes vides, prévoir une bordure verticale épaisse entre les jours, fine (voire inexistante) entre les activités et les bureaux, et surtout: une mise en forme conditionnelle qui mettrait un fond rouge aux bureaux vides derrière une activité renseignée.
On pourrait aussi refondre entièrement la conception de l'Userform de façon à ce qu'il puisse gérer toute la semaine.
Par exemple un volet gauche Activité permettant de sélectionner une demi-journée au moyen de 2 ComboBox, une ListBox à 3 colonne pour le collègue et son activité, un TextBox pour saisir celle ci. Une couleur plus claire pour le bureau affecté au collègue sélectionné dans la ListBox. Les boutons bureaux pourraient aussi être plus gros, de façon à montrer plus d'informations. Au point de ressembler à un plan des lieux. Enfin ce sont des idées, rien de plus.
 
Re : Mettre/remplacer nom dans un control par VBA

Merci Dranreb,

Mon problème est le suivant : J'ai 4 collègues responsables qui font le planning de leurs équipiers. L'outil de planification est un outil figé par la boite…lorsque l'on l'exporte (car on peut l'exporter en Excel) , on se retrouve avec :
Colonne A : Nom du collègue
Colonne B : Nom équipe
Colonne C : Groupe auquel appartient le collègue

ensuite viennent les 1/2 journées, exemple lundi matin
Colonne D : Activité
Colonne E : un commentaire sur le type d'activité
Colonne F : Le lieu (= le bureau)
Colonne G : Un commentaire
Colonne H : Un autre commentaire

Pour lundi aprem, Colonne I, J,K,L,M, etc….jusqu'à la colonne BA

J'ai donc 4 feuilles (puisque 4 collègues responsables avec chacun son planning), que je compile : j'ai créé une feuille "Plan" (d'où le message de mise à jour des données à l'ouverture) qui compile tous ces plannings. Je les mets dans la feuille "Plan", ensuite, en feuille "Planning", je fais un lien entre "Plan" et "Planning" (cela me permet de voir et d'identifier les modifications qui ont pu être apporter, et car lorsque j'ai attribué tous les bureaux, j'ai un code qui "regarde" entre "Plan" et "Planning" et me liste toutes les modifications pour que je sorte la liste et puisse retranscrire les modifications dans l'outil de la boite…

Dans la feuille "Planning", prenons le cas du lundi matin : en colonne G, je regarde quel est l'attribution normale du bureau (il peut être pour de l'accueil, de l'administratif, etc…), ensuite en colonne H, je regarde quel est l'attribution normale de l'activité (accueil, administratif, etc…) et en colonne E, je regarde la concordance : si le bureau prévu pour faire l'administratif et que l'activité est bien une activité administrative, pas de problème, par contre, si le bureau est prévu pour faire de l'accueil et qu'il y a une activité administrative, la cellule en E, devient "rouge", mais ce n'est qu'un indicateur…(mais maintenant que je vois ce que votre code a pu faire, je me demande si cette information m'est vraiment indispensable.)…Voilà pour l'explication des colonnes vides de la feuille "Planning" (car non concernées par ma demande initiale), mais comme je disais, à la vue de vos idées, et code (extraordinaire, je le redis), je ne suis finalement pas certain qu'elles apportent une réponse et/ou soit véritablement utiles…

Par contre votre idée est très séduisante…dans mon USF initial, j'avais essayé de faire un plan des lieux (en gros, les colonnes représentaient un étage..), mais je n'ai pas compris le Pourriez vous me montrer un exemple ? (sur 4-5 bureaux par exemple…) S'il vous plait ?

En vous remerciant pour votre aide, qui me permet d'avancer, et de découvrir des possibilités jusque là inconnues pour moi…

Merci,
 
Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

Évidemment, si la feuille Planning résulte d'une exportation depuis un autre logiciel… Ou est plutôt copiée dans celle ci (sinon les macros du module de la feuille ne seraient pas bien supportable) ?
Pour faire un lien simple il faudrait inscrire le numéro de ligne du Collègue dans votre tableau avec les croix. Ou alors les mettre tous mais masquer les lignes où il n'y a aucune croix. Il a une erreur me semble-t-il en ce sens qu'il y a des croix même sur des collègues qui n'ont pas d'activité attribuée.
Ce n'étaient que des idées à creuser davantage. Comment pourrait-on diviser l'Userform en deux volets cote à cote, celui de gauche servant à sélectionner une activité pour une certaine personne dans une certaine demi-journée, de façon à pouvoir gérer toute la semaine avec l'Userform sans devoir naviguer constamment entre la feuille et celui-ci ? Votre tableau avec les croix ne pourrait il pas être dans l'userform, mais sous forme d'une ListBox à 3 colonnes pour une seule demi-journée ? Une case à cocher pour les afficher tous, ou seulement ceux qui ont une activité et pas de bureau.
 
Dernière édition:
Re : Mettre/remplacer nom dans un control par VBA

Merci Dranreb,

Par contre, j'ai essayé d'utiliser le filtre automatique pour ne voir QUE les bureaux libres (=vide) et lorsque je clique et ouvre l'USF et par exemple sur mardi matin, où j'ai l'affichage du collègue 8,9,16,17 et que je sélectionne le collègue 8 et sélectionne le bureau 2.00, le code met "B16"…je pense que c'est le filtre automatique qui pose ce problème…

Oui, effectivement
Une case à cocher pour les afficher tous, ou seulement ceux qui ont une activité et pas de bureau.
je pense que c'est la solution….Ma feuille "Planning" n'a que le seul intérêt de compiler les 4 autres plannings, le résultat que je cherche à obtenir est simple : voir par 1/2 journée les collègues sans bureaux (s'ils n'ont pas d'activité => pas de bureau => leur trouver un bureau) et identifier les activités dans les bureaux "pris" et voir les bureaux disponibles pour pouvoir les affecter aux collègues sans bureaux…tout ceci sur un format visuel simple….


Apparemment vous avez une idée sur une possibilité….

merci pour votre intérêt à mon problème, merci pour vos conseils, merci,

Merci pour votre aide,
 
Dernière modification par un modérateur:
Re : Mettre/remplacer nom dans un control par VBA

(s'ils n'ont pas d'activité => pas de bureau => leur trouver un bureau)
Vous voulez dire je suppose s'ils ont une activité mais pas de bureau pour l'exercer ?
S'ils n'ont pas d'activité, voir s'il faut pouvoir en saisir une dans une TextBox (ou un ComboBox ?) avant de choisir un bureau. Y a plus qu'à redessinez l'Userform avec ces nouveaux contrôles. Enfin non… il y aura aussi de la programmation à mettre derrière tout ça, bien sûr. Les noms des collègues sont-il à l'origine dans le même ordre que celui dans lequel il faudra les présenter dans la ListBox, par ordre alpha par exemple ?
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

F
Réponses
7
Affichages
1 K
A
Réponses
17
Affichages
4 K
Abdenour
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…