VBA Définir une plage variable ( For each X in " la plage qui varie " )

Bobbcolin

XLDnaute Nouveau
Bonjour,
J'ai essayé de faire clair dans le titre mais bon, je manque de vocabulaire VBA.
Alors voilà, j'utilise un code pour calculer les distance routière entre plusieurs villes et j'utilise la fonctionnalité for each x in. Mon problème est que la plage que je définis est variable situé entre la cellule L6 et la cellule contenant "Fin trajet", cela marchait jusqu'à présent mais maintenant quoiqu'il se passe ( que j'ai entré 1 ou 15 villes ) la plage se limite à 4 cellules.
Voici le code :





Sub ITIN()
Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8"
Worksheets(3).Visible = True
Worksheets(1).Unprotect ("FB")
Worksheets(1).Activate
Range("O6:p21").ClearContents
Range("l21").End(xlUp).Offset(1, 0).Value = Range("L6").Value

Set Fin = Sheets("Simulation").Cells.Find("Fin Trajet")

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
Worksheets(1).Protect ("FB")
Worksheets(3).Visible = False
End Sub


J'ai mis en rouge les lignes concernant mon problème. VBA ne détecte aucune erreur ou bug dans le code mais il ne fonctionne pas comme je le voudrais. Pensez-vous que le problème vienne du code ou de ma feuille excel ?
 

Bobbcolin

XLDnaute Nouveau
Re : VBA Définir une plage variable ( For each X in " la plage qui varie " )

Merci de vos réponses ! je suis désolé je n'ai pas pu me reconnecter sur ce site depuis ... J'avais finis par trouver la solution à mon problème :
Je définissais ma plage comme cela :

Set Fin = Sheets("Simulation").Cells.Find("Fin Trajet")
Sheets("Simulation").Range("L7:" & Fin.Offset(-1, 0).Address).Select

Le problème était que dans mon tableur toutes les formules d'une colonne contenait "Fin trajet" même si ce texte n'était pas affiché dans la valeur de la cellule cela faussait ma formule.

J'ai donc ajouté ça :
Set Fin = Sheets("Simulation").Cells.Find(What:="Fin Trajet", LookIn:=xlValues)
Sheets("Simulation").Range("L7:" & Fin.Offset(-1, 0).Address).Select

Pour spécifié que la recherche s'effectuait exclusivement sur les valeurs de cellules.
Voila ! merci pour vos aides et désolé du retard.
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01