bug bloquant message macro VBA

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

N

NADEJKA

Guest
Bonjour,

Un bug sur ma macro me :angry: depuis ce matin.
Je ne trouve pas de solution.

Voici mon Pb:

J'ai créé un configurateur avec diverses contraintes; si une des contraintes est atteinte alors un message apparaît (TextBox) avec sortie par bouton YES.
Or j'ai un message qui reste bloqué... pour sortir il faut fermer Excel !!!

Avez-vous une idée?

Merci de votre aide.

Pour info voici ma macro

'Consommation***************************************** If ((Target.Row = 12) Or (Target.Row = 13) Or (Target.Row = 14) Or (Target.Row = 15) Or (Target.Row = 18) Or (Target.Row = 19) Or (Target.Row = 20) Or (Target.Row = 21) Or (Target.Row = 22) Or (Target.Row = 22)) And (Target.Column = 4) Or ((Target.Row = 12) Or (Target.Row = 16) Or (Target.Row = 32) Or (Target.Row = 33) Or (Target.Row = 34) And (Target.Column = 9)) Then
If ComboBox2.Text = '1U 220V AC' Or ComboBox2.Text = '1U 48V DC' Then
If ((3.5 + Worksheets('Input').Cells(12, 4).Value * 6.5) + (Worksheets('Input').Cells(13, 4).Value * 6.5) + (Worksheets('Input').Cells(14, 4).Value * 7) + (Worksheets('Input').Cells(15, 4).Value * 7) + (Worksheets('Input').Cells(18, 4).Value * 2) + (Worksheets('Input').Cells(19, 4).Value * 5.75) + (Worksheets('Input').Cells(20, 4).Value * 0) + (Worksheets('Input').Cells(21, 4).Value * 2.8) + (Worksheets('Input').Cells(22, 4).Value * 5.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 6.5) + (Worksheets('Input').Cells(32, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 2.5)) > 40 Or _
((3.5 + Worksheets('Input').Cells(12, 4).Value * 8.5) + (Worksheets('Input').Cells(13, 4).Value * 8.5) + (Worksheets('Input').Cells(14, 4).Value * 10) + (Worksheets('Input').Cells(15, 4).Value * 10) + (Worksheets('Input').Cells(18, 4).Value * 7) + (Worksheets('Input').Cells(19, 4).Value * 4.25) + (Worksheets('Input').Cells(20, 4).Value * 8) + (Worksheets('Input').Cells(21, 4).Value * 3.2) + (Worksheets('Input').Cells(22, 4).Value * 13.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 4.5) + (Worksheets('Input').Cells(32, 9).Value * 4.5) + (Worksheets('Input').Cells(33, 9).Value * 6.5) + (Worksheets('Input').Cells(33, 9).Value * 6)) > 55 Or _
(Worksheets('Input').Cells(6, 14).Value <> '') Then
choix = MsgBox('STOP' & Chr(10) & 'EXCEED AUTHORISED CONSUMPTION!', vbOKOnly + vbCritical)
Worksheets('Input').Cells(12, 4).Value = ''
Worksheets('Input').Cells(13, 4).Value = ''
Worksheets('Input').Cells(14, 4).Value = ''
Worksheets('Input').Cells(18, 4).Value = ''
Worksheets('Input').Cells(19, 4).Value = ''
Worksheets('Input').Cells(20, 4).Value = ''
Worksheets('Input').Cells(21, 4).Value = ''
Worksheets('Input').Cells(12, 9).Value = ''
Worksheets('Input').Cells(16, 9).Value = ''
Worksheets('Input').Cells(32, 9).Value = ''
Worksheets('Input').Cells(33, 9).Value = ''
Worksheets('Input').Cells(34, 9).Value = ''
End If
Else
If ((3.5 + Worksheets('Input').Cells(12, 4).Value * 6.5) + (Worksheets('Input').Cells(13, 4).Value * 6.5) + (Worksheets('Input').Cells(14, 4).Value * 7) + (Worksheets('Input').Cells(15, 4).Value * 7) + (Worksheets('Input').Cells(18, 4).Value * 2) + (Worksheets('Input').Cells(19, 4).Value * 5.75) + (Worksheets('Input').Cells(20, 4).Value * 0) + (Worksheets('Input').Cells(21, 4).Value * 2.8) + (Worksheets('Input').Cells(22, 4).Value * 5.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 6.5) + (Worksheets('Input').Cells(32, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 2.5)) > 90 Or _
((3.5 + Worksheets('Input').Cells(12, 4).Value * 8.5) + (Worksheets('Input').Cells(13, 4).Value * 8.5) + (Worksheets('Input').Cells(14, 4).Value * 10) + (Worksheets('Input').Cells(15, 4).Value * 10) + (Worksheets('Input').Cells(18, 4).Value * 7) + (Worksheets('Input').Cells(19, 4).Value * 4.25) + (Worksheets('Input').Cells(20, 4).Value * 8) + (Worksheets('Input').Cells(21, 4).Value * 3.2) + (Worksheets('Input').Cells(22, 4).Value * 13.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 4.5) + (Worksheets('Input').Cells(32, 9).Value * 4.5) + (Worksheets('Input').Cells(33, 9).Value * 6.5) + (Worksheets('Input').Cells(33, 9).Value * 6)) > 115 Or _
(Worksheets('Input').Cells(6, 14).Value <> '') Then
choix = MsgBox('STOP' & Chr(10) & 'EXCEED AUTHORISED CONSUMPTION!', vbOKOnly + vbCritical)
Worksheets('Input').Cells(12, 4).Value = ''
Worksheets('Input').Cells(13, 4).Value = ''
Worksheets('Input').Cells(14, 4).Value = ''
Worksheets('Input').Cells(18, 4).Value = ''
Worksheets('Input').Cells(19, 4).Value = ''
Worksheets('Input').Cells(20, 4).Value = ''
Worksheets('Input').Cells(21, 4).Value = ''
Worksheets('Input').Cells(12, 9).Value = ''
Worksheets('Input').Cells(16, 9).Value = ''
Worksheets('Input').Cells(32, 9).Value = ''
Worksheets('Input').Cells(33, 9).Value = ''
Worksheets('Input').Cells(34, 9).Value = ''
End If
End If
End If

'Slot frame*************************************************
If (Target.Row = 6) And (Target.Column = 7) Then
If ComboBox1.Text = '2.5' Then
If ComboBox2.Text <> '' Then
If Worksheets('Input').Cells(6, 7).Value <> '' Then
choix = MsgBox('STOP' & Chr(10) & 'Too many slot for the Frame!', vbOKOnly + vbCritical)
Worksheets('Input').Cells(12, 4).Value = ''
Worksheets('Input').Cells(13, 4).Value = ''
Worksheets('Input').Cells(14, 4).Value = ''
Worksheets('Input').Cells(18, 4).Value = ''
Worksheets('Input').Cells(19, 4).Value = ''
Worksheets('Input').Cells(20, 4).Value = ''
Worksheets('Input').Cells(21, 4).Value = ''
Worksheets('Input').Cells(12, 9).Value = ''
Worksheets('Input').Cells(16, 9).Value = ''
Worksheets('Input').Cells(32, 9).Value = ''
Worksheets('Input').Cells(33, 9).Value = ''
Worksheets('Input').Cells(34, 9).Value = ''
End If
End If
Else '2.6
If ComboBox2.Text <> '' Then
If Worksheets('Input').Cells(6, 7).Value <> '' Then
choix = MsgBox('STOP' & Chr(10) & 'Too many slot for the Frame!', vbOKOnly + vbCritical)
Worksheets('Input').Cells(12, 4).Value = ''
Worksheets('Input').Cells(13, 4).Value = ''
Worksheets('Input').Cells(14, 4).Value = ''
Worksheets('Input').Cells(15, 4).Value = ''
Worksheets('Input').Cells(18, 4).Value = ''
Worksheets('Input').Cells(19, 4).Value = ''
Worksheets('Input').Cells(20, 4).Value = ''
Worksheets('Input').Cells(21, 4).Value = ''
Worksheets('Input').Cells(22, 4).Value = ''
Worksheets('Input').Cells(12, 9).Value = ''
Worksheets('Input').Cells(16, 9).Value = ''
Worksheets('Input').Cells(32, 9).Value = ''
Worksheets('Input').Cells(33, 9).Value = ''
Worksheets('Input').Cells(34, 9).Value = ''
End If
End If
End If
End If
 
bonjour

target.row ds quelle colonne d ou i

faire un test comme suit

For Each Cel In Range('D4😀34')
If Cel.Row = 4 Or Cel.Row = 12 Then

End If

next CEl

plus simple serait peut-être de mettre les additions sur la feuille et de tester sur
les additions


au revoir
 
Hello,

Houlalalala tres tres lourd ce code !!

On pourrait pas avoir un exemlpe en PJ Stp par ce que là c'est difficile de suivre le fil de la macro !!

deja une remarque d'ordre général, remplace ca :

Worksheets('Input').Cells(12, 4).Value = ''
Worksheets('Input').Cells(13, 4).Value = ''
Worksheets('Input').Cells(14, 4).Value = ''
Worksheets('Input').Cells(15, 4).Value = ''
Worksheets('Input').Cells(18, 4).Value = ''
etc ....

Par :

Code:
with Worksheets('Input')
.Cells(12, 4).Value = '' 
.Cells(13, 4).Value = '' 
etc..
end with
Ce sera deja plus propre.

Ensuite pour ton message d'erreur il faudrait tracer la macro pas à pas parce que là !! C'est la folie

😱

++

Creepy

Message édité par: Creepy, à: 28/06/2005 13:35
 
RE all,

Tiens j'ai même fait ca :

Code:
Private Sub CommandButton1_Click()
If ((Target.Row = 12) Or (Target.Row = 13) Or (Target.Row = 14) Or (Target.Row = 15) Or (Target.Row = 18) Or (Target.Row = 19) Or (Target.Row = 20) Or (Target.Row = 21) Or (Target.Row = 22) Or (Target.Row = 22)) And (Target.Column = 4) Or ((Target.Row = 12) Or (Target.Row = 16) Or (Target.Row = 32) Or (Target.Row = 33) Or (Target.Row = 34) And (Target.Column = 9)) Then

If ComboBox2.Text = '1U 220V AC' Or ComboBox2.Text = '1U 48V DC' Then

If ((3.5 + Worksheets('Input').Cells(12, 4).Value * 6.5) + (Worksheets('Input').Cells(13, 4).Value * 6.5) + (Worksheets('Input').Cells(14, 4).Value * 7) + (Worksheets('Input').Cells(15, 4).Value * 7) + (Worksheets('Input').Cells(18, 4).Value * 2) + (Worksheets('Input').Cells(19, 4).Value * 5.75) + (Worksheets('Input').Cells(20, 4).Value * 0) + (Worksheets('Input').Cells(21, 4).Value * 2.8) + (Worksheets('Input').Cells(22, 4).Value * 5.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 6.5) + (Worksheets('Input').Cells(32, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 2.5)) > 40 Or _
((3.5 + Worksheets('Input').Cells(12, 4).Value * 8.5) + (Worksheets('Input').Cells(13, 4).Value * 8.5) + (Worksheets('Input').Cells(14, 4).Value * 10) + (Worksheets('Input').Cells(15, 4).Value * 10) + (Worksheets('Input').Cells(18, 4).Value * 7) + (Worksheets('Input').Cells(19, 4).Value * 4.25) + (Worksheets('Input').Cells(20, 4).Value * 8) + (Worksheets('Input').Cells(21, 4).Value * 3.2) + (Worksheets('Input').Cells(22, 4).Value * 13.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 4.5) + (Worksheets('Input').Cells(32, 9).Value * 4.5) + (Worksheets('Input').Cells(33, 9).Value * 6.5) + (Worksheets('Input').Cells(33, 9).Value * 6)) > 55 Or _
(Worksheets('Input').Cells(6, 14).Value <> '') Then


choix = MsgBox('STOP' & Chr(10) & 'EXCEED AUTHORISED CONSUMPTION!', vbOKOnly + vbCritical)
   CleanCell
End If
Else
If ((3.5 + Worksheets('Input').Cells(12, 4).Value * 6.5) + (Worksheets('Input').Cells(13, 4).Value * 6.5) + (Worksheets('Input').Cells(14, 4).Value * 7) + (Worksheets('Input').Cells(15, 4).Value * 7) + (Worksheets('Input').Cells(18, 4).Value * 2) + (Worksheets('Input').Cells(19, 4).Value * 5.75) + (Worksheets('Input').Cells(20, 4).Value * 0) + (Worksheets('Input').Cells(21, 4).Value * 2.8) + (Worksheets('Input').Cells(22, 4).Value * 5.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 6.5) + (Worksheets('Input').Cells(32, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 4.3) + (Worksheets('Input').Cells(33, 9).Value * 2.5)) > 90 Or _
((3.5 + Worksheets('Input').Cells(12, 4).Value * 8.5) + (Worksheets('Input').Cells(13, 4).Value * 8.5) + (Worksheets('Input').Cells(14, 4).Value * 10) + (Worksheets('Input').Cells(15, 4).Value * 10) + (Worksheets('Input').Cells(18, 4).Value * 7) + (Worksheets('Input').Cells(19, 4).Value * 4.25) + (Worksheets('Input').Cells(20, 4).Value * 8) + (Worksheets('Input').Cells(21, 4).Value * 3.2) + (Worksheets('Input').Cells(22, 4).Value * 13.5) + (Worksheets('Input').Cells(12, 9).Value * 5) + (Worksheets('Input').Cells(16, 9).Value * 4.5) + (Worksheets('Input').Cells(32, 9).Value * 4.5) + (Worksheets('Input').Cells(33, 9).Value * 6.5) + (Worksheets('Input').Cells(33, 9).Value * 6)) > 115 Or _
(Worksheets('Input').Cells(6, 14).Value <> '') Then
choix = MsgBox('STOP' & Chr(10) & 'EXCEED AUTHORISED CONSUMPTION!', vbOKOnly + vbCritical)
CleanCell
End If
End If
End If

'Slot frame*************************************************
If (Target.Row = 6) And (Target.Column = 7) Then
If ComboBox1.Text = '2.5' Then
If ComboBox2.Text <> '' Then
If Worksheets('Input').Cells(6, 7).Value <> '' Then
choix = MsgBox('STOP' & Chr(10) & 'Too many slot for the Frame!', vbOKOnly + vbCritical)
CleanCell
End If
End If
Else '2.6
If ComboBox2.Text <> '' Then
If Worksheets('Input').Cells(6, 7).Value <> '' Then
choix = MsgBox('STOP' & Chr(10) & 'Too many slot for the Frame!', vbOKOnly + vbCritical)
CleanCell
Worksheets('Input').Cells(15, 4).Value = ''
Worksheets('Input').Cells(22, 4).Value = ''
End If
End If
End If
End If
 
End Sub
Sub CleanCell()
With Worksheets('Input')
   .Cells(12, 4).Value = ''
   .Cells(13, 4).Value = ''
   .Cells(14, 4).Value = ''
   .Cells(18, 4).Value = ''
   .Cells(19, 4).Value = ''
   .Cells(20, 4).Value = ''
   .Cells(21, 4).Value = ''
   .Cells(12, 9).Value = ''
   .Cells(16, 9).Value = ''
   .Cells(32, 9).Value = ''
   .Cells(33, 9).Value = ''
   .Cells(34, 9).Value = ''
End With
End Sub

Beaucoup plus propre.

Ensuite remplace tes & Chr(10) & par des & Vbcrlf & car les CHR(10) peuvent planter sur certain micro et crois moi je sais de quoi je parle j'y fais la gaffe plus d'une fois avant de bien comprendre lol

++ dans l'attente de ton fichier

Creepy
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
236
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Réponses
3
Affichages
508
Réponses
9
Affichages
893
Réponses
0
Affichages
459
Réponses
1
Affichages
520
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
4
Affichages
243
Réponses
4
Affichages
425
Retour