Erreur d'execution 13 Incompatibilité de type [Résolu]

cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 25 avril 2012 à 15:02 - Dernière réponse : cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention
- 27 avril 2012 à 15:43
Bonjour!

Je viens vers vous pour éclairer ma lanterne

J'ai une ligne de code Vba qui bloque en raison de l'erreur d'execution 13 mais je ne vois pas ce qui cloche dans mon code

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Dim nomequipement As String
Dim colnb As Byte
NumLig = 0
Sheets("stock").AutoFilterMode = False


rechercheequipement = mouvement.equipement.Value
Sheets("stock").Select
Range("b9").Select
Selection.AutoFilter
Selection.AutoFilter field:=1, Criteria1:=rechercheequipement
Range("b9:Z10000").Copy
Sheets("rechercheequipement").Select
Range("b9:Z10000").Select
ActiveSheet.Paste

nomequipement = mouvement.equipement.Value
With Sheets("stock")
NbrLig .Cells(65536, Col).End(xlUp).RowFor Lig 1 To NbrLig
If nomequipement = .Cells(Lig, Col).Value Then
If mouvement.entrée.Value = True Then

Sheets("stock").Cells(Lig, "e").Value = mouvement.nbentrée.Value + .Cells(Lig, "e").Value
ElseIf mouvement.sortie.Value = True Then
Sheets("stock").Cells(Lig, "e").Value = mouvement.nbentrée.Value - .Cells(Lig, "e").Value
End If
End If
Next

End With


C'est à l'endroit surligné en jaune que j'ai le soucis alors que j'ai déjà réussi un code similaire auparavant qui fonctionnait...
Avez-vous une idée du problème?

Merci d'avance
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 avril 2012 à 18:03
3
Merci
1) présente ton code entre balises code
2) fais un copier coller de ton code, tel qu'il est. Cela évitera de se poser des questions sur une ligne telle que celle-ci, dans le code montré :
NbrLig .Cells(65536, Col).End(xlUp).RowFor Lig 1 To NbrLig
!!
3) relis mon message de mercredi 25 avril 2012 à 16:40:37
mets donc un
msgbox "bonjour" après les deux lignes de code que j'y ai mises.
Je suis prêt à parier que ces deux conditions ne sont pas vérifiées.
Et si oui : tu es bien le seul à savoir pourquoi et ce que sont exactement tes objets (déjà dit) !
Apprends à travailler en mode debug et en pas à pas et suis tes variables pas à pas. Tu verras ainsi ce qui ne va pas (n'existe pas, ne contient rien, etc ...)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ucfoutu
bonjourc 47 Messages postés mardi 19 mars 2013Date d'inscription 23 mars 2013 Dernière intervention - 25 avril 2012 à 15:17
0
Merci
ta variable 'Col', elle est egale à quoi?



Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
Commenter la réponse de bonjourc
cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 25 avril 2012 à 16:00
0
Merci
Oui j'ai oublié de le mettre! C'est col="D".
Maintenant que j'ai rectifié cette erreur une autre apparait car la somme ne se fait pas. J'ai corrigé la fin du code car dans le deuxième cas c'est :
ElseIf mouvement.sortie.Value = True Then
Sheets("stock").Cells(Lig, "e").Value = mouvement.nbsortie.Value - .Cells(Lig, "e").Value .

La synthaxe n'est pas bonne pour une somme?
Commenter la réponse de cs_mira3
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 avril 2012 à 16:40
0
Merci
Bonjour,
prends l'habitude (ce n'est pas ni un luxe, ni une option) de présenter ici tes bouts de code indentés et entre balises code (3ème icone en partant de la droite), si tu veux qu'ils soient lisibles et ... lus ...
"e" n'a rien à y voir !
Il est par contre assez vraisemblable que tu n'entre pas dans les conditions :
If nomequipement = .Cells(Lig, Col).Value Then
  If mouvement.entrée.Value = True Then

et tu es bien le seul à savoir pourquoi, comme tu es bien le seul à savoir ce qu'est mouvement
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 25 avril 2012 à 16:48
0
Merci
Ah oui je n'avais pas vu comment présenter le code de cette façon , Merci!
En fait mouvement.entrée représente un optionbutton et quand je teste je le coche effectivement donc c'est pour ça que je ne comprend pas.
Puis j'ai à nouveau un problème avec mes filtres donc je pense reprendre tout du début
Commenter la réponse de cs_mira3
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 avril 2012 à 16:54
0
Merci
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 25 avril 2012 à 19:18
0
Merci
Bonjour,

NbrLig = .Cells(65536, Col).End(xlUp).Row
.Cells ne prend que des numériques, pas de lettres. Pour cela il y a la méthode Range.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 avril 2012 à 19:59
0
Merci
Bonjour, NHenry
Pas vraiment.
Fais donc cette expérience :
Dim col As String
col = "B"
lig = 2
MsgBox Cells(lig, col).Value

Fonctionne.
Son erreur n'est pas là. Elle est plus fondamentale, d'où mon

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 26 avril 2012 à 09:10
0
Merci
J'ai essayé mais ma somme ne se fait toujours pas
Commenter la réponse de cs_mira3
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 26 avril 2012 à 16:56
0
Merci
Mais tu as quand même des valeur dans

Sheets("stock").Cells(Lig, "e").Value
Commenter la réponse de 4u4me4us
cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 26 avril 2012 à 17:52
0
Merci
Oui mais les valeurs ne bougent pas
Commenter la réponse de cs_mira3
bonjourc 47 Messages postés mardi 19 mars 2013Date d'inscription 23 mars 2013 Dernière intervention - 27 avril 2012 à 14:18
0
Merci
Le mod debug, c'est F8 pour le pas à pas, et cliquer dans la marge à gauche pour mettre des points d'arret. (on sait jamais :) )

Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
Commenter la réponse de bonjourc
cs_mira3 22 Messages postés mardi 3 avril 2012Date d'inscription 10 mai 2012 Dernière intervention - 27 avril 2012 à 15:43
0
Merci
Merci!

Mon problème est résolu ça marche
Commenter la réponse de cs_mira3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.