[Résolu] Erreur: l'indice n'appartient pas à la sélection

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous,

suite au changement de XP à Seven, j'ai l'erreur sus-mentionnée dans le code.
A la ligne: x.Offset(0, 3) = km(0) .

Code:
Sub Test()
For Each x In Sheets("Itinéraire").Range("B6:" & Sheets("Itinéraire").Range("B65536").End(xlUp).Address)
    Sheets("Feuil2").Cells.Clear
    Depart = x.Value
    Arrivee = x.Offset(0, 1).Value
    With Sheets("Feuil2").QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" & Depart & "&daddr=" & Arrivee, Destination:=Sheets("Feuil2").Range("A1"))
        .Name = "Itinéraire"
        .BackgroundQuery = True
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .Refresh BackgroundQuery:=False
    End With
    
    Set Result = Sheets("Feuil2").Cells.Find("Itinéraire en voiture")
    If Result Is Nothing Then
        x.Offset(0, 2) = "Itinéraire non trouvé !"
    Else
        x.Offset(0, 2) = Result.Offset(1, 0)
        km = Split(Result.Offset(1, 0), " km")
        x.Offset(0, 3) = km(0) 
    End If
Next
End Sub
Merci pour votre aide.

A+ :cool:
 

Fichiers joints

Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Erreur: l'indice n'appartient pas à la sélection

Salut Lone-wolf et le forum
suite au changement de XP à Seven, j'ai l'erreur sus-mentionnée dans le code.
A la ligne: x.Offset(0, 3) = km(0)
Quand je lis ça, je comprends que la macro fonctionnait avant, qu'on a changé d'OS et que ça ne fonctionne plus...
Ores quand je lis le code fautif, je vois qu'on utilises l'élément d'indice 0 du tableau km, dont je ne trouves nulle référence ou déclaration dans la macro donnée.
- C'est quoi ce tableau ? Il va de quel indice à quel indice ?
A+
 

job75

XLDnaute Barbatruc
Re : Erreur: l'indice n'appartient pas à la sélection

Bonjour,

km est un tableau défini par :

Code:
km = Split(Result.Offset(1, 0), " km")
km(0) n'existe pas si la cellule Result.Offset(1, 0) est vide.

A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Erreur: l'indice n'appartient pas à la sélection

Bonjour Gorfael,

comme tu peus le voir dans le code, il sagit de l'ittinéraire Google pour calculer la distance entre 2 villes. Dans la feuille 2 masquée, tout s'incrit, mais pas dans la feuille Itinéraire. Concernant les indices, aucune idée, désolé. C'est un code que j'ai trouvé sur le Forum, il y a longtemps.


A+ :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Erreur: l'indice n'appartient pas à la sélection

Re Gorfael, job75

En inscrivant la ligne en rouge, je n'ai plus d'erreur. Mais je n'obtient toujours pas de résultat sur la feuille Itinéraire.

x.Offset(0, 3) = km
End If
ActiveCell.Offset(0, 3).Select
Next

A+ :cool:
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Erreur: l'indice n'appartient pas à la sélection

Bonjour Gorfael, job

Le code était correct.

Suite à une recherche sur le Forum, j'ai vu d'où venait le problème.

Il fallait vider le dossier Internet-Temporary-Files de IE et j'ai supprimé le (0) de km(0).

Là c'est OK.

A+ :cool:
 

Bobbcolin

XLDnaute Nouveau
Re : Erreur: l'indice n'appartient pas à la sélection

Bonjour Gorfael,

C'est un code que j'ai trouvé sur le Forum, il y a longtemps.


A+ :cool:
Bonjour à tous !
Je suis nouveau sur le forum :)
Je début en VBa mais je me permet de penser que la solution proposée n'est pas solution au vrai problème.
Je m'explique :
Quand on ouvre le fichier de catrice "itinéraire2" ( je pense que c'est le code initial dont tu parles j'utilise le même) on remarque dans la feuille ou la page google map est copié il y a une différence de forme par rapport à celles du moment.
En effet catrice recherche la cellule contenant "itinéraire" quelquechose ( je ne me souviens pas exactement).
J'ia résolu le problème en recherchant la cellule contenant (1. 1.)
Je poste le code de catrice que j'ai modifié.
J'accepte volontier les remarques et conseil. :)
bonne journée à tous !



Sub ITIN()
Range("O6:p21").ClearContents
Range("l20").End(xlUp).Offset(1, 0).Value = Range("L6").Value

Set Fin = Sheets("Simulation").Cells.Find("Fin itinéraire")

For Each x In Sheets("Simulation").Range("L6:" & Fin.Offset(1, 0).Address)
If Not IsEmpty(x) Then

Sheets("Itin").Cells.Clear
Depart = x.Value
Arrivee = x.Offset(1, 0).Value
With Sheets("Itin").QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" & Depart & "&daddr=" & Arrivee, Destination:=Sheets("Itin").Range("A1"))
.Name = "itinéraire"
.BackgroundQuery = True
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With

Set result = Sheets("Itin").Cells.Find("1. 1.")
If result Is Nothing Then
Else

km = Split(result.Offset(3, 0), " km")
x.Offset(1, 3) = km(0)
x.Offset(1, 4) = result.Offset(1, 0)
End If
Else
End If
Next
End Sub




Les codes important concernant le code initial sont en rouges.
J'ai ajouté la dernière ligne car dans le nouveau format de google map les kms et le temps de trajet sont séparés.
 

Discussions similaires


Haut Bas