Modifier une macro

Bonjour à tous,

Voilà, j'ai récupéré un fichier planning excel sur le net laissé libre par son auteur (ainsi que le mot de passe pour ôter les protections).

Avant que je puisse l'uiliser, j'y effectue quelques modifications mais je coince pour 2 d'entre elles.

  • comment modifier le format des boutons en bas de chaque onglet (couleur de la police et du fond)
  • je parviens à ôter la protection des feuilles (mdp FATAL) mais dès que je change d'onglet, celle-ci revient automatiquement, y a t-il un moyen de résoudre ce problème ?
  • et enfin, est-il envisageable d'intercaler une seconde ligne par agent, libre d'écriture, sans modifier la macro ?

Mes connaissances en macro se limite à l'enregistrement et son application mais rentrer dans le détail en language HTML, c'est plutôt du charabia ...

Merci à ceux qui pourront m'apporter leur aide.

Vino.

PS : je m'aperçois à l'instant que mon fichier dépasse les 300Ko , y a t-il un moyen de le mettre en ligne différemment ? (fichier de 1.71 mo)

Bonjour

Essayes CJoint

http://cjoint.com/index.php

Merci pour l'info.

voilà le fichier :

Bonjour à tous,

Ci-joint le fichier avec la protection retirée et l'éditeur de VBA accessible.

J'ai également mis en suspend le fait que les différentes barres d'outils soient supprimées lors de l'ouverture du fichier (ça me gonflait à vrai dire) mais il est possible de le réactivé, y'a qu'à demander.

Tu peux maintenant changer la police des boutons ainsi que leurs couleurs à ta guise.

Pour la ligne à ajouter, je n'ai pas essayer, fait un test de ton côté en enregistrant une autre version du fichier pour essai.

@ +

Impec ... merci Niko.

Je vais pouvoir faire les modifs de formats dans la macro

Je teste pour la ligne supplémentaire.

Bonjour à tous,

Bon, j'avance ... les modifications de macro sont faites.

Par contre, j'aurai une question par rapport aux mises en formes conditionnelles aux lignes 33 à 42.

Cette mise en forme me permets d'ajouter un code couleur pour visualiser un manque ou un surplus de personnel.

L'effectif normal est entré en colonne B.

Le problème, c'est que cet effectif est différent le week end. J'ai donc ajouté en colonne A l'effectif du week end.

Est-il possible de lier la mise en forme conditionnelle à appliquer par rapport à la colonne A avec le calendrier perpétuel ?

C'est à dire que systématiquement, la mise en forme par rapport à l'effectif rentré en A s'applique sous chaque week end et jours fériés.

merci.

Bonjour,

Ci-dessous une capture d'écran avec la modif dans la MFC en exemple sur l'onglet janvier en cellule D33.

capture

J'ai mis les conditions applicables à la colonne A ou B.

Pour pouvoir le copier et l'appliquer à toutes tes lignes il faudra enlever les "$" sur le D33 de la MFC.

Je ne sais pas si c'est ça que tu veux.

A te relire

Bonjour Niko,

Merci de te pencher sur ce pb.

J'ai rentré ta MFC mais ça ne fonctionne pas. Est ce que tu peux m'expliquer cette formule ?

Pas facile à expliquer par écrit

En fait, l'effectif minimum rentré en colonne A correspond à celui du week end et jours fériés. Celui rentré en colonne B correspond aux autres jours.

La MFC permet de mettre le code couleur blanc : effectif ok; rouge : effectif incomplet; vert : effectif supp.

La MFC est donc différente pour les week end puisque les effectifs sont moindres. Je pourrais modifier la MFC sous chaque week end et jours férié mais c'est long ....

Est ce qu'il est possible de lier le calendrier perpétuel (mise en place automatique des jours fériés et week end) avec cette MFC ?

La formule veut dire :

colorise en ORANGE si D33 est inférieure à B33 ou A33

colorise en VERT si D33 est suéprieure à B33 ou A33

laisse en blance si D33 = B33 ou A 33

Mais je viens de me rendre compte que ça ne fonctionne pas par rapport à ta demande, J'ai rectifié les formules et je t'ai fait l'onglet pour janvier.

Cela fonctionne maintenant, dans la condtion il regarde si dans la ligne 1 c'est le week end ("S" ou "D") ou si c'est la semaine ("L", "M", "J", "V")

Ca fonctionnera pour le calendrier perpétuelle puisque ce dernier n'agit pas sur les ligne 33 à 42.

Dernier point que cette formule ne tient pas en compte ce sont les jours fériés et là....il faudrait rajouter la condition si la ligne 2 ne fait pas partie de la liste des jours fériés etc......, c'est jouable, je regarde de nouveau la formule mais ça va nous faire des kilomètres de lignes!

ok, j'ai mis la condition "jours fériés" dans les formules de la MFC mais ça ne veut pas fonctionner...

J'ai copié la MFC sur tous les onglets, normalement en face des jours fériés, on devrait avoir les cellules de la même couleur que ceux des week-ends, ce nest pas le cas, je regarderai demain mais c'est un début.

Excellent !

Merci Niko, je pensais que ça n'aurait pas été possible.

Si ça complique beaucoup les choses, ce n'est pas grave, je modifierai la mfc des jours fériès, ce ne sera pas la fin du monde .... 11 jours par an à corriger !

Je teste tout ça demain au boulot.

Bonne soirée.

Salut,

non ça ne complique pas plus que ça mais je n'arrive pas à lui faire comparer les valeurs en ligne 2 et la liste des jours fériés, je ne sais pas on dirait qu'il ne reconnait pas la valeur de la date, je cherche encore mais une formule de la MFC donnerait ça en gardant l'exemple sur l'onglet janvier en cellule "D33":

=SI(ET(OU(D$1="D";D$1="S";OU(D$2=Accueil!F8:F19));D33<$A33);VRAI;SI(ET(OU(D$1="L";D$1="M";D$1="J";D$1="V");D33<$B33;NON(OU(D$2=Accueil!F8:F19)));VRAI))

Barbare mais ça serait l'idée.

Apparemment, il n'est pas possible de faire référence à l'onglet accueil ou à tout autre feuille dans une mfc.

Enfin, c'est le message d'erreur qui apparait quand j'applique ta formule ...

Auquel cas, le pb est réglé je me passerai de cette possibilité. Ce n'est pas grave. Tu m'as déjà bien aidé sur l'ensemble.

L'ayant fait testé par une collègue ce matin, je voudrais modifier une chose :

Que faut-il ajouter à cette macro pour qu'elle prenne en compte non pas seulement sa valeur mais aussi le format (couleur) appliquée à la cellule de départ (ici B8) ?

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

Et puis une petite dernière pour la route , après tout sera réglé pour la mise en route :

Les macros d'impression ne fonctionnent pas. Beaucoup de problème de zone d'impression et de pied de page.

Je voudrais supprimer ces pieds de page mais même si je les enlève dans la mise en page, elle reviennent systématiquement.

Est ce qu'il ne faudrait pas supprimer toutes les macros d'impression et remettre ce type de macro :

   Sub Macro1()
      Range("A1:D5").Select
      ActiveSheet.PageSetup.PrintArea = "$A$1:$D$5"
      ActiveWindow.SelectedSheets.PrintOut Copies:=1
   End Sub

Merci ... !

Salut Vinophile,

Pour la MFC avec en référence une autre feuille qui n'est pas possible tu viens de donner la réponse :

Il suffit de rappeler la liste des jours féries dans chaque onglet (exemple ici de G53 à G64 qui est égale aux données de l'onglet Accueil de I8 à I19, tu met la police en gris comme cela ça reste invisible pour l'utilisateur) et le code est joué!!!

=SI(ET(OU(D$1="D";D$1="S";OU(D$2=$G$53:$G$64);D33<$A33));VRAI;SI(ET(OU(D$1="L";D$1="M";D$1="J";D$1="V");D33<$B33);VRAI))

Pour le 2ème point, le code demande de prendre la valeur en B8 et définit la couleur de la cellule (ici RGB(255,255,255) c'est blanc) et la couler de la police (RGB (0,0,0) c'est noir).

Soit tu définit pour chaque bouton les couleurs et là lis cette partie du cours VBA :

https://www.excel-pratique.com/fr/vba/couleurs.php

Soit tu définis tes codes boutons selon ce modéles :

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

Pour l'impression, je suis d'accord, il faudrait redéfinir les zones d'impressions si tu es embêter avec ensuite quand je regarde brièvement les codes macros, c'est une bonne usine à gaz pour l'impression alors je ne sais pas ce que va entrainer la modif....

Salut Niko,

Niko a écrit :

Pour la MFC avec en référence une autre feuille qui n'est pas possible tu viens de donner la réponse :

Il suffit de rappeler la liste des jours féries dans chaque onglet (exemple ici de G53 à G64 qui est égale aux données de l'onglet Accueil de I8 à I19, tu met la police en gris comme cela ça reste invisible pour l'utilisateur) et le code est joué!!!

Il suffisait d'y penser !!

Bon malheureusement, après l'avoir testé, le code "$G$53:$G$64" ne fonctionne pas. Peut être parce que la cellule D$2 ne comprend que le chiffre de la date, ce qui n'est pas le cas du format de cellule en Accueil I8 ...

Je teste pour le code des boutons.

Merci encore.

Bonjour à tous,

Bon, je suis sur la fin.

Le planning est quasi finalisé. Il me reste à reféfinir les macros d'impression.

Afin que je reparte sur des bases vierges, est ce que l'un d'entre vous peut me supprimer tout ce qui concerne les macros d'impression ? Je ne comprend pas bien la méthode utilisée et je ne parviens pas à les supprimer sans créer de bugs.

Merci !

Rechercher des sujets similaires à "modifier macro"