Bonjour à tous
Je débute sur VBA (depuis deux jours exactement...) 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.
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. 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 à bouton23)
Dim n As Byte, i As Byte
For n = 3 To 14
Sheets(n).Select
ActiveSheet.Unprotect (pwd)
For i = 1 To 23
ActiveSheet.Shapes("bouton" & Format(i, "00")).Select
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 24
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 joins le fichier si une âme charitable peut m’éclaircir (j'ai du ne laisser que le mois de janvier pour des raisons de taille de fcihier).
Merci pour votre aide
PS : J’ai créé le 24ème bouton seulement sur l’onglet janvier et il se nomme 24 (un peu excentré à droite des autres).
La liste des codes se trouve sur l’onglet « accueil » et le mot de passe est FATAL….Merci
Je débute sur VBA (depuis deux jours exactement...) 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.
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. 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 à bouton23)
Dim n As Byte, i As Byte
For n = 3 To 14
Sheets(n).Select
ActiveSheet.Unprotect (pwd)
For i = 1 To 23
ActiveSheet.Shapes("bouton" & Format(i, "00")).Select
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 24
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 joins le fichier si une âme charitable peut m’éclaircir (j'ai du ne laisser que le mois de janvier pour des raisons de taille de fcihier).
Merci pour votre aide
PS : J’ai créé le 24ème bouton seulement sur l’onglet janvier et il se nomme 24 (un peu excentré à droite des autres).
La liste des codes se trouve sur l’onglet « accueil » et le mot de passe est FATAL….Merci