Une boucle dans une boucle ?

Bonjour,

Rien qu'à la rédaction du titre je me suis trouvé embêté car je ne suis pas sur qu'il s'agisse bien de cette problématique. Je débute en codage et j'ai parcouru un certain nombre de post pouvant relater de la question qui me préoccupe sans trouver de réponse car bien souvent les sujets évoque des problématiques bien plus complexe que ce que je recherche.

Voici mon code pour le moment, et je souhaiterai que cette boucle soit elle même répétée pour des valeurs de 1 à 300 (à la place du 1 surligné) mais je n'y parviens pas.

Pour information il s'agit en finalité de récupérer les données relatives à des coureurs en ordre d'arrivée après une course. L'ordre d'arrivée est automatisé (ils sont scannés et leur numéro de dossard est renvoyé dans le fichier Excel). cette partie du code me permet effectivement de récupérer toutes les données dans la ligne propres à chaque coureur dans le tableau d'origine et de les retourner dans le tableau d'arrivée mais il faudrait que je le reproduise autant de fois qu'il y a de coureur et que je change le n°de ligne (bleu) pour chacun et je suis certain qu'il doit être possible de contourner cette difficulté.

Sub classement()

dim i As integer

For i = 2 To 300

If Cells(i, 2).Value = 1 Then

Cells(i, 4).Value = Sheets("1").Cells(2, 2).Value
Cells(i, 5).Value = Sheets("1").Cells(2, 3).Value
Cells(i, 6).Value = Sheets("1").Cells(2, 4).Value
Cells(i, 7).Value = Sheets("1").Cells(2, 5).Value
Cells(i, 8).Value = Sheets("1").Cells(2, 6).Value
Cells(i, 9).Value = Sheets("1").Cells(2, 7).Value

End If
Next

End Sub

D'avance je vous remercie de vos retours et me tiens à votre disposition pour discuter et progresser.

Bon début de semaine.

bonjour,

peux-tu mettre un fichier exemple ?

comment faire le lien entre la feuille classement et la feuille "1" ? un numéro de participant ? si oui dans quelle colonne sur la feuille classement et dans quelle colonne sur la feuille "1" ?

Bonjour,

Oui bien sur voici le fichier.

en feuille 1 la liste des participants avec leurs données associées (âge, équipe, N° de dossard etc)

en feuil 2 le tableau dans lequel ces informations doivent être retournées par ordre d'arrivée.

grosso modo si dossard 27 arrive en 1er, ce numéro sera inscrit dans la première cellule en face de "rang 1"et je souhaite que toutes les données associées à ce dossard apparaissent.

Merci de vos retours.

bien cordialement

jb

Bonjour,

une proposition d'adptation de ton code VBA, même si ce n'est pas nécessaire (il existe des solutions via formules excel, ex: recherchev, index/equiv,)

Merci beaucoup pour ce retour,

effectivement j'ai eu les yeux plus gros que le ventre je m'attendais à plus simple. Mais c'est très bien je vais pouvoir enrichir mon panel. Une dernière question, du coup s'agit-il effectivement d'une boucle dans une boucle ou est-ce une autre nomenclature ?

Encore merci de ce retour efficace.

bonsoir

je m'attendais à plus simple

je t'ai mis une solution plus simple sans vba dans l'onglet "avec formules". Regarde les formules dans les colonnes D à I

Une dernière question, du coup s'agit-il effectivement d'une boucle dans une boucle (...) ?

oui mais implicite, elle est cachée dans la méthode Find de l'objet range.

Si tu tiens absolument à tes boucles imbriquées, voici comment on peut faire :

Sub classement()
    dl = Sheets("1").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To 300
        dossard = Cells(i, 2) 'dossard classement
        If dossard <> "" Then
            For k = 2 To dl 'on parcourt les lignes de la BDD
                If Sheets("1").Cells(k, 1) = dossard Then 'dossard BDD = dossard classement
                    Cells(i, 4).Value = Sheets("1").Cells(k, 2).Value
                    Cells(i, 5).Value = Sheets("1").Cells(k, 3).Value
                    Cells(i, 6).Value = Sheets("1").Cells(k, 4).Value
                    Cells(i, 7).Value = Sheets("1").Cells(k, 5).Value
                    Cells(i, 8).Value = Sheets("1").Cells(k, 6).Value
                    Cells(i, 9).Value = Sheets("1").Cells(k, 7).Value
                    Exit For
                End If
            Next k
        End If
    Next
End Sub
Rechercher des sujets similaires à "boucle"