A l'aide pour une macro VBA - VB/VBA/VBS - Programmation
Marsh Posté le 17-05-2006 à 13:36:58
Erreur 13
Type incompatible (erreur 13)
Visual Basic peut convertir et forcer plusieurs valeurs pour effectuer des affectations de type de données qui étaient impossibles dans des versions antérieures. Cependant, cette erreur peut toujours se produire et peut avoir les causes et solutions suivantes :
La variable ou la propriété n'est pas du type approprié. Par exemple, une variable nécessitant une valeur entière ne peut pas accepter de valeur de chaîne sauf si cette valeur peut être reconnue comme un entier.
Essayez d'effectuer des affectations uniquement entre types de données compatibles. Par exemple, un Integer peut toujours être affecté à une variable de type Long, un type Single peut toujours être affecté à une variable de type Double, et n'importe quel type (à l'exception d'un type défini par l'utilisateur) peut être affecté à une variable de type Variant.
Un objet a été passé à une procédure attendant une propriété ou une valeur simple.
Passez la propriété simple appropriée ou appelez une méthode adaptée à l'objet.
Un nom de module ou de projet a été utilisé à l'endroit où une expression était attendue, par exemple :
Debug.Print MyModule
Spécifiez une expression pouvant être affichée.
Vous avez tenté de combiner une gestion d'erreurs Basic traditionnelle avec des valeurs de type Variant ayant le sous-type Error (10, vbError), par exemple :
Error CVErr(n)
Pour générer à nouveau une erreur, vous devez trouver la correspondance à une erreur Visual Basic intrinsèque ou définie par l'utilisateur, puis générer cette erreur.
Une valeur CVErr ne peut pas être convertie en Date. Par exemple :
MyVar = CDate(CVErr(9))
Utilisez une instruction Select Case ou une structure similaire pour mapper le renvoi de CVErr à ce type de valeur.
Au moment de l'exécution, cette erreur indique généralement qu'une variable de type Variant utilisée dans une expression a un sous-type incorrect, ou qu'une variable de type Variant contient un tableau apparaissant dans une instruction Print #.
Pour imprimer des tableaux, créez une boucle affichant chaque élément individuellement.
Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).
Marsh Posté le 17-05-2006 à 14:51:49
Merci de ces précieux renseignement.
Dans ce cas présent l'erreur venait du fait que la chaine de caractère contenue dans la zone de cellules fusionnées n'est affectée en valeur qu'à la première cellule de la fusion.
Bonne journée
Marsh Posté le 17-05-2006 à 12:10:22
Bonjour
Ca va faire des heures que je me prend la tête. J'ai une première cellule qui contient un date sous la forme jj/mm/aaaa. De cette cellule j'extrais le mois avec la fonction Month et je l'écrit dans un deuxième cellule. Je fais la même chose pour 12 cellules correspondant aux 12 mois de l'année.
Puis j'utilise un UserForm avec une ListBox, pour que l'utilisteur choisisse son mois. Je récupère son choix dans la variable Mois en utilisant ListBoX.Value . Puis je compare Mois à chaque Cellule qui contient un mois de l'année. Comme ça ne marchait pas j'ai tenté de mettre le contenue de la cellule dans la chaine de caratère Mensuel comme suit:
Mensuel = CStr(Workbooks("Informatisation du plan de maintenance.xls" ).Worksheets(Feuillename).Range(Cells(3, Compt2 - Compt4), Cells(3, Compt2)))
Mais ça ne marche pas, j'ai une erreur n°13, et quand je demande le tpe de l'expréssion suivante:
Workbooks("Informatisation du plan de maintenance.xls" ).Worksheets(Feuillename).Range(Cells(3, Compt2 - Compt4), Cells(3, Compt2))
Il me répond variant.
Je vous en supplie aidez moi c'est pour mon stage de fin d'étude et là je vais pas tarder à flinguer mon ordi à coup de batte.