Erreur type 13 (Cells)
Bonjour à tous
Je viens vers vous après avoir consulté plusieurs rubrique du forum mais je n'ai toujours pas de solution à mon problème.
Aujourd'hui, j'ai besoin de faire une macro à partir d'un logigramme pour avoir un visuel rapide sur un userform.
Dans ce logigramme, j'ai plus de 20 critères mais j'ai un problème à partir du deuxième critère. Voici le code:
Private Sub Miseàjour_Click()
Sheets("Feuil1").Select
Dim ligne As Long
Dim Critere1 As Long
Dim Critere1bis As Integer
Dim Critere2 As Long
Dim Critere2bis As Integer
Critere1 = 0
Critere1bis = 0
Critere2 = 0
Critere2bis = 0
For ligne = 3 To ActiveSheet.UsedRange.Rows.Count
'Critère 1
If cells(ligne, 122) <> "" Then
Critere1bis = cells(ligne, 51)
Critere1 = Critere1 + Critere1bis
End If
'Critère 2
If cells(ligne, 122) = "" Then
Critere2bis = cells(ligne, 51)
Critere2 = Critere2 + Critere2bis
End If
Next ligne
Critère1.Value = Critere1
Critère2.Value = Critere2
End subLe premier critère va marcher parfaitement mais le second qui est le même mise à par la 2ème ligne que je remplace le "<>" par un "=" ne va pas marcher et m'afficher une erreur à la ligne suivante "Erreur 13:Imcompatibilité de type".
J'ai essayé de faire un sinon , de changer de variable mais le problème est toujours le même.
J'ai besoin d'aider merci d'avance pour vos retour.
Bonjour Adrien et bienvenu,
Sans le fichier qui va bien il nous sera difficile de trouver l'erreur !... Certaines variable sont déclarée de type Long d'autre de type Integer ? Mais ce que je trouve plus étrange c'est :
Critère1.Value = Critere1
Critère2.Value = Critere2qui semblerait indiquer qu'il existe aussi des variables de type Range. N'y aurait-il pas confusion entre ces variables Critere1 / Critère1 ?...
Bonjour et merci
Je t'envoie le fichier avec les info nécessaire.
Les deux critères que tu me parles sont juste pour afficher les valeurs dans un Userform
Bon je viens de remarquer aussi mon vba fonctionne parfaitement à petite échelle, ici 250 lignes, exemple du fichier que je viens d'envoyer.
Mais moi je travaille sur 175 000 lignes.
Je pense que c'est un problème de variable
Private Sub Miseàjour_Click()
Sheets("Feuil1").Select
'Dim cell As Range
Dim ligne As Long
Dim Critere1 As Long
Dim Critere1bis As Integer
Dim Critere2 As Long
Dim Critere2bis As Integer
Dim Critere3 As Long
Dim Critere3bis As Integer
Dim Critere4 As Long
Dim Critere4bis As Integer
Dim Critere5 As Long
Dim Critere5bis As Integer
Dim Critere6 As Long
Dim Critere6bis As Integer
Dim Critere7 As Long
Dim Critere7bis As Integer
Dim Critere8 As Long
Dim Critere8bis As Integer
Dim Critere9 As Long
Dim Critere9bis As Integer
Dim Critere10 As Long
Dim Critere10bis As Integer
Dim Critere11 As Long
Dim Critere11bis As Integer
Dim Critere12 As Long
Dim Critere12bis As Integer
Dim Critere13 As Long
Dim Critere13bis As Integer
Dim Critere14 As Long
Dim Critere14bis As Integer
Dim Critere15 As Long
Dim Critere15bis As Integer
Dim Critere16 As Long
Dim Critere16bis As Integer
Dim Critere17 As Long
Dim Critere17bis As Integer
Dim Critere18 As Long
Dim Critere18bis As Integer
Dim Critere19 As Long
Dim Critere19bis As Integer
Dim Critere20 As Long
Dim Critere20bis As Integer
Dim Critere21 As Long
Dim Critere21bis As Integer
Critere1 = 0
Critere1bis = 0
Critere2 = 0
Critere2bis = 0
Critere3 = 0
Critere3bis = 0
Critere4 = 0
Critere4bis = 0
Critere5 = 0
Critere5bis = 0
Critere6 = 0
Critere6bis = 0
Critere7 = 0
Critere7bis = 0
Critere8 = 0
Critere8bis = 0
Critere9 = 0
Critere9bis = 0
Critere10 = 0
Critere10bis = 0
Critere11 = 0
Critere11bis = 0
Critere12 = 0
Critere12bis = 0
Critere13 = 0
Critere13bis = 0
Critere14 = 0
Critere14bis = 0
Critere15 = 0
Critere15bis = 0
Critere16 = 0
Critere16bis = 0
Critere17 = 0
Critere17bis = 0
Critere18 = 0
Critere18bis = 0
Critere19 = 0
Critere19bis = 0
Critere20 = 0
Critere20bis = 0
Critere21 = 0
Critere21bis = 0
For ligne = 3 To ActiveSheet.UsedRange.Rows.Count
'Critère 1
If cells(ligne, 122) <> "" Then
Critere1bis = cells(ligne, 51)
Critere1 = Critere1 + Critere1bis
End If
'Critère 2
If cells(ligne, 122) = "" And cells(ligne, 66) = "Obsolète_Vétuste" Then
Critere2bis = cells(ligne, 51)
Critere2 = Critere2 + Critere2bis
End If
'Critère 5
If cells(ligne, 122) = "" And cells(ligne, 66) <> "Obsolète_Vétuste" And (cells(ligne, 147) <> "" Or cells(ligne, 149) <> "") Then
Critere5bis = cells(ligne, 51)
Critere5 = Critere5 + Critere5bis
End If
'Critère 6
If cells(ligne, 122) = "" And cells(ligne, 66) <> "Obsolète_Vétuste" And (cells(ligne, 147) = "" Or cells(ligne, 149) = "") And cells(ligne, 37) = "Oui" And cells(ligne, 91) = "Syndic" And (cells(ligne, 92) <> "Refus de passage en domaine privé" Or cells(ligne, 92) <> "Refus travaux tiers domaine privé") Then
Critere6bis = cells(ligne, 51)
Critere6 = Critere6 + Critere6bis
End If
'Critère 3
If cells(ligne, 122) = "" Then
Critere3bis = cells(ligne, 51)
Critere3 = Critere3 + Critere3bis
End If
Next ligne
Critère1.Value = Critere1
TotalLogementsRaccordable.Value = Critere1
Critère2.Value = Critere2
Critère3.Value = Critere3
Critère4.Value = Critere4
TotalHorsResponsabilité.Value = Critere2 + Critere3 + Critere4
Critère5.Value = Critere5
Critère6.Value = Critere6
Critère7.Value = Critere7
TotalLogementsenRefusTiers.Value = Critere5 + Critere6 + Critere7
Critère8.Value = Critere8
Critère9.Value = Critere9
Critère10.Value = Critere10
Critère11.Value = Critere11
Critère12.Value = Critere12
Critère13.Value = Critere13
Critère14.Value = Critere14
Critère15.Value = Critere15
Critère16.Value = Critere16
Critère17.Value = Critere17
Critère18.Value = Critere18
Critère19.Value = Critere19
Critère20.Value = Critere20
Critère21.Value = Critere21
End SubLe critère 3 m'affiche une erreur 13 tandis que le critère 6 ne me prend pas en compte les OR (j'ai vérifié, j'ai bien écrit les bon caractères)
J'ai refait un post pour que cela soit plus clair : https://forum.excel-pratique.com/excel/erreur-type-13-cells-148031