Bonjour à toutes et à tous,
Étant plus que débutant en VBA, j'ai passé un certain nombre d'heures à chercher une solution à mon problème, sans succès. C'est pourquoi je me permet de poster ici, à la recherche d'une solution ou d'un début de solution.
Je vous invite à ouvrir le fichier joint, cela sera plus simple de comprendre ce qui suit :
Lorsqu'un "2" est trouvé dans la colonne "D", il faut que la valeur surlignée en rouge (simplement à titre d'information, ce n'est pas comme ça dans le fichier réel) soit reportée dans la colonne "A" sur la même ligne que le "2".
Par exemple :
400001 006557 1 1
400001 001466 920 2
400001 215001 0.06 2
400001 215001 0.05 2
devient :
400001 006557 1 1
006557 001466 920 2
006557 215001 0.06 2
006557 215001 0.05 2
Voici le code que j'ai trouvé sur un forum d'entr'aide, et que j'ai adapté à mon cas, mais je ne parviens pas à faire exactement ce que je veux :
Sub sc()
Dim cellule As Range, v As Integer
For Each cellule In Range("D1:D51")
Select Case cellule.Value
Case "2"
cellule.Offset(0, -3) = cellule.Offset(-1, -2)
End Select
Next cellule
End Sub
Dans ce code, j'ai indiqué les coordonnées relatives de la valeur à reporter
cellule.Offset(-1, -2)
donc cela fonctionne mais ... que pour la première ligne où il trouve "2".
Comment puis-je arriver à dire en VBA :
dès que tu trouves un "2" dans la colonne "D", tu récupères seulement la valeur situé en Offset(-1, -2) par rapport à la première cellule qui comporte un "2", puis tu la reportes dans la colonne "A" jusqu'à ce qu'il y ai un "1" dans la colonne "D". Puis tu répètes l'opération sur l'ensemble de la feuille.
Désolé pour la "longueur" du post, j'ai tenté d'être clair, je reste bien sur à disposition pour toutes questions.
Merci à vous et bonne fin d'après-midi,
Alex911