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

Signaler
Messages postés
22
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
22 août 2012
-
Messages postés
22
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
22 août 2012
-
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

Messages postés
22
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
22 août 2012

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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
122
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
Messages postés
22
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
22 août 2012

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).
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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 ?
Messages postés
32982
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 juin 2021
351
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
Messages postés
22
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
22 août 2012

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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