Macro erreur 13

nicopof

XLDnaute Nouveau
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)

   [COLOR="#006400"] With Rows(Target.Row)[/COLOR]
   [COLOR="#FF0000"]     If Round(.Cells(23) + .Cells(27) + .Cells(31) + .Cells(35) - .Cells(20), 6) Then Exit Sub[/COLOR]
  [COLOR="#006400"]  End With[/COLOR]

Dim TablCode

Dim Email_Subject, Email_Send_From, Email_Send_To, _
   Email_Cc, Email_Bcc, Email_Body As String

Dim Mail_Object, Mail_Single As Variant

TablCode = Array(31, 34, 36, 18, 99)
TablTargetColumns = Array(21, 25, 29, 33)
TablNoemptyColumns = Array(24, 28, 32, 36)

notEmpty = False

For I = LBound(TablNoemptyColumns) To UBound(TablNoemptyColumns)

  If Not IsEmpty(Target.Parent.Cells(Target.Row, TablNoemptyColumns(I)).Value) And _
     Target.Parent.Cells(Target.Row, TablNoemptyColumns(I) - 2).Value <> "99A" Then


    OneOfValues = False

    For Each c In TablCode

      If c = Target.Parent.Cells(Target.Row, TablTargetColumns(I)).Value Then

        OneOfValues = True

        Exit For

      End If

    Next c

    If OneOfValues Then

      notEmpty = True

      Exit For

    End If
 End If
  

Next


If notEmpty Then

                    
                    'Macro email.............



bonjour
j'ai rajouté les lignes vert et rouge mais a chaque fois que j'écris quelque entre les colonnes 1 à 18 sa me met un message d'erreur 13?
Après la colonne 19 ma macro fonctionne bien puis qu'elle concerne cette parti la mais pas intérressant si je ne peu pas me servir des 19 première colonnes

Une idée dessus?
 

Papou-net

XLDnaute Barbatruc
Re : Macro erreur 13

Bonsoir nicopof,

Au premier abord, sans fichier ni explications détaillées, difficile de t'aider sur ce problème.

Néanmoins, dès qu'une macro événementielle (_Change) agit plusieurs fois sur un même objet, il est indispensable d'éviter qu'elle se répète à chaque changement, et même parfois indéfiniment.

Il convient donc d'écrire en début de procédure la ligne de désactivation d'événement suivante:

Code:
Application.EnableEvents = False

Et ne pas oublier de la rétablir à True en fin de code.

Espérant avoir été utile.

Cordialement.
 

nicopof

XLDnaute Nouveau
Re : Macro erreur 13

oui désolé je viens de joindre le fichier,
je savais pas pour le Application.EnableEvents = False du coup je ne sais pas trop exactement ou les placés dans la macro
 

Pièces jointes

  • TEST_OK.xlsm
    82.7 KB · Affichages: 21
  • TEST_OK.xlsm
    82.7 KB · Affichages: 21

Papou-net

XLDnaute Barbatruc
Re : Macro erreur 13

RE:

A la lecture de ton code, je pense que le problème vient de la première boucle:

Code:
With Rows(Target.Row)
    If Round(.Cells(23) + .Cells(27) + .Cells(31) + .Cells(35) - .Cells(20), 6) Then Exit Sub
End With
En effet, l'instruction ".Cells()" exige deux nombres en paramètres. Le premier désignant la ligne de la cellule, le second la colonne.

De plus, ta ligne de condition est incomplète. Il manque une condition avant le Then:

If Round(.Cells(23) + .Cells(27) + .Cells(31) + .Cells(35) - .Cells(20), 6) = ??? Then Exit Sub

Tu me suis?

Je t'ai inséré les deux lignes EnableEvents comme il se doit.

A +

Cordialement.
 

Pièces jointes

  • Copie de TEST_OK.xlsm
    83.4 KB · Affichages: 16
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Macro erreur 13

RE:

Voilà le genre de précision qui me manquait.

Essaie en modifiant comme suit:

Code:
With Rows(Target.Row)
    If Round(.Cells(23, Target.Row) + .Cells(27, Target.Row) + .Cells(31, Target.Row) + .Cells(35, Target.Row) - .Cells(20, Target.Row), 6) Then Exit Sub
End With
Ca ne devrait plus "planter" mais je ne suis pas certain que ce soit la solution définitive. Auquel cas, il serait bon que tu décrives en détail les fonctionnalités de ton programme.

A +

Cordialement.
 

nicopof

XLDnaute Nouveau
Re : Macro erreur 13

Alors plus de bug mais la macro fonction mal maintenant:

Alors le but, il y a des case code, si dans une de ces cases il y a le chiffre 18 ou 31 ou 34 ou 36 ou 99 un mail part.
Condition avant que le mail part:
- colonne U ou Y ou AC ou 33 ou AG = 31 ou 18 ou 34 ou 99 ou 36
- la case explication qui ce situe 3 case après doit etre remplit
- (ce que j’essaie d'intégré); somme des temps : colonne(W + AA +AE + AI ) = T

je veux rajouter cette dernière car je recevais 7 mail pour une même ligne.
exemple avant la nouvelle condition:
colonne 21 je met un code 31 et colonne 24 je met la case explication = mail envoyé donc nickel
mais, si l'agent continue d'écrire sur la même ligne colonne 25= (chiffre quelconque) = une mail, colonne 26 = mail ; colonne 27= un mail........ bref je recevais trop de mail

Comment être sur que l'agent a terminer d'écrire!! quand la somme des colonne 23+31+35+27 = colonne 20


bien que j'ai mit les condition, le mail est parti dès que j'ai mit 18 dans la colonne 21.

Sa parait peu etre u peu compliquer, sur sur d'expliquer =)

cordialement
 

Pièces jointes

  • Copie de TEST_OK (1).xlsm
    83.4 KB · Affichages: 24
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Macro erreur 13

RE:

Bien que persuadé de n'avoir pas encore tout compris dans le déroulement de ton application, je te propose de modifier la condition première comme suit:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg, Plg

Lg = Target.Row
Set Plg = Application.Union(Range("W" & Lg), Range("AA" & Lg), Range("AE" & Lg), Range("AI" & Lg))
If Application.Sum(Plg.Value) <> Range("T" & Lg) Then Exit Sub

Application.EnableEvents = False
...
...
End Sub
Si la somme de Plg est différente de la colonne T ---> fin de la macro.

J'en resterai là pour ce soir.

A +

Cordialement.

PS:Salut JM. Effectivement le code peu "orthodoxe" de nicopof fonctionne. Grâce au test de ton exemple j'en ai compris la logique.
 

Pièces jointes

  • Copie 01 de TEST_OK.xlsm
    83.8 KB · Affichages: 23

nicopof

XLDnaute Nouveau
Re : Macro erreur 13

=) Je suis revenu à un problème précèdent.
La colonne T se met automatiquement avec la formule suivant; =SI(S10>R10;(S10-R10);SI(S10<R10;"";SI(S10=R10;"")))
bref en R heure de base/ en S heure réél / et T calcule le retard.
Le mail part a condition que je rentre moi-meme le resultat de la colonne T

Merci pour ton aide
cordialement
Nico
 

nicopof

XLDnaute Nouveau
Re : Macro erreur 13

Bonjour a tous,

Alors j'ai dans une premier temps j'ai voulu rajouter une condition que JCGL m'a donné
If Round(.Cells(23) + .Cells(27) + .Cells(31) + .Cells(35) - .Cells(20), 6) Then Exit Sub

A la suite de cela je me suis aperçu que entre les colonnes A à S chaque fois que je marquais quelque chose dans une case une erreur code 13 apparaissait.

papou-net m'a aider avec ce code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg, Plg

Lg = Target.Row
Set Plg = Application.Union(Range("W" & Lg), Range("AA" & Lg), Range("AE" & Lg), Range("AI" & Lg))
If Application.Sum(Plg.Value) <> Range("T" & Lg) Then Exit Sub

Application.EnableEvents = False
...
...
End Sub

Ce qui a enlever les bug eurreur 13,mais le problème initiale est revenu sachat qu'il faut que je marque moi-même le temps dans la colonne T pout que sa fonctionne, la macro ne fonctionne pas quand le résultat est automatique.

Cordialement

J'ai donc essayer de trouver sur une autre page comment regler ce problème
 

Statistiques des forums

Discussions
312 484
Messages
2 088 801
Membres
103 971
dernier inscrit
abdazee