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

Microsoft 365 Pb macro mise a jour

monarc

XLDnaute Nouveau
Bonjour


Je débute sur VBA et forcément j'ai déjà un problème....
Le fichier concerné est un planning de gestion de personnel récupéré sur internet que j'utilise au quotidien et que je souhaiterais améliorer car j'ai des missions en plus et du personnel en plus.

Voici mon problème:

Il y a des boutons sur chaque feuille qui permettent lorsque l'on clique dessus de remplir automatiquement le planning (boutons présents sur 12 feuillets correspondant aux douze mois...).
Seulement le nombre de bouton est limité à 23 et j'ai 7 missions a rajouter. Il m'en faudrait naturellement plus vu que l'on n'en a jamais assez.

Je me mets donc au travail

Je copie un des boutons que je colle à la suite des autres. (pour commencer sur l’onglet janvier) Je lui affecte la macro suivante que j'ai insérée dans le module nommé "planning" existant en copiant une macro déjà existante:

Sub bouton_24() 'cellule verte
If Intersect(ActiveCell, Range("planning")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect (pwd)
ActiveCell = Sheets("Accueil").Range("B31").Value
ActiveCell.Interior.Color = RGB(0, 255, 0)
ActiveCell.Font.Color = RGB(0, 0, 0)
ActiveCell.Offset(0, 1).Select
ActiveSheet.Protect (pwd)
End Sub

Je prends soins de mettre le numéro 24, de changer la cellule ou il va chercher le texte à copier (sheet accueil.range B31)

Et cela fonctionne ….il m’insère bien les données que je désire lorsque je clique dessus

Mais….cela se complique

Sur le feuillet accueil où sont situés l'ensemble des codes et où chaque bouton va chercher les données qu'ils doivent copier, il y a une macro qui permet lorsque l’on change de codes de modifier l'ensemble des textes inscrits dans chaque bouton et dans chaque feuillet (sur le bouton lui même)...je ne suis pas très clair, désolé

Ce bouton se nomme "appliquer les nouveaux codes" :

La macro affectée est la suivante :

Sub maj_boutons()
'Applique les codes de la page d'accueil sur la légende des boutons (bouton01 à bouton30)
Dim n As Byte, i As Byte
For n = 3 To 14
Sheets(n).Select
ActiveSheet.Unprotect (pwd)
For i = 1 To 30 ????
ActiveSheet.Shapes("bouton" & Format(i, "00")).Select (ça me souligne toujours cette phrase)
Selection.Characters.Text = Sheets("Accueil").Cells(7 + i, 2).Value '1ère cellule : B8
Next i
ActiveSheet.Protect (pwd)
Next n
Sheets("Accueil").Select
End Sub

Je crois comprendre que le n correspond aux feuillets et le i aux codes disponibles. Je vois qu’il va chercher le premier texte dans la cellule B8 et je ne vois grand chose d’autre….

Tout bêtement, je change alors For i : 1 To 23 en 1 To 30

Et forcément, cela ne marche pas….cela bloque la macro et ne met pas à jour mes différents boutons sur les différentes feuilles. IL s’arrête au 23ème bouton du premier feuillet concerné (janvier) et ne va pas jusqu’au bouton créé….

Je pense que cela vient de cette commande :

ActiveSheet.Shapes("bouton" & Format(i, "00")).Select –Difficile de comprendre le ("bouton" & Format(i, "00")) ? Les boutons ont-ils une référence ?

Je ne peux pas joindre le fichier mais si vous en avez besoin je peux vous l'envoyer par mail.


Merci pour votre aide à tous

mot de passe 3 puis entré
 

Pièces jointes

  • planning PUI SAT - Copie (3).xlsm
    383.9 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Monarc,

Tous les objets dans XL ont une référence, y compris les boutons. Il faut bien qu'XL retrouve ses petits.

"bouton" & Format(i, "00")) : si i=8 alors cela donne bouton08 avec le nombre sur deux chiffres.
Par ex en Fev, MIT est bouton01 ... jusqu'à Ctrl qui est bouton23. ( vous avez le nom en haut à gauche )

Donc si vous rajoutez des boutons et que vous réutilisez cette boucle le nouveau bouton doit s'appeler boutonxx avec xx la valeur la plus élevée des boutons +1.

Donc comme vous avez ajoutez 6 boutons, ils doivent s'appeler bouton24 à bouton30.

Pour changer le nom, se mettre en mode Création, sélectionner le bouton et changer le nom.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Petits dessins d'explication :

Les boutons ont tous un nom. Il suffit de cliquer dessus, le nom apparaît en haut à gauche :



Pour changer le nom, cliquer sur le bouton puis changer le nom. Finir par Entrée (return)



Evidemment, faire ça pour tous les boutons de bouton24 à bouton30.
En espérant que cela soit plus clair.
 
Dernière édition:

monarc

XLDnaute Nouveau
bonjour,

merci beaucoup cela a fonctionné, réel merci cela faisait je ne sais plus combien de temps que j'étais dessus. merci et passer une très bonne journée et une belle année.
bien à vous.
jean-Michel
 

Discussions similaires

Réponses
2
Affichages
329
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…