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é
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é