Run time error 13, type mismatch ! Code pour comparer deux colonnes

Dogde

XLDnaute Nouveau
Bonjour!

J'ai un petit probleme sur un "Run Time erro 13 type mismatch".

J'ai deux colonnes a comparer et en gros si, pour chaque ligne, valeur colonne A * 1.05 - Valeur colonne B >=0 alors on peut passer au i suivant. Sinon, une msg box doit s'ouvrir et dire a quelle ligne ca a bugue !

Voici le code:

Code:
Sub macro()

Dim i As Integer
Dim j As Integer

'Verification des temperatures

For i = 4 To 25923
    [I]If Sheets("Sheet1").Range("C" & i).Value * 1.05 - Sheets("Sheet1").Range("D" & i).Value >= 0 Then[/I]        j = 1
    Else
        MsgBox "The wrong temperature is in cell" & i
        Exit For
    End If
    
Next i

    
End Sub

Je suis un peu perdu avec les sheets.range, sheets.range.value, sheets.cells alors je ne sais pas si l'erreur vient de la.

De plus apres then, j'ai mis j=1 car je ne savais pas comment lui dire "Juste continue et passe au i suivant".

Merci pour vos indications!
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Run time error 13, type mismatch ! Code pour comparer deux colonnes

Bonjour Dogde

J'ai deux colonnes a comparer et en gros si, pour chaque ligne, valeur colonne A * 1.05 - Valeur colonne B >=0 alors on peut passer au i suivant. Sinon, une msg box doit s'ouvrir et dire a quelle ligne ca a bugue !

sans voir le fichier, difficile de te répondre

dans le code proposé ci-dessus, le test est fait avec les valeur des colonnes C & D et pas A & B comme dit dans l'énoncé de la question

à+
Philippe
 

Dranreb

XLDnaute Barbatruc
Re : Run time error 13, type mismatch ! Code pour comparer deux colonnes

Bonsoir
Essayez comme ça:
VB:
Sub macro()
Dim T() As Variant, Couac As Boolean, L As Long
T = Worksheets("Sheet1").[C4:D25923].Value
On Error Resume Next
For L = 1 To UBound(T, 1)
   Err.Clear: Couac = T(L, 1) * 1.05 - T(L, 2) < 0
   If Err Then Couac = True
   If Couac Then Exit For
   Next L
If Couac Then MsgBox "The wrong values are in cells :" & vbLf _
   & "C" & L + 3 & " = " & T(L, 1) & vbLf _
   & "D" & L + 3 & " = " & T(L, 2), vbInformation, "Temperatures check"
End Sub
À +
 

Dogde

XLDnaute Nouveau
Re : Run time error 13, type mismatch ! Code pour comparer deux colonnes

Merci pour ta reponse !!

Je n'ai pas tout compris a ton code, alors j'ai essaye de le modifier un peu tel que j'aurais pu le faire (avec la methode de la variable boolean), et ca marche!
le voici:

Code:
Sub macro()

Dim i As Integer, Couac As Boolean

On Error Resume Next
For i = 4 To 25923
   Err.Clear: Couac = Worksheets("Sheet1").Range("C" & i).Value * 1.05 - Worksheets("Sheet1").Range("D" & i).Value < 0
   If Err Then Couac = True
   If Couac Then Exit For
   Next i
   
If Couac Then MsgBox "The wrong values are in cells :" & vbLf _
   & "C" & i & vbInformation, "Temperatures check"
   
If Couac = False Then MsgBox "tank 1 ok"
   
End Sub

Par contre, petite question a quoi sert on resume next ?
N'empeche, je ne vois pas trop d'ou venait l'erreur!
Merci !
 

Pièces jointes

  • temp.xlsx
    8.7 KB · Affichages: 44
  • temp.xlsx
    8.7 KB · Affichages: 49
  • temp.xlsx
    8.7 KB · Affichages: 47
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Run time error 13, type mismatch ! Code pour comparer deux colonnes

On Error Resume Next permet d'éviter un arrêt sur erreur. Voir l'aide (Touche F1, le curseur texte étant sur un élément de language).
Au lieu de Couac = False, qui est conceptuellement idiot, il faudrait Not Couac
Votre adaptation est sûrement moins performante que ce que je vous ai donné.
Cordialement.
 

Statistiques des forums

Discussions
312 321
Messages
2 087 264
Membres
103 498
dernier inscrit
FAHDE