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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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😛21").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 ?
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
599
Retour