Incompatibilité de type

Bonjour,

J'ai fait une macro qui envoie un mail lorsque le stock d'un produit est trop bas, cette dernière marche correctement seulement lorsque j'ajoute une ligne ou que j'en supprime une il y a l'erreur 13 "Incompatibilité de type" qui apparait.

Ayant un bouton pour créer des lignes (de nouveaux produits) ce dernier ne marche plus à cause de l'erreur de ma macro.

Voici mon code :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C200")) Is Nothing And Target.Value < Cells(Target.Row, "D") And IsEmpty(Cells(Target.Row, "F")) Then
    'Changer la range C selon le nombre de lignes du tableau
        Call SendEmail
    End If
End Sub

Sub SendEmail()
    Dim rng As Range
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Dim StrBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    For Each rng In Range("H2:H200") 'À changer selon le nombre de lignes
        If (rng.Value = False) And IsEmpty(Cells(rng.Row, "F")) And rng <> "" Then
            Set xOutMail = xOutApp.CreateItem(0)
            xMailBody = xMailBody & "- " & Cells(rng.Row, "B").Value & "<br/>"
        End If
     Next rng

    On Error Resume Next
    With xOutMail
        .To = "test@gmail.com"
        .CC = ""
        .BCC = ""
        .subject = "Stock seuil critique"
        .HTMLbody = "Il faut recommander : <br/><br/>" & xMailBody
        .Send  'Utiliser .Display pour montrer l'email avant envoi ou .Send pour envoyer directement
    End With
    On Error GoTo 0

    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

L'erreur se produit à la ligne :

If Not Intersect(Target, Range("C2:C200")) Is Nothing And Target.Value < Cells(Target.Row, "D") And IsEmpty(Cells(Target.Row, "F")) Then

Sachant que le bouton permet simplement d'ajouter une ligne avec le nom du produit en colonne B et aucune autre valeur.

Bonjour Seiju,

Là tu ne présentes qu'une macro qui opère sur la Rangée "C2:C200". Tu ne présentes pas l'autre macro et ou elle intervient dans le tableau. Intervenir sur la rangée en question par l'ajout de ligne ou la suppression influence ta macro postée.

Je suppose que tu as des nombres en colonne D et F. Un exemple même minime et anonyme de ton fichier peut permettre de voir plus clairement.

Bonjour X Cellus,

Oui je n'ai pas montré les autres macro parce que comme l'erreur intervient même si je supprime ou ajoute manuellement une ligne je me disais qu'en réglant le problème lorsque je le fais à la main ça règlerait le problème aussi avec le bouton qui ajoute ou supprime un produit.

Ci-joint mon fichier Excel avec les macros.

Re-bonjour Seiju,

Voilà tu peux ajouter des lignes dans ton fichier maintenant sans souci..

Une fois que tu auras renseigné en colonne B la désignation du produit les autres colonnes pourront l'être et cela fonctionnera convenablement pour alerter.

Bons tests et bonne continuation.

Rebonjour,

Je viens de tester et... J'ai toujours le même problème ?

En testant manuellement de supprimer une ligne j'ai toujours le problème d'incompatibilité et pareil avec le bouton "Ajouter un item"

Re-bonjour,

J'ai fait un test en ajoutant une ligne manuellement. Mais comme tu passes par des UserForm.

J'ai modifié puis testé le fichier en conséquence.

Donc là c'est corrigé.

Merci en effet ça fonctionne maintenant.

Cependant, peux-tu m'expliquer cette ligne que tu as ajouté ?

If [N6] = 1 Then Exit Sub

C'est un booléen que tu as rajouté dans les UserForms en fait ?

Elle représente une condition. Quand tu passes par l'UserForm la cellule N6 vaut 1.

Ce qui bloque la macro événementielle. Puis quand tu sors de l'UserForm N6 vaut 0.

Ce qui rétablit la macro Worksheet_Change. Un peu comme un passage à niveau, si le train circule les voitures ne passent pas. Et à contrario. Ainsi pas de souci.

Pardon de revenir dessus mais du coup si j'utilise le bouton "Commande machine" (le seul dont on n'a pas modifié le code) cela va faire bugger ma macro non ?

Edit : Je viens de tester et ça lance deux fois ma macro.

La commande Machine fait partie du UserForm1. Elle n'a don aucun lien avec les 2 autres UserForm.

Ensuite elle n'est pas faîte pour ajouter ou ôter des lignes dans le tableau. Donc quand elle est utilisée la case N6 = 0. Puisque les autres UserForm (formulaires) sont fermés.

Il n'y a aucun changement car ce formulaire (bouton machine) n'a pas accès à la cellule N6. Son rôle est de retirer des quantités.

Tu peux essayer en mettant en commentaire la 1 ière ligne If [N6] = 1 Then Exit Sub puis en la laissant en ligne de code. Lorsque tu passes par commande Machine. Avec ou sans cette ligne dans Worksheet_Change cela n'a aucune incidence pour ce formulaire 1.

Donc je ne vois pas quelle macro se lancerait 2 fois?

En fait le bouton de Commande Machine influe sur les stocks également et lorsque l'on appuie sur Valider (une fois dans la macro) cela m'avait lancé la macro d'envoi de mail deux fois (deux fenêtres s'étaient ouvertes avec le contenu à commander). Peut-être parce que ça avait influer sur deux cases de la colonne C en même temps ?

Après réflexion je ne pense pas bloquer la macro d'envoi de mail lorsque l'on utilise le bouton de commande machine mais je voulais simplement savoir si tu savais comment éventuellement la bloquer au cas où.

Tant que ce bouton ne sert pas à ajouter ou ôter des lignes il n'a aucune influence sur N6.

Je ne sais pas comment cela était avant la modification. S'il y avait plusieurs mails. Cela est possible si tu touches à des produits qui ont différents fournisseurs.

Teste ce bouton avec la 1 ière ligne et sans celle-ci comme précisé. Fait la même opération avec bouton machine dans les 1 cas et si différence note le et on verras pourquoi.

Je viens de faire quelques tests :

Le bouton de commande machine permet de commander et donc de réduire le stock de plusieurs produits en même temps.

J'ai essayé en ne cochant qu'un seul produit et ma macro de mail se lance deux fois.

Je pense qu'elle se lance une fois avant que le stock du produit soit réduit de 1 et une fois après car j'ai eu deux fenêtres Outlook qui se sont ouvertes avec 16 quantités à recommander puis 17.

Rechercher des sujets similaires à "incompatibilite type"