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
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]