Erreur 13 Incompatibilité de type - VB/VBA/VBS - Programmation
Marsh Posté le 13-10-2010 à 09:33:31
ReplyMarsh Posté le 13-10-2010 à 09:58:26
Bonjour,
l'erreur est sur cette ligne
If tableau_géométrie(A, 33) < tableau_des_comparaisons(tableau_géométrie(A, 5), 1) + 1 And tableau_géométrie(A, 33) > tableau_des_comparaisons(tableau_géométrie(A, 5), 1) - 1 Then
Merci de ta réponse
Marsh Posté le 13-10-2010 à 12:05:02
L'erreur est ici :
tableau_des_comparaisons(tableau_géométrie(A, 5), 1)
Ton tableau_géométrie(A, 5) renvoie autre chose qu'un variant ou une valeur superieure a celle definie dans le tableau
Tu dois donc avoir dans une cellule de ton tableau autre chose que des chiffres de 0 à 8000
Si dans mon tableau qui va de A1 à DI300 je ne mets que des nombres, la routine passe sans souci.
Si je mets une lettre a un endroit, hop ca foire.
Si tableau_géométrie(A, 5) renvoie 201, bah forcement aussi ca foire, car tu definis ton tableau tableau_des_comparaisons(0 To 200, 0 To 10)
etc.
Faut verifier tes données sources
Si tu poses ta souris sur le texte "tableau_géométrie" sur la ligne surlignée en jaune qd ca beug, Excel est censé te donner la valeur que ca renvoie...
Marsh Posté le 13-10-2010 à 14:09:37
Ok je te remercie de ta réponse, j'essayerai ça et je te tiendrai au courant. Encore merci
Marsh Posté le 14-10-2010 à 17:18:59
Bonjour,
je te remercie pour le temps que tu as passé sur le problème, maintenant ça fonctionne.
un grand merci
Marsh Posté le 13-10-2010 à 09:07:40
Bonjour,
Voila, j'ai un programme à faire tourner et celui-ci me met une erreur d'incompatibilité de type
pourriez-vous m'aider merci d'avance.
le code :
Sub Classes()
'----------------EN TETE
'Le but de ce module est de trier les weldolet par classes suivant la flèche de 1.6mm
'----ENTREE
'Le tableau de "Géométrie"
'----SORTIE
'Valeurs triées dans l'onglet "Géométrie"
Dim tableau_des_comparaisons(0 To 200, 0 To 10) As Variant
Dim tableau_géométrie(0 To 8000, 0 To 80) As Variant
'recopie du tableau géométrie dans "tableau_géométrie"
X = 1
Do While Worksheets("Géométrie" ).Cells(X + 48, 1) <> ""
For Y = 1 To 26
tableau_géométrie(X, Y) = Worksheets("Géométrie" ).Cells(X + 48, Y)
Next
For Y = 33 To 40
tableau_géométrie(X, Y) = Worksheets("Géométrie" ).Cells(X + 48, Y)
Next
X = X + 1
Loop
'opération de tri dans le tableau géométrie
For A = 1 To X
If tableau_géométrie(A, 33) < tableau_des_comparaisons(tableau_géométrie(A, 5), 1) + 1 And tableau_géométrie(A, 33) > tableau_des_comparaisons(tableau_géométrie(A, 5), 1) - 1 Then
If tableau_géométrie(A, 2) = tableau_géométrie(tableau_des_comparaisons(tableau_géométrie(A, 5), 2), 2) Then
B = 4
tableau_géométrie(tableau_des_comparaisons(tableau_géométrie(A, 5), 2), B) = tableau_géométrie(A, 3)
For B = 6 To 26
tableau_géométrie(tableau_des_comparaisons(tableau_géométrie(A, 5), 2), B) = tableau_géométrie(A, B)
Next
For B = 33 To 40
tableau_géométrie(tableau_des_comparaisons(tableau_géométrie(A, 5), 2), B) = tableau_géométrie(A, B)
Next
For B = 6 To 26
tableau_géométrie(A, B) = ""
Next
Else
GoTo moe
End If
Else
moe:
tableau_des_comparaisons(tableau_géométrie(A, 5), 1) = tableau_géométrie(A, 33)
tableau_des_comparaisons(tableau_géométrie(A, 5), 2) = A
End If
Next
'Nettoyage de la feuille géométrie
X = 1
Do While Worksheets("Géométrie" ).Cells(X + 48, 1) <> ""
For Y = 1 To 26
Worksheets("Géométrie" ).Cells(X + 48, Y) = " "
Next
For Y = 33 To 40
Worksheets("Géométrie" ).Cells(X + 48, Y) = ""
Next
X = X + 1
Worksheets("Géométrie" ).Cells(X + 48, 10).Select
Loop
'écriture de "tableau_géométrie" dans le tableau de Géométrie
z = 1
X = 1
Do While tableau_géométrie(X, 1) <> ""
If tableau_géométrie(X, 10) <> "" Then
For Y = 1 To 26
Worksheets("Géométrie" ).Cells(z + 48, Y) = tableau_géométrie(X, Y)
Next
For Y = 33 To 40
Worksheets("Géométrie" ).Cells(z + 48, Y) = tableau_géométrie(X, Y)
Next
Worksheets("Géométrie" ).Cells(z + 48, 1) = "=IF(AND(R[" & -z - 48 + 5 & "]C[1]=RC[1],R[" & -z - 48 + 6 & "]C[1]>=RC[2],R[" & -z - 48 + 6 & "]C[1]<=RC[3],R[" & -z - 48 + 7 & "]C[1]=RC[4]),1,0)"
z = z + 1
Worksheets("Géométrie" ).Cells(z - 1, 10).Select
End If
X = X + 1
Loop
End Sub
ça plante au niveau du tableau des comparaisons et d'après ce que j'ai pu comprendre c'est le type Variant qui coince.
mais ce ne sont que des suppositions de novice en informatique
Voila, merci de votre aide
A bientôt