erreur 9

MASSJIPE

XLDnaute Impliqué
Bonjour à tous
J'ai une erreur 9 à ligne
If CInt(sh.Cells(i, 24).Text) <= CInt(sh.Cells(i, 25).Text) Then ''''''Si le vieillissement est inférieur au délai de traitement initial
D'avance merci
VB:
Option Explicit

Private Sub Workbook_Open()
    Dim sh As Worksheet
    Dim i As Long, DLign As Long
    Dim ipn As String
    
    ''''''Initialisation du tableau des couleurs pour différencier les mois
    tableau(0) = 0 ''''''Erreur dans la date
    tableau(1) = 6 ''''''Couleur pour Janvier
    tableau(2) = 8 ''''''Couleur pour Février
    tableau(3) = 24 ''''''Couleur pour Mars
    tableau(4) = 26 ''''''Couleur pour Avril
    tableau(5) = 40 ''''''Couleur pour Mai
    tableau(6) = 34 ''''''Couleur pour Juin
    tableau(7) = 36 ''''''Couleur pour Juillet
    tableau(8) = 39 ''''''Couleur pour Août
    tableau(9) = 33 ''''''Couleur pour Septembre
    tableau(10) = 44 ''''''Couleur pour Octobre
    tableau(11) = 19 ''''''Couleur pour Novembre
    tableau(12) = 41 ''''''Couleur pour Décembre
    ''''''
    
    ipn = LCase(Environ("username"))
        
    If ipn <> "a314350" And ipn <> "a309082" And ipn <> "a000678" And ipn <> "a312200" And ipn <> "a310197" And ipn <> "a308810" And ipn <> "317512" Then
        If MsgBox("Vous n'êtes pas enregistré en tant que personne autorisée à accéder à ce document." & Chr(13) & _
                "Tout accès à ce document est enregistré. Continuez tout de même?", vbYesNo + vbExclamation, _
                "Authentification incorrecte") = vbNo Then
            ThisWorkbook.Close False
            Exit Sub
        End If
    End If
    
    ''''''Ajouter la personne à la feuille de suivi des accès
    Set sh = ThisWorkbook.Sheets("Traces enregistrements")

    DLign = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
    With sh
        .Unprotect "Protection"
        .Cells(DLign, 1).Value = ipn
        .Cells(DLign, 2).NumberFormat = "dd/mm/yyyy"
        .Cells(DLign, 2).Value = Date
        .Cells(DLign, 2).NumberFormat = "dd/mm/yyyy"
        .Cells(DLign, 3).Value = ThisWorkbook.ActiveSheet.Name
        If ipn <> "a314350" And ipn <> "a309082" And ipn <> "a312200" And ipn <> "a000678" And ipn <> "a310197" And ipn <> "a308810" And ipn <> "317512" Then
            .Rows(DLign).Interior.Color = RGB(255, 0, 0)
        Else
            .Rows(DLign).Interior.Color = RGB(0, 255, 0)
        End If
        .Protect "Protection"
    End With

    ''''''Mise à jour des informations à l'ouverture
    For Each sh In ThisWorkbook.Worksheets ''''''Parcours des feuilles du classeur
        sh.Calculate ''''''Effectuer les calculs (mises à jour des dates et délais principalement)
        If InStr(sh.Name, "BDD") > 0 Then ''''''S'il s'agit d'une base de données
            For i = 7 To sh.Cells(Rows.Count, 1).End(xlUp).Row ''''''Pour chaque ligne de la base de données
                If Not IsNumeric(sh.Cells(i, 25).Text) Then ''''''Si le délai max de traitement initial est inconnu
                    sh.Cells(i, 24).Interior.ColorIndex = 0 ''''''Le vieillissement n'a pas de couleur de fond
                Else
                    dont = True ''''''Empêcher les boucles infinies
                   [COLOR=rgb(184, 49, 47)] If CInt(sh.Cells(i, 24).Text) <= CInt(sh.Cells(i, 25).Text) Then ''''''Si le vieillissement est inférieur au délai de traitement initial[/COLOR]
                        sh.Cells(i, 24).Interior.Color = RGB(0, 255, 0) ''''''Passer le vieillissement en vert
                    Else ''''''Sinon (vieillissement > délai initial)
                        ''''''si c'est un Audit
                        If sh.Cells(i, 3).Value = "Audit" Then
                            ''''''Si vieillissement > délai initial alors passer le vieillissement en rouge
                            If CInt(sh.Cells(i, 24).Text) > CInt(sh.Cells(i, 25).Text) Then sh.Cells(i, 24).Interior.Color = RGB(255, 0, 0)
                        Else ''''''Sinon (il s'agit d'un blocage)
                            ''''''Si on connait le délai de traitement révisé
                            If IsNumeric(sh.Cells(i, 26).Text) Then
                                ''''''Si vieillissement > délai révisé
                                If CInt(sh.Cells(i, 24).Value) > CInt(sh.Cells(i, 26).Text) Then
                                    sh.Cells(i, 24).Interior.Color = RGB(255, 0, 0) ''''''Passer le vieillissement en fond rouge
                                Else ''''''sinon (vieillissement <= délai révisé)
                                    sh.Cells(i, 24).Interior.Color = RGB(255, 165, 0) ''''''Passer le vieillissement en fond orange
                                End If
                            Else ''''''Délai révisé inconnu
                                sh.Cells(i, 24).Interior.Color = RGB(255, 165, 0) ''''''Passer le vieillissement en fond orange
                            End If
                        End If
                    End If
                    dont = False
                End If
            Next i
        End If
    Next sh
    
    mailing.dont = False
    mailing.passMail = False
End Sub
 

jmfmarques

XLDnaute Accro
Bonjour
L'erreur dénoncée ne concerne aucunement le type, mais l'indice (hors limite)
Je subodore un "flou" ici :
VB:
For i = 7 To sh.Cells(Rows.Count, 1).End(xlUp).Row
Ce rows.count peut dans certains cas (plusieurs feuilles d'origines différentes) être un faux ami.
Préciser la feuille lève l'éventuelle ambiguïté
VB:
For i = 7 To sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
 

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390