SpFrancois
Messages postés2Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention22 avril 2008
-
21 avril 2008 à 08:11
SpFrancois
Messages postés2Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention22 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
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 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]
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 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]
Acta_6
Messages postés29Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention22 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
SpFrancois
Messages postés2Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention22 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