[Catégorie modifiée VB6 --> VBA] Erreur d'éxecution 13 : Incompatibilité type

Résolu
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012 - 20 août 2010 à 16:48
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012 - 23 août 2010 à 09:31
Bonjour,

J'ai un formulaire, dans lequel je souhaiterai intégrer ou supprimer des lignes. A chaque fois que je fais cette opération, il me fait apparaître ce type d'erreur.

La ligne où apparaît l'erreur est :
If Target.Address(0, 0) "A10" And UCase(Target.Value) "MULTI" Then

Y a t-il une solution pour que ce type d'erreur disparaisse ?

Je vous remercie de votre aide.

8 réponses

cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
23 août 2010 à 09:31
Bonjour et merci pour vos réponses

Avec tout ce que vous m'avez donné comme info je peux vous annoncer que mon problème est résolu.

Voici le code final :
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$A$10" Then
    If UCase(Target.Value) = "MULTI" Then
    MsgBox "Vous avez saisi Multi, veuillez saisir le nom des sites concernés!", vbInformation, "Site concerné"
    End If
End If
End Sub
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 août 2010 à 16:51
Salut,

De quel type est ton Target.Adress ? Est-ce qu'il s'agit bien d'un string ? Idem pour le Target.Value ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
20 août 2010 à 17:02
Bjr,

Ce n'est que du texte. Dans la cellule A10 il y a une liste déroulante proposant différentes réponses (caractères textes).
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 17:06
Salut
Ce n'est donc pas du VB6, mais du VBA.

Si tu avais utilisé le débogage, tu aurais déjà ta réponse :
Le format de Address n'est pas A10, mais $A$10

F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
F8 pour avancer d'une ligne de code
F5 pour continuer normalement

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 17:22
Oups, j'avais pas vu
Target.Address(0, 0)

Dans quelle Sub ou Function possèdes-tu un objet "Target" ?
Où as-tu vu qu'on pouvait déclarer du (0, 0) derrière le mot clé Address ?
Dans l'aide ?
Surtout 0 (alors qu'il n'existe pas de ligne ni de colonne d'index 0 sous Excel

Dans quoi programmes-tu ? Excel ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
20 août 2010 à 17:27
Bonjour,
Pour ma part
Target.adress

me retourne en effet une valeur de type : $A$10
Target.adress(0,0)

me retourne, quand à elle, la valeur : "A10".

J'ai testé cette ligne de code et n'y ai trouvé aucune erreur.
Il se peut que le souci soit après le THEN.
(même en y mettant une liste déroulante avec du texte).

-> Peux tu nous indiquer le code qui suit cette ligne ?

-> Si tu y va en mode pas à pas (F8), à quel moment bloques-tu ?

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
20 août 2010 à 18:31
Je joins le code complet :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) "A10" And UCase(Target.Value) "MULTI" Then
MsgBox "Vous avez saisi Multi, veuillez saisir le nom des sites concernés!", vbInformation, "Site concerné"
End If
End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 19:58
Peut-être en décomposant ton If.
En effet, si la cellule n'est pas A10, le If évaluera quand même le Ucase qui le compose, et la donnée n'est peut-être pas compatible, genre Vide.
If ...Address = A10 Then
    If UCase... Then
    End If
End If
0
Rejoignez-nous