OVH Cloud OVH Cloud

Instruction AdvencedFilter sous Excel 2003

1 réponse
Avatar
Messager
Bonjour.
J'ai développé une application sous Excel 97 qui contient l'instruction
'AdvencedFilter'.
Je suis passé à la version Excel 2003 et cette instruction ne fonctionne plus.
Le message d'erreur est le suivant : La méthode 'Range' de l'objet '_Global'
a échoué.
Connaissez-vous la cause de ce problème.
Merci pour votre aide .

Private Sub cbEtablissement_Click()
'Filtrer les listes de référenciels d'après le n° FINESS
Dim rgExtraction As Range
Dim rgTypeRéf As Range
Dim rgR As Range
Dim rgNumFiness As Range
Dim NumDécis As Long


Set rgNumFiness = Range("Bases!Finess_Sélectionnés")

'Vider les liste des décisions
Me.cbRecommandation.Clear
Me.cbRéserveMaj.Clear
Me.cbRéserve.Clear
'Vider la liste des référenciels
For i = 0 To Me.lbListesRef.ListCount - 1
Me.lbListesRef.Selected(i) = False
Next i
'N° Finess
Finess = rgNumFiness(frmDécisionsModif.cbEtablissement.ListIndex + 1,
1).Value
'Copier le n° finess dans la zone de critères
Worksheets!Bases.Activate
Range("Bases!LigneCritères").Clear
Range("Bases!NumFinessC").Value = Finess
Range("Bases!NumDécisC").Value = "<>-1"
'Extraire les données corespondantes
Range("Bases!Base_de_données").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("Bases!Critères"),
CopyToRange:=Range("Bases!Extraction")
For Each rgR In Range("Bases!TypeRéf")
If rgR.Offset(0, -1).Value <> "" Then
If rgR.Offset(0, -1).Value <> NumDécis Then
NumDécis = rgR.Offset(0, -1).Value
If rgR.Value = "Recom" Then
Me.cbRecommandation.AddItem NumDécis
ElseIf rgR.Value = "Res" Then
Me.cbRéserve.AddItem NumDécis
ElseIf rgR.Value = "ResMaj" Then
Me.cbRéserveMaj.AddItem NumDécis
End If
End If
End If
Next rgR

End Sub

1 réponse

Avatar
papou
Bonjour
Il ne s'agit pas d'un problème avec la méthode AdvancedFilter, mais de toute
évidence (le message d'erreur l'indique !), d'un problème sur un objet
Range.
As-tu vérifié la validité de l'ensemble des noms qui sont définis et
utilisés dans ton code ?
Et notamment ceux dans la ligne utilisant AdvancedFilter :
Range("Bases!Base_de_données")
Range("Bases!Critères")
Range("Bases!Extraction")

Cordialement
Pascal


"Messager" a écrit dans le message de
news:
Bonjour.
J'ai développé une application sous Excel 97 qui contient l'instruction
'AdvencedFilter'.
Je suis passé à la version Excel 2003 et cette instruction ne fonctionne
plus.
Le message d'erreur est le suivant : La méthode 'Range' de l'objet
'_Global'
a échoué.
Connaissez-vous la cause de ce problème.
Merci pour votre aide .

Private Sub cbEtablissement_Click()
'Filtrer les listes de référenciels d'après le n° FINESS
Dim rgExtraction As Range
Dim rgTypeRéf As Range
Dim rgR As Range
Dim rgNumFiness As Range
Dim NumDécis As Long


Set rgNumFiness = Range("Bases!Finess_Sélectionnés")

'Vider les liste des décisions
Me.cbRecommandation.Clear
Me.cbRéserveMaj.Clear
Me.cbRéserve.Clear
'Vider la liste des référenciels
For i = 0 To Me.lbListesRef.ListCount - 1
Me.lbListesRef.Selected(i) = False
Next i
'N° Finess
Finess = rgNumFiness(frmDécisionsModif.cbEtablissement.ListIndex + 1,
1).Value
'Copier le n° finess dans la zone de critères
Worksheets!Bases.Activate
Range("Bases!LigneCritères").Clear
Range("Bases!NumFinessC").Value = Finess
Range("Bases!NumDécisC").Value = "<>-1"
'Extraire les données corespondantes
Range("Bases!Base_de_données").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("Bases!Critères"),
CopyToRange:=Range("Bases!Extraction")
For Each rgR In Range("Bases!TypeRéf")
If rgR.Offset(0, -1).Value <> "" Then
If rgR.Offset(0, -1).Value <> NumDécis Then
NumDécis = rgR.Offset(0, -1).Value
If rgR.Value = "Recom" Then
Me.cbRecommandation.AddItem NumDécis
ElseIf rgR.Value = "Res" Then
Me.cbRéserve.AddItem NumDécis
ElseIf rgR.Value = "ResMaj" Then
Me.cbRéserveMaj.AddItem NumDécis
End If
End If
End If
Next rgR

End Sub