Bonjour tsydiMiboela, JFL, le fil
Sub AffecterSelonRang()
Dim tabBase() ' Tableau de la base d'enquête
Dim tabRang() ' Tableau pour trier la base selon le rang attribué
Dim cptBase, cptRang
' Lecture de la base d'enquête
tabBase = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8))
' Créer le tableau des rangs au même dimensions
ReDim tabRang(1 To UBound(tabBase, 1), 1 To UBound(tabBase, 2))
' Pour chaque ligne de a base /*1
For cptBase = 2 To UBound(tabBase, 1)
' Pour chaque colonne (donc chaque question de l'enquête)
For cptRang = 1 To UBound(tabBase, 2)
' Si la question est renseignée
If Not (tabBase(cptBase, cptRang) = "") Then
' Affecter le le libellé du rang marqué "tabBase(1, cptRang)"
' dans le tableau des rang à la position du rang
' C'est "tabBase(cptBase, cptRang)" qui contient cette valeur
' PS/ J'ai utilisé Val(..) parcce que dans ton fichier les rangs sont indiqués avec un apostrophe (format texte)
tabRang(cptBase, Val(tabBase(cptBase, cptRang))) = tabBase(1, cptRang)
End If
Next
Next
' Il suffit ensuite de copier le tableau des rang
Cells(2, 10).Resize(UBound(tabRang, 1), UBound(tabRang, 2)) = tabRang
End Sub
' *1 La boucle commence à la 2ème ligne de la base, pour sauter les libellés
Voici une proposition avec VBA !