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

Optimisation Macro

  • Initiateur de la discussion Initiateur de la discussion Halffy
  • Date de début Date de début

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 !

Halffy

XLDnaute Occasionnel
Bonjour à Tous,

J'ai une macro qui aujourd'hui fonctionne très bien 🙂.
Toutefois, afin de pouvoir l'utiliser mensuellement, je suis obliger de modifier certains paramètres chaque mois. 😱
Je souhaiterai donc savoir si il y a possibilité de remédier à ce léger inconvénient en modifiant la dite-macro ?
Je vous joins le fichier exemple pour constat et explications subsidiaires.
Merci déjà, ne serait-ce d'avoir pris le temps de me lire.
Halffy /.
 

Pièces jointes

Re : Optimisation Macro

Bonjour,
Réfère toi à la dernière colonne lors de l'ajout d'un nouveau mois (on ne sais rien sur la façon dont tu procèdes par ailleurs)
La fusion des cellules est elle vraiment indispensable ?
A+
kjin
 
Re : Optimisation Macro

Bonjour le fil 🙂,
Je pense que tu vas utiliser des "Somme orange" et "Somme violette", sinon, une bête somme en formule fonctionnerait 😛...
En te cliquant sur la somme à obtenir
Code:
Sub Somme_verte()
If Selection.Row <> 44 And Selection.Column <> 10 And Selection.Column <> 23 And Selection.Column <> 36 Then
MsgBox "Sélectionner une case de somme verte", vbCritical
Exit Sub
End If
Dim Somme_verte As Double
For i = 12 To Range("h65536").End(xlUp).Row
    If Cells(i, Selection.Column - 2).Font.ColorIndex = 10 Then
        somme_vert = somme_vert + Cells(i, Selection.Column - 2).Value
    End If
Next i
For j = 12 To Range("k65536").End(xlUp).Row
    If Cells(j, Selection.Column + 1).Font.ColorIndex = 10 Then
        somme_vert = somme_vert + Cells(j, Selection.Column + 1).Value
    End If
Next j
Cells(44, Selection.Column).Value = somme_vert
End Sub
Bon courage 😎
 
Re : Optimisation Macro

Bonjour,

Une solution ... si tu admets de modifier un peu car les cellules fusionnées en VBA ... hum!

A toi de faire les autres mois et de les ajouter dans les codes des trois boutons.

EDIT1 : à la dernière ligne Range(Mois).Offset(32 + Pos, 0).Value = SommeCoul suffit (FormatDateTime(SommeCoul, 4) c'était pour le mettre dans un Label mais j'ai laissé tomber!)

EDIT2 : attention aux erreurs de couleur des valeurs! (pas toujours bien visibles)


Cordialement
 

Pièces jointes

Dernière édition:
Re : Optimisation Macro

Bonsoir Messieurs: Kjin, JNP, mécano41,
Je suis heureux de constater que ma requête a inspiré de nombreuses personnes, et je veux vous en remercier, par avance.
Je viens de regarder rapidement les diverses solutions apportées par chacun de vous et constate qu'il y a des choses très interessantes; malheureusement, la journée a été assez chargé au boulot, et je n'est pas le courage de regarder plus en profondeur chacune d'une 🙁 /
Toutefois dés que j'aurais eu un peu plus de temps pour creuser chaque proposition, je ne manquerai pas de vous tenir au courant des avancées réalisées; mais d'ors et déjà, j'ai remarqué des choses assez interessantes 🙄
Pour ceux qui me connaisse, j'ai toujours donné des nouvelles après chaque réponse, mais ce soir je suis claqué 🙁 .
Donc je regarde tout cela et vous tiens au courant; je vous souhaite un bon week-end, et @ bientôt.
Halffy, fatigué /.
 
Re : Optimisation Macro

Messieurs, Bonjour: Kjin, JNP, mécano41,

Alors maintenant que j'ai eu tout le temps de bien regarder vos différentes solutions,je suis en mesure de vous livrer mes commentaires 😛

JNP: Ta macro marche très bien... Seulement si elle fonctionne pour 3 mois, je suis limité par la condition If (=> 6 ou 7 variables maxi; or dans mon année calendaire... il y a 12 mois 😉).

Mécano41: Approche très intéressante, de part leurs applications, notamment, le changement de couleur des horaires. Toutefois, la disposition originelle de l'ensemble "devra" rester identique car j'ai d'autres macro qui fonctionnent derrière en parallèle.
Par contre la gestion de comptabilisation des horaires/couleurs est à noter; en conséquence, je me suis inspiré de celle-ci pour modifier ma macro.
==> En fait, j'additionne tous les horaires de même couleur... auxquelles je soustrais les mois antérieures.
Résultat des courses: je ne suis plus obligé de changer la macro tous les mois, comme auparavant 😀
==> 1 seule et même macro pour l'année.

Kjin: Toutes mes excuses pour mon manques d'explications; mais Merci d'avoir pris connaissance de ma requête. Au plaisir 😉.

Même si vos différentes solutions ne satisfaisaient pas entièrement ma demande, elles ont eu au moins le mérite de m'éguiller sur la marche à suivre.
Messieurs, Merci de votre implications, merci de votre temps / et Bonne journée à vous.
Halffy /.
 
Re : Optimisation Macro

Re 🙂,
JNP: Ta macro marche très bien... Seulement si elle fonctionne pour 3 mois, je suis limité par la condition If (=> 6 ou 7 variables maxi; or dans mon année calendaire... il y a 12 mois 😉).
Il n'y a pas de limitation à If ou And en VBA 🙄...
Ton tableau présentait 3 mois, donc j'ai mis 3 cas...
Code:
If Selection.Row <> 44 And Selection.Column <> 10 And Selection.Column <> 23 _
    And Selection.Column <> 36 And Selection.Column <> 49 And Selection.Column <> 62 _
    And Selection.Column <> 75 Then
va couvrir 6 mois si tu garde la même présentation, et ainsi de suite, et ça peut même être simplifié en
Code:
If Selection.Row <> 44 And (Selection.Column - 10) Mod 13 <> 0 Then
Bonne journée 😎
 
Re : Optimisation Macro

Re JNP,
Effectivement 😱; en fait je pensais être limité également en VBA, car lorsque j'ai fait un essai ultérieur, cela ne marchait pas /
En fait la macro fonctionne bien dans le fichier type fourni 🙄; seulement dans le fichier réel, l'addition ne se fait pas malgrés sélection "Cellule Somme"... je pense que se sont mes autres macros qui interfèrent (toutefois sans MsgBox d'Alerte)...
donc sans vouloir nullement te contrarier, je vais garder ma solution, car elle fonctionne.
Je te remercie tout de même pour la rectification (j'aurais encore appris quelquechose ce jour 😀); et pour le suivi du post.
Voilà, voilà... au plaisir, Halffy /.
 
Re : Optimisation Macro

Re 🙂,
donc sans vouloir nullement te contrarier, je vais garder ma solution, car elle fonctionne.
Tu ne me contrarie pas 😛...
Mais une bête question, pourquoi ne pas utiliser une fonction personalisée ?
Code:
Function Verte(Plage As Range) As Date
Application.Volatile
Dim Cellule As Range
For Each Cellule In Plage
If Cellule.Font.ColorIndex = 10 Then Verte = Verte + Cellule
Next
End Function
avec en J44
Code:
=verte(H12:M42)
Comme ça, tes calculs se font en direct live 😀...
Bon courage 😎
 
Re : Optimisation Macro

Re JNP,
Mais pourquoi ne pas utiliser une fonction personalisée ?
Tout simplement parce que je suis bien incapable de créer une telle fonction 😱😀
Je commence à me débrouiller en VBA, mais je suis encore tout jeune dans le domaine. Alors j'utilisais la macro que tu peux voir dans mon premier post, parce que je l'avais trouvée & que j'avais réussi à l'adapter à mes besoins 🙄
Toutefois je dois reconnaitre que la Fonction de ton dernier post est 😎 / Après essai d'intégration dans mon fichier initial... c'est absolument génial!
Tu vois, Mieux ?... ==> Bah, encore Mieux 😀
MERCI JNP / C'est quand même plus propre, y a pas à dire 😎 et les calculs en Direct-Live: "c'est de la balle"😀
Bonne soirée JNP, & Merci à ce super Site, car même si on ne pose pas les bonnes questions, il y a toujours quelqu'un pour vous apporter La Solution.
Grand Bravo & Félicitations, Halffy /.
 
Dernière édition:
Re : Optimisation Macro

Re 🙂,
C'est quand même plus propre, y a pas à dire 😎 et les calculs en Direct-Live: "c'est de la balle"😀
Juste un détail : tu as parlé d'interaction avec tes autres macros. Le Application.Volatile permet que les fonctions se recalculent après chaque entrée manuelle. Si tu remplis des cellules avec une macro, la (les) fonction(s) ne se mettront pas à jour après la macro. Pour y remédier, il suffit d'ajouter Calculate à la fin de cette macro (pas de la fonction) 😉.
Finalement, ce n'était pas une "bête" question 😛...
Bon courage 😎
 
Re : Optimisation Macro

Re JNP,
Mon problème d'Intéraction se produisait avec ta macro du Post n°3 en fait /
Mais avec la Fonction Personalisée, aucun souci / Toutefois merci pour la précision; je prends bonne note de "Calculate" (au cas où...🙄, lors d'une éventuelle autre utilisation).

Je ne sais pas si c'était une question "bête", mais elle m'aura permis d'apprendre de nouvelles choses en tous les cas 😉
JNP, Grand Merci pour ton investissement & ton suivi / je Te souhaite une bonne journée / et en plus il y a un beau ciel bleu 😎
Cordialement, Halffy /.
 
- 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
Réponses
3
Affichages
4 K
R
S
Réponses
2
Affichages
1 K
SeishuSlash
S
K
Réponses
4
Affichages
2 K
K
Y
Réponses
3
Affichages
2 K
YoYo26
Y
V
Réponses
7
Affichages
12 K
D
Réponses
1
Affichages
1 K
Dtekte
D
R
Réponses
0
Affichages
925
romain95
R
G
Réponses
4
Affichages
1 K
gan-z
G
E
  • Question Question
Réponses
6
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…