Erreur d'indice 9

SpFrancois Messages postés 2 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 avril 2008 - 21 avril 2008 à 08:11
SpFrancois Messages postés 2 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 avril 2008 - 22 avril 2008 à 07:28
bonjour
je vient de m'inscrire et j'ai besion d'aide

je veut installer sur mon portable office 2007  et mon application en VBA qui a etait developper sur office 2000
ne fonctionne pas erreur N 9
si vous pouvez m'aider merci d'avance

'un exemple du code VBA
Function AttributJourSaisie()
    Dim c As Range, Adresse, i As Byte, DebLigne As Integer, CCnt As Byte, FinLigne As Integer, CptRow As Integer, a As Range, DH As Boolean, CptCol As Byte
    Dim Mtab()
        With VarSheet.s_SheetVisuSaisie
            FinLigne = .UsedRange.Row - 1 + .UsedRange.Rows.Count
            CCnt = .UsedRange.Columns.Count
            DebLigne = 2
            For CptRow = FinLigne To 2 Step -1
                Set a = .Columns(9).Find(.Cells(CptRow, 9), LookIn:=xlValue)
                a.EntireRow().Delete
            Next CptRow
        End With
       
        With ClasseurPrincipal
            For i = 1 To .Worksheets.Count
                If InStr(1, .Worksheets(i).Name, "Oper_", 1) Then
                    Set VarSheet.s_SheetActive = .Worksheets(i)
                        With VarSheet.s_SheetActive                            If InStr(1, .Range("A1").Value, "Agadir", 1) Then DH True Else DH False
'erreur dans la ligne ci dessous
                                Set c = .Columns(8).Find(VarDate.d_Date, LookIn:=xlValue)
                                    If Not c Is Nothing Then
                                        Adresse = c.Address
                                            Do
                                                Set c = .Columns(8).FindNext(c)
                                                For CptCol = 1 To 10
                                                    Select Case CptCol
                                                        Case Is = 5 And 6
                                                            VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = Format(.Cells(c.Row, CptCol), FORMMONT)
                                                        Case Is = 10
                                                            VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = DH
                                                        Case Else
                                                            VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = .Cells(c.Row, CptCol)
                                                    End Select
                                                Next CptCol
                                                    DebLigne = DebLigne + 1
                                            Loop While Not c Is Nothing And c.Address <> Adresse
                                    End If
                        End With
                End If
            Next i
           Call ModVisuSaisie.VisuSaisieOperations
        End With
End Function

5 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 59
21 avril 2008 à 08:19
Bonjour et bienvenu.
Il faut dès maintenant prendre les bonnes habitudes pour poster sur le forum.
Ta question appartient à un thème, il faut trouver lequel il s'agit, car il ne s'agit en AUCUN cas de :[infomsgf_CODES-SOURCES_43.aspx CodeS-SourceS] / [infomsgt_BAR_770.aspx Le Bar] / [infomsgt_DISCUSSIONS-LIBRES_774.aspx Discussions libres] /

POUR TES PROCHAINES QUESTIONS (celle ci sera déplacé par un Admin CS bienveillant) tâches de poster dans la section correcte.

Pour ton problème, il me semble que la description de l'erreur est assez explicit, il s'agit d'une erreur d'indice, donc peu être que la column(8) n'existe pas.

un peu de couleur

'un exemple du code VBA
Function AttributJourSaisie()
   Dim c As Range, Adresse, i As Byte, DebLigne As Integer, CCnt As Byte, FinLigne As Integer, CptRow As Integer, a As Range, DH As Boolean, CptCol As Byte
   Dim Mtab()
       With VarSheet.s_SheetVisuSaisie
           FinLigne = .UsedRange.Row - 1 + .UsedRange.Rows.Count
           CCnt = .UsedRange.Columns.Count
           DebLigne = 2
           For CptRow = FinLigne To 2 Step -1
               Set a = .Columns(9).Find(.Cells(CptRow, 9), LookIn:=xlValue)
               a.EntireRow().Delete
           Next CptRow
       End With
     
       With ClasseurPrincipal
           For i = 1 To .Worksheets.Count
               If InStr(1, .Worksheets(i).Name, "Oper_", 1) Then
                   Set VarSheet.s_SheetActive = .Worksheets(i)
                       With VarSheet.s_SheetActive
                           If InStr(1, .Range("A1").Value, "Agadir", 1) Then DH = True Else DH = False
'erreur dans la ligne ci dessous
                               Set c = .Columns(8).Find(VarDate.d_Date, LookIn:=xlValue)
                                   If Not c Is Nothing Then
                                       Adresse = c.Address
                                           Do
                                               Set c = .Columns(8).FindNext(c)
                                               For CptCol = 1 To 10
                                                   Select Case CptCol
                                                       Case Is = 5 And 6
                                                           VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = Format(.Cells(c.Row, CptCol), FORMMONT)
                                                       Case Is = 10
                                                           VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = DH
                                                       Case Else
                                                           VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = .Cells(c.Row, CptCol)
                                                   End Select
                                               Next CptCol
                                                   DebLigne = DebLigne + 1
                                           Loop While Not c Is Nothing And c.Address <> Adresse
                                   End If
                       End With
               End If
           Next i
          Call ModVisuSaisie.VisuSaisieOperations
       End With
End Function<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 59
21 avril 2008 à 08:24
Re,
Petite correction au passage:

Dans ton select case. si tu souhaites faire le meme traitement lorsque CptCol vaut 5 ET 6 alors ton Case est FAUX il ne faut pas faire;

Select Case CptCol
   Case Is = 5 And 6
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = Format(.Cells(c.Row, CptCol), FORMMONT)
   Case Is = 10
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = DH
   Case Else
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = .Cells(c.Row, CptCol)
End Select , ----
[code.aspx?ID=41455 By Renfield]

Mais

Select Case CptCol
   Case 5,6
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = Format(.Cells(c.Row, CptCol), FORMMONT)
   Case Is = 10
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = DH
   Case Else
       VarSheet.s_SheetVisuSaisie.Cells(DebLigne, CptCol) = .Cells(c.Row, CptCol)
End Select , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
21 avril 2008 à 12:55
Salut,

Je déplace vers le forum approprié : VB6 / Langages dérivés / VBA
______________________________________
DarK Sidious
0
Acta_6 Messages postés 29 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 avril 2008
21 avril 2008 à 14:34
Il est possible aussi que ce soit ta ligne FinLigne = .UsedRange.Row - 1 + .UsedRange.Rows.Count qui plante.
Car FinLigne est typée en integer et donc ne peut dépasser 32767.
Il suffit que ton Usedrange soit > a 16384 et ca pose un souci. (Remarque, a bien y réfléchir, je pense pas que l'erreur rapporté soit un "indice 9". Je sais plus.)
Enfin, je suis pas sur mais c'est a explorer aussi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SpFrancois Messages postés 2 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 avril 2008
22 avril 2008 à 07:28
merci pour les reponses sur l'erreur d'indice 9
je suis toujour planté il ma fallu reinstaller office 2000 et la programme fonctionne trés bien a priori il a du se passer quelques chose entre office 2000  et les versions superieur


j'espere que je ne suis pas comdamné  a rester sur office 2000 ?
merci encore pour vos coups de mains
0