Excel 2007 : l'indice n'appartient pas à la sélection (fonctionne sous 2003)

aclech

XLDnaute Nouveau
Bonjour

j'ai parcouru plusieurs forums pour mon problème mais je n'ai pas trouvé de solution

la macro ci dessous est utilisée par des collègues qui ont Excel 2003 et d'autres qui ont Excel 2007 il faut donc une solution qui fonctionne avec les 2 versions du tableur

ma macro fonctionne c'est a dire qu'elle remplie un tableau avec des infos récupérées sur un site internet mais le message "l'indice n'appartient pas à la selection" s'affiche à la fin du traitement sous Excel 2007 (et pas sous 2003)

j'ai vu des posts sur un probleme avec le gestionnaire d'erreurs mais rien de clair

le tableau dans la boucle "For i = 100 to 200 ..." est rempli correctement c'est apparement ensuite que l'erreur est levée

merci de votre aide

Code:
Sub CommandButton1_Click()

' Macro associée au bouton Données Agresso de l'onglet Charges

' Variables de stockage des infos projet nécessaire à l'interrogation Agresso
Dim Projet, Commande As String
Dim Jour As Variant
' Variables de comptage et de pointeur
Dim i, ligne As Integer


' Gestionnaire d'erreur
On Error GoTo GestErreurs

Sheets("Charges").Activate

' valorisation des variables de projet pour interroger Agresso
Projet = Range("G2").Value
Commande = ActiveCell.Value
ligne = ActiveCell.Row
Jour = Range("C" & ligne).Value


' si la première ligne de commande du tableau des charges est vide on ne fait rien
If IsEmpty(Commande) Then
   Exit Sub
End If

If IsEmpty(Jour) Then
  Jour = Date
  Range("C" & ligne).Value = Jour
End If

' suppression de la protection de la feuille
Call DeProtege_Feuille(ThisWorkbook.ActiveSheet)

' requete sur le Web accèdant aux tableaux du bilan projet agresso avec le code projet , la commande et le jour
' le paramètre WebTables permet de choisir les tableaux à extraire

Set Extract = Sheets("Charges").QueryTables.Add(Connection:= _
        "URL;http://AGRESSO/SI/projet.php?prj=" & Projet & Commande & "&jour=" & Jour _
        , Destination:=Range("AA100"))
With Extract
        .Name = "AGRESSO"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "2,3,4,5"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
End With

For i = 100 To 200
  If Range("AA" & i).Value = "Jours" Then
  ' Valorisation du tableaux des charges à partir du résultat de la requete
    Range("J" & ligne) = Range("AD" & i).Value 'temps passé agresso
    Range("K" & ligne) = Range("AE" & i).Value 'RAF agresso
    Range("O" & ligne) = Range("AG" & i).Value 'Derive %
    Range("P" & ligne) = Range("AD" & (i + 9)).Value 'marge brute
    Range("Q" & ligne) = Range("AD" & (i + 10)).Value 'marge brute %
    Range("R" & ligne) = Range("AF" & (i + 9)).Value 'marge brute finale
    Range("S" & ligne).Value = Val(Range("AF" & (i + 10)).Value) / 100 'marge brute finale %
  End If
  If Range("AA" & i) = "Ordre de Travail" Then
    ' Appel de la macro de mise à jour du tableau des factures
    Call MAJ_Factures(Commande, Jour, (i + 1))
    Exit For
  End If
Next i


' Effacement des résultats de la requete
Sheets("Charges").Activate
Range("AA100:AZ200").Delete

Range("C6").Select

'Reprotection de la feuille
Call Protege_Feuille(ThisWorkbook.ActiveSheet)

'Gestion des erreurs
GestErreurs:
    
    If (InStr(err.Description, "proxy") > 0) Then
      MsgBox "Vous n’êtes pas connecté au réseau, vous ne pouvez donc pas accéder à Agresso."
    ElseIf err.Number = 0 Then
      Exit Sub
    Else
      MsgBox "Erreur dans la macro de récupération des données Agresso" _
      & vbCrLf & "Erreur : " & err.Number & vbCrLf _
      & "Description : " & err.Description, vbCritical, "Erreur"
    End If
    Exit Sub
End Sub

[Code]
 

JNP

XLDnaute Barbatruc
Re : Excel 2007 : l'indice n'appartient pas à la sélection (fonctionne sous 2003)

Bonsoir Aclech :),
Essaie d'ajouter
Code:
...
'Reprotection de la feuille
Call Protege_Feuille(ThisWorkbook.ActiveSheet)
[B][COLOR=red]Exit Sub[/COLOR][/B]
'Gestion des erreurs
GestErreurs:
...
Car en principe, on saute la gestion d'erreur. Il est fort possible que 2003 considère que err existe, même s'il ne s'en est pas produit, alors que 2007 considère err comme une variable inexistante, tant qu'il n'y a pas d'erreur :rolleyes:.
A + :cool:
 

Discussions similaires

Réponses
2
Affichages
586

Statistiques des forums

Discussions
314 629
Messages
2 111 349
Membres
111 110
dernier inscrit
chergui