Bonjour,
Tu as dû remarquer que la fonction DECALER() possède entre autres un argument "hauteur" et un argument "largeur" et comme tu peux voir, ces deux arguments sont entourés de crochets [ et ] ceci signifie qu'ils sont facultatifs (pas obligé de les renseigner) c'est pour cette raison que dans le cas d'une liste verticale (comme en colonne A) l'argument "largeur" n'est pas renseigné puisque on ne souhaite pas faire un décalage sur les colonnes d'à coté mais pour ta liste en ligne 1, le décalage doit être sur les colonnes mais pas sur les lignes donc la formule que tu as pour ton Nom Code1 : =DECALER(Hoja1!$A$2;0;0;NBVAL(Hoja1!$A:$A))
qui pourrait être : =DECALER(Hoja1!$A$2;0;0;NBVAL(Hoja1!$A:$A);1)
doit devenir pour Code2 : =DECALER(Hoja1!$B$1;0;0;1;NBVAL(Hoja1!$1:$1)-1)
Mais ceci ne va malgré tout pas résoudre ton problème car la propriété RowSource du ComboBox attend une liste verticale donc, dans une colonne et pour l'utiliser si elle est en ligne il va falloir la transposer mais la fonction TRANSPOSE() ajoutée à la formule ne permet pas de l'avoir complète dans la ComboBox donc, il faut passer par VBA et dans ce cas, il faut utiliser la proriété "List" et non "RowSource" !
Dans le module du formulaire il te faut coller ces trois lignes de code :
Private Sub UserForm_Initialize()
ComboBox2.List = Application.Transpose(Range("Code2"))
End Sub
Et afin de ne pas entrer en "dur" dans les propriétés du 1er ComboBox, tu peux ajouter une ligne de code au 3 autres et le code devient :
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range("Code1").Address'ici, ça fonctionne bien puisqu'en colonne
ComboBox2.List = Application.Transpose(Range("Code2"))
End Sub