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 sub

Le 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 = Critere2

qui 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

9forum.xlsm (171.80 Ko)

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 Sub

Le 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

Rechercher des sujets similaires à "erreur type"