If sur le contenu d'un range + Incompatibilité de type

JJ_trax

XLDnaute Nouveau
Bonjour,

Juste pour prévenir, je suis encore une novice en VBA!

Pour le contexte: Je cherche à catégoriser des produits selon les facteurs: aspect physique, danger, voie d'innocution.
* à l'aspect physique correspond 1 cellule, 3 valeurs possibles --> au final 2 catégories
* au danger correspondent 3 cellules, 5 valeurs possibles --> au final 2 catégories
* au risque correspondent 18 cellules, plein de valeurs possibles --> au final 3 catégories
Et au final du final en combinant les catégories précédentes, 8 catégories

j'ai donc fait des range pour chacun des 3 facteurs (sauf pour l'aspect physique où j'ai finalement directement traité avec la valeur de cellule), et selon les valeurs dans les range, je catégorise.

Pour vous donner une idée de comment je fais, voilà le bout de programme que j'ai écrit pour le cas du danger:

Sub categorie_2()

Dim i As Integer, aspect_physique As String, dangerosité As Range, voie As Range, cel As Range
Dim danger As Integer, voie_inoccution As Integer

For i = 3 To 4

aspect_physique = Cells(i, 7).Value
Set dangerosité = Range(Cells(i, 8), Cells(i, 10))
Set voie = Range(Cells(i, 11), Cells(i, 28))

For Each cel In dangerosité
If cel = "T" Or "T+" Then
danger = 1
ElseIf cel = "Xn" Or "Xi" Or "C" Then
danger = 2
End If

MsgBox danger

Next

Next

End Sub


Sauf que voilà, ça bloque à la ligne en rouge (j'avais essayer une autre manière, même problème) "Erreur 13, Incompatibilité de type".
Le contenu de mes colonnes est au format texte, mais en le passant en standard, ça change pas grand chose...

Qqn aurait une idée d'où provient l'erreur? (et au passage des idées de manières de programmer plus simplement la catégorisation?)

Merci d'avance! :eek:
 

job75

XLDnaute Barbatruc
Re : If sur le contenu d'un range + Incompatibilité de type

Bonjour JJ_trax, bienvenue sur XLD,

Votre code était incomplet :

Code:
For Each cel In dangerosité
  If cel = "T" Or cel = "T+" Then
    danger = 1
  ElseIf cel = "Xn" Or cel = "Xi" Or cel = "C" Then
    danger = 2
  Else
    danger = 0 'ou une autre valeur...
  End If
  MsgBox danger
Next
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 490
Membres
103 558
dernier inscrit
Lamine ABIDI