Modifier une macro trop longue

  • Initiateur de la discussion Initiateur de la discussion SSIAP2
  • 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 !

SSIAP2

XLDnaute Occasionnel
Bonjour à tous

j'utilise ces macros qui agie lors du changement de valeur dans la textbox


Code:
Private Sub M10_Change()
Calcul_Pieces_DebVac
End Sub

Private Sub M11_Change()
Calcul_Pieces_DebVac
End Sub


Private Sub M12_Change()
Calcul_Pieces_DebVac
End Sub


Private Sub M13_Change()
Calcul_Pieces_DebVac
End Sub
..... ect

j'aimerais vue que les macro sont les et repetitif faire une macro plus courte du style

si controls.M1 à Controle M12 change executer la macro c'est une macro de calcule simple.

voila j'espere avoir été clair merci d'avance de votre aide.
 
Re : Modifier une macro trop longue

re coucou j'ai parcourue le forum sa ma l'air tres complexe et j'ai pas trouver d'exemple je sais c'est mal placer de demander un exemple comme sa sans fournir plus d'info mais si quelqu un à un petit exemple sous la main se serais sympa merci
 
Re : Modifier une macro trop longue

re bonjour a tous

mikeo ta solution genial j'ai meme réusie à le comprendre un peu et meme l'adapter à mon projet.

en revanche j'ai voulus pousser la complexiter un peu plus loin et j'ai un depassement de capacité.

ma macro est celle ci

Code:
Public WithEvents Piece As MSForms.TextBox, i As Byte, X As Variant



                                   'on ajoute une seule instruction Change() qui agit pour tous les textbox
                                   'par exemple
Private Sub Piece_change()
Dim a As Long
Dim b As Long
Dim c As Long
 For a = 1 To 30
  For b = 1 To 30
   For c = 1 To 30
If USF1.Controls("Q" & a) = True Then
USF1.Controls("Q" & a).Value = USF1.Controls("L" & b).Caption * USF1.Controls("Q" & a).Value
Else
USF1.Controls("M" & c) = "0"
End If
Next c
Next b
Next a
End Sub

selon vous ou ai je fauter pour avoir cette erreur merci d'avance
 
Re : Modifier une macro trop longue

re a tous petite precision à l'aorigine

la macro etait celle ci

Code:
Private Sub Q1_Change()
If USF1.Q1.Value = True Then
USF1.M18.Value = USF1.L1.Caption * USF1.Q1.Value
Else
USF1.M1 = "0"
End If
End Sub

le soucis j'ai 30 macro comme celle ci je me suis dit ont va essayer un module de classe

mais sa na pas fonctionner comme je voulais avec erreur depassement de capacite
 
Re : Modifier une macro trop longue

bonjour SSIAP2,mikeo,cpeens 🙂🙂🙂
sans fichier exemple trés difficile de t'aider
je pense que Controls("Q" & a il y a en 30 de 1 a 30 comme les autres controles
une piste ecrit rapidement sans pouvoir rien tester
eventuellent si pas de reponse regarderais demain en fin de matinée avec un fichier exemple sans données confide... plus le temps de rester

Code:
Public WithEvents Piece As MSForms.TextBox, a As Byte
Private Sub Piece_Change()
On Error Resume Next
With USF1
 For a = 1 To 30
 If .Controls("Q" & a) = True Then _
.Controls("Q" & a) = CDbl(.Controls("L" & a)) * CDbl(.Controls("Q" & a)) Else .Controls("M" & a) = "0"
Next a
End With
End Sub
 
Dernière édition:
Re : Modifier une macro trop longue

Bonjour laetitia90 et merci pour ton aide j'ai fais une micro modification sur ta macro et tous fonctionne à merveille un grand grand merci à trés bientot. bon Week end


Code:
On Error Resume Next
With USF1
 For a = 1 To 30
 If .Controls("Q" & a) = True Then _
.Controls("[COLOR="red"]M[/COLOR]" & a) = CDbl(.Controls("L" & a)) * CDbl(.Controls("Q" & a)) Else .Controls("M" & a) = "0"
Next a
End With
 
- 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
2
Affichages
1 K
R
  • Question Question
Réponses
9
Affichages
971
Réponses
2
Affichages
1 K
Retour