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 !

lamneyth

XLDnaute Nouveau
Bonjour,

quelqu'un pourrait il me dire comment alléger un peu mon programme car les macros que j'ai écrit sont un peu longue et j'ai peur pour la suite pour le risque d'erreur et tout te tout.....

j'écoute tout vos conseils, merci de votre aide🙂
 

Pièces jointes

Re : Planning

Slt Lamneyth,

Code:
Private Sub LUNDI_SOIR_Click()

' lundi soir premier poste
If [B][COLOR="Blue"]...[/COLOR][/B]
End If

' Lundi soir Deuxieme poste

If [B][COLOR="Blue"]...[/COLOR][/B]
End If

' lundi soir troisieme poste

If [B][COLOR="Blue"]...[/COLOR][/B]
End If

Je ne comprend pas pourquoi tu as EXACTEMENT la même chose à ...!
Les cellules, ou le nom de la feuille, ou devrais au moins être différent non?

Code:
Private Sub Validation_lundi_midi_Click()
Là par contre, les cellules sont différentes, cela semble logique!

A bientôt pour les autres remarques
 
Re : Planning

oups, j'ai voulu aller vite et j'ai oublié de changer les adresses sur la patie du lundi soir
c'est vrai que j'aurai du préciser que je n'ai traité dans cette partie que le lundi midi pour une question de poids de fichier.

j'avais mis un message de secours hier mais comme mon fichier etait trop gros, j'ai du le simplifier car les macro par demi journée dépasse les 120 lignes ....

alors si vous avez une solution car sur 120 ligne il y fort risque d'erreur.

je continue mes recherches pour piocher des idées par ci par là

merci pour ce forum et votre aide
 
Re : Planning

Re-lu

Macro initiale :
Code:
Private Sub Validation_lundi_midi_Click()
'***************
' lundi midi premier poste
'***************
If Worksheets("S1").Range("D5").Text = "accueil" Then
Worksheets("S1").Range("D5").Interior.ColorIndex = 15
Worksheets("S1").Range("E4").Interior.ColorIndex = 15
Worksheets("S1").Range("D4").Interior.ColorIndex = 15
End If
'***************
'***************
' Lundi Midi Deuxieme poste
'***************
If Worksheets("S1").Range("D7").Text = "accueil" Then
Worksheets("S1").Range("D7").Interior.ColorIndex = 15
Worksheets("S1").Range("E6").Interior.ColorIndex = 15
Worksheets("S1").Range("D7").Interior.ColorIndex = 15
[COLOR="Blue"]'tu es sûr qu'il s'agit bien de D7 et non pas D6 ?[/COLOR]
End If
'***************
' lundi midi troisieme poste
'***************
If Worksheets("S1").Range("D9").Text = "accueil" Then
Worksheets("S1").Range("D9").Interior.ColorIndex = 15
Worksheets("S1").Range("E8").Interior.ColorIndex = 15
Worksheets("S1").Range("D8").Interior.ColorIndex = 15
End If
'***************
End Sub

Si ma remarque ci-dessus est juste, tu peux remplacer la macro ci-dessus par :

Code:
Private Sub Validation_lundi_midi_Click()

Dim Ligne As Long

For Ligne = 5 To 9 Step 2
If Worksheets("S1").Range("D" & Ligne).Text = "accueil" Then
Worksheets("S1").Range("D" & Ligne).Interior.ColorIndex = 15
Worksheets("S1").Range("E" & Ligne - 1).Interior.ColorIndex = 15
Worksheets("S1").Range("D" & Ligne - 1).Interior.ColorIndex = 15
End If
Next Ligne

End Sub

Soit 3 fois moins de lignes 😉
L'astuce, c'est de trouver la partie "répétitive" et la remplacer par une boucle.

Dans l'attente de tes remarques.
 
Dernière édition:
Re : Planning

Bonjour

Un début

avant de répondre à ta question , je vous remercie de vous être penché sur mon planning 😀

je dois gérer 28 personnes et une douzaine de taches différentes, c'est pour ca que j'avais du scinder mon prog VB en plusieurs partie car au lancement, il me mettait un message en me disant un truc du genre "TROP DE LIGNES".

encore merci 🙄
 
Re : Planning

Bonjour le fil, le forum,

Si la méthode de Banzai64 correspond à tes attentes, tu peux lui faire subir la même cure d'amaigrissement.

Tu peux utiliser la même boucle :
Code:
[COLOR="Blue"]For[/COLOR] Ligne = [COLOR="Red"][B]x[/B][/COLOR] [COLOR="Blue"]to[/COLOR] [COLOR="Red"][B]y[/B][/COLOR] [COLOR="Blue"]step[/COLOR] [COLOR="Red"][B]z[/B][/COLOR]

partie à répéter

[COLOR="Blue"]Next[/COLOR] Ligne

Mémo :
x étant le numéro de ta première ligne à traiter
y étant le numéro de ta dernière ligne à traiter
z étant le "pas"

La boucle "For ... Next" :
La variable Ligne prend la valeur x, la macro s'éxécute, arrivé au mot "next" la macro revient à For et rajoute par défaut 1 à la valeur x. Si la valeur y n'est pas atteinte, il répète la macro.

Dans le cas présent, ayant rajouté "step z", au lieu de rajouter 1 à la variable Ligne, il rajouter z.

Espérant avoir été clair.
 
Merci

Bonjour le fil, le forum,

Si la méthode de Banzai64 correspond à tes attentes, tu peux lui faire subir la même cure d'amaigrissement.

Tu peux utiliser la même boucle :
Code:
[COLOR="Blue"]For[/COLOR] Ligne = [COLOR="Red"][B]x[/B][/COLOR] [COLOR="Blue"]to[/COLOR] [COLOR="Red"][B]y[/B][/COLOR] [COLOR="Blue"]step[/COLOR] [COLOR="Red"][B]z[/B][/COLOR]

partie à répéter

[COLOR="Blue"]Next[/COLOR] Ligne

Mémo :
x étant le numéro de ta première ligne à traiter
y étant le numéro de ta dernière ligne à traiter
z étant le "pas"

La boucle "For ... Next" :
La variable Ligne prend la valeur x, la macro s'éxécute, arrivé au mot "next" la macro revient à For et rajoute par défaut 1 à la valeur x. Si la valeur y n'est pas atteinte, il répète la macro.

Dans le cas présent, ayant rajouté "step z", au lieu de rajouter 1 à la variable Ligne, il rajouter z.

Espérant avoir été clair.

Merci de otre aide , en espérant pouvoir a mon tour apporter ma maigre contribution au forum.🙂

Y a t il une possibilité pour vérifier si un mot (par exemple) accueil est ecrit dans différentes cases et dans différentes colonnes,😕 car je dois étendre mon tableau d'origine sur plusieurs jours ....

Encore une fois merci beaucoup de votre aide 😛

Bon week end a tous 🙂
 
Re : Merci

lamneyth à dit:
Y a t il une possibilité pour vérifier si un mot (par exemple) accueil est ecrit dans différentes cases et dans différentes colonnes

Lors de mes lectures sur le forum, j'ai pu constater que certains sont calés dans ce domaine. Je préfère les laisser répondre.

Mais dans ton cas présent, puisque tu as utilisé une "liste de choix", si elles sont toutes bien faite, tu ne devrais avoir qu'une police, donc aucun soucis non?
 
Re : Planning

Bonjour

avec cette macro on traite que l'évenement sur la page en cours donc elle est très rapide et simple
Elle peut devenir compliquée en fonction des pages différentes de la page S1 car il faudra tester si on est dans une page à modifier

C'est à toi de voir parce que d'ici je vois mal, je ne connais pas la structure de ton classeur
Mais à mon avis cela devarit aller
 
trop cool

Bonjour

avec cette macro on traite que l'évenement sur la page en cours donc elle est très rapide et simple
Elle peut devenir compliquée en fonction des pages différentes de la page S1 car il faudra tester si on est dans une page à modifier

C'est à toi de voir parce que d'ici je vois mal, je ne connais pas la structure de ton classeur
Mais à mon avis cela devarit aller

je remercie tout le monde de l'aide apportée, j'ai mis en place les différents conseils sur un classeur de test et tout baigne, il ne me retse plus qu'a intégrer cela dans mon application et soigner un peu la mise en page

merci à tout

bonne soirée
 
- 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

Discussions similaires

Réponses
4
Affichages
218
  • Question Question
Microsoft 365 sos planning
Réponses
6
Affichages
1 K
Retour